如何在Ubuntu16.04上设置OpenVPN服务器
介绍
想要在连接到不受信任的网络(例如酒店或咖啡店的 WiFi)时从您的智能手机或笔记本电脑安全地访问 Internet? 虚拟专用网络 (VPN) 允许您像在专用网络上一样私密且安全地穿越不受信任的网络。 流量从 VPN 服务器出现并继续前往目的地。
当与 HTTPS 连接 结合使用时,此设置可让您保护您的无线登录和交易。 您可以规避地理限制和审查制度,并将您的位置和任何未加密的 HTTP 流量从不受信任的网络中屏蔽。
OpenVPN 是一个功能齐全的开源安全套接层 (SSL) VPN 解决方案,可适应各种配置。 在本教程中,我们将在 Droplet 上设置 OpenVPN 服务器,然后配置从 Windows、OS X、iOS 和 Android 对其的访问。 本教程将使这些设置的安装和配置步骤尽可能简单。
注意: 如果您计划在 DigitalOcean Droplet 上设置 OpenVPN 服务器,请注意,我们与许多托管服务提供商一样,会对带宽超额收费。 因此,请注意您的服务器正在处理多少流量。
有关详细信息,请参阅 本页。
先决条件
要完成本教程,您需要访问 Ubuntu 16.04 服务器。
在开始本指南之前,您需要配置具有 sudo
权限的非 root 用户。 您可以按照我们的 Ubuntu 16.04 初始服务器设置指南 设置具有适当权限的用户。 链接的教程还将设置一个 防火墙 ,我们将假设在本指南中已经到位。
当您准备好开始时,以您的 sudo
用户身份登录到您的 Ubuntu 服务器并继续下面的操作。
第 1 步:安装 OpenVPN
首先,我们将在我们的服务器上安装 OpenVPN。 OpenVPN 在 Ubuntu 的默认存储库中可用,因此我们可以使用 apt
进行安装。 我们还将安装 easy-rsa
软件包,这将帮助我们设置内部 CA(证书颁发机构)以用于我们的 VPN。
要更新服务器的包索引并安装必要的包类型:
sudo apt-get update sudo apt-get install openvpn easy-rsa
所需的软件现在在服务器上,可以进行配置了。
步骤 2:设置 CA 目录
OpenVPN 是一个 TLS/SSL VPN。 这意味着它使用证书来加密服务器和客户端之间的流量。 为了颁发受信任的证书,我们需要建立自己的简单证书颁发机构 (CA)。
首先,我们可以使用 make-cadir
命令将 easy-rsa
模板目录复制到我们的主目录中:
make-cadir ~/openvpn-ca
进入新创建的目录以开始配置 CA:
cd ~/openvpn-ca
步骤 3:配置 CA 变量
要配置我们的 CA 将使用的值,我们需要编辑目录中的 vars
文件。 现在在您的文本编辑器中打开该文件:
nano vars
在里面,您会发现一些可以调整的变量,以确定如何创建您的证书。 我们只需要担心其中的几个。
在文件的底部,找到为新证书设置字段默认值的设置。 它应该看起来像这样:
~/openvpn-ca/vars
. . . export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" export KEY_OU="MyOrganizationalUnit" . . .
将红色值编辑为您喜欢的任何值,但不要将它们留空:
~/openvpn-ca/vars
. . . export KEY_COUNTRY="US" export KEY_PROVINCE="NY" export KEY_CITY="New York City" export KEY_ORG="DigitalOcean" export KEY_EMAIL="admin@example.com" export KEY_OU="Community" . . .
当我们在这里时,我们还将编辑该部分正下方的 KEY_NAME
值,该值填充主题字段。 为了简单起见,我们在本指南中将其称为 server
:
~/openvpn-ca/vars
export KEY_NAME="server"
完成后,保存并关闭文件。
第 4 步:建立证书颁发机构
现在,我们可以使用我们设置的变量和 easy-rsa
实用程序来构建我们的证书颁发机构。
确保您位于 CA 目录中,然后获取刚刚编辑的 vars
文件:
cd ~/openvpn-ca source vars
如果来源正确,您应该看到以下内容:
OutputNOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys
通过键入以下内容确保我们在干净的环境中运行:
./clean-all
现在,我们可以通过键入以下内容来构建我们的根 CA:
./build-ca
这将启动创建根证书颁发机构密钥和证书的过程。 由于我们填写了 vars
文件,所有的值都应该自动填充。 只需在提示中按 ENTER 即可确认选择:
OutputGenerating a 2048 bit RSA private key ..........................................................................................+++ ...............................+++ writing new private key to 'ca.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [US]: State or Province Name (full name) [NY]: Locality Name (eg, city) [New York City]: Organization Name (eg, company) [DigitalOcean]: Organizational Unit Name (eg, section) [Community]: Common Name (eg, your name or your server's hostname) [DigitalOcean CA]: Name [server]: Email Address [admin@email.com]:
我们现在有了一个 CA,可以用来创建我们需要的其余文件。
步骤 5:创建服务器证书、密钥和加密文件
接下来,我们将生成我们的服务器证书和密钥对,以及在加密过程中使用的一些附加文件。
首先生成 OpenVPN 服务器证书和密钥对。 我们可以通过键入:
注意:如果这里选择了server
以外的名称,你将不得不调整下面的一些指令。 例如,将生成的文件复制到 /etc/openvpn
目录时,您必须替换正确的名称。 您还必须稍后修改 /etc/openvpn/server.conf
文件以指向正确的 .crt
和 .key
文件。
./build-key-server server
再一次,提示将根据我们刚刚传入的参数 (server
) 和我们获取的 vars
文件的内容具有默认值。
随意按 ENTER 接受默认值。 请勿 不 输入此设置的质询密码。 最后,您必须在两个问题中输入 y 才能签署并提交证书:
Output. . . Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days) Sign the certificate? [y/n]:y 1 out of 1 certificate requests certified, commit? [y/n]y Write out database with 1 new entries Data Base Updated
接下来,我们将生成一些其他项目。 我们可以通过键入以下内容来生成在密钥交换期间使用的强 Diffie-Hellman 密钥:
./build-dh
这可能需要几分钟才能完成。
之后,我们可以生成一个 HMAC 签名来加强服务器的 TLS 完整性验证能力:
openvpn --genkey --secret keys/ta.key
第 6 步:生成客户端证书和密钥对
接下来,我们可以生成客户端证书和密钥对。 尽管这可以在客户端计算机上完成,然后由服务器/CA 出于安全目的进行签名,但在本指南中,为了简单起见,我们将在服务器上生成签名密钥。
我们将为本指南生成一个客户端密钥/证书,但如果您有多个客户端,您可以根据需要多次重复此过程。 将唯一值传递给每个客户端的脚本。
因为您稍后可能会回到这一步,我们将重新获取 vars
文件。 我们将使用 client1
作为本指南的第一个证书/密钥对的值。
要生成没有密码的凭据,以帮助自动连接,请使用 build-key
命令,如下所示:
cd ~/openvpn-ca source vars ./build-key client1
相反,如果您希望创建一组受密码保护的凭据,请使用 build-key-pass
命令:
cd ~/openvpn-ca source vars ./build-key-pass client1
同样,应填充默认值,因此您只需点击 ENTER 即可继续。 将质询密码留空,并确保在询问是否签署和提交证书的提示中输入 y。
第 7 步:配置 OpenVPN 服务
接下来,我们可以使用我们生成的凭据和文件开始配置 OpenVPN 服务。
将文件复制到 OpenVPN 目录
首先,我们需要将我们需要的文件复制到 /etc/openvpn
配置目录。
我们可以从刚刚生成的所有文件开始。 它们在创建时被放置在 ~/openvpn-ca/keys
目录中。 我们需要移动 CA 证书、服务器证书和密钥、HMAC 签名和 Diffie-Hellman 文件:
cd ~/openvpn-ca/keys sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn
接下来,我们需要将示例 OpenVPN 配置文件复制并解压缩到配置目录中,以便我们可以将其用作设置的基础:
gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf
调整 OpenVPN 配置
现在我们的文件已经到位,我们可以修改服务器配置文件:
sudo nano /etc/openvpn/server.conf
基本配置
首先,通过查找 tls-auth
指令找到 HMAC 部分。 删除“;”以取消注释 tls-auth
行:
/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret
接下来,通过查找注释掉的 cipher
行来找到关于密码学的部分。 AES-128-CBC
密码提供了良好的加密级别并且得到了很好的支持。 删除“;”以取消注释 cipher AES-128-CBC
行:
/etc/openvpn/server.conf
cipher AES-128-CBC
在此下方,添加 auth
行以选择 HMAC 消息摘要算法。 为此,SHA256
是一个不错的选择:
/etc/openvpn/server.conf
auth SHA256
最后,找到 user
和 group
设置并删除开头的“;”以取消注释这些行:
/etc/openvpn/server.conf
user nobody group nogroup
(可选)推送 DNS 更改以通过 VPN 重定向所有流量
上述设置将在两台机器之间创建 VPN 连接,但不会强制任何连接使用隧道。 如果您希望使用 VPN 路由所有流量,您可能希望将 DNS 设置推送到客户端计算机。
您可以这样做,取消注释一些将配置客户端计算机以通过 VPN 重定向所有 Web 流量的指令。 找到 redirect-gateway
部分并从 redirect-gateway
行的开头删除分号“;”以取消注释:
/etc/openvpn/server.conf
push "redirect-gateway def1 bypass-dhcp"
在此下方,找到 dhcp-option
部分。 再次,从两行前面删除“;”以取消注释:
/etc/openvpn/server.conf
push "dhcp-option DNS 208.67.222.222" push "dhcp-option DNS 208.67.220.220"
这应该有助于客户端重新配置其 DNS 设置以使用 VPN 隧道作为默认网关。
(可选)调整端口和协议
默认情况下,OpenVPN 服务器使用端口 1194 和 UDP 协议来接受客户端连接。 如果由于客户端可能处于限制性网络环境而需要使用不同的端口,您可以更改 port
选项。 如果您的 OpenVPN 服务器没有托管 Web 内容,则端口 443 是一个流行的选择,因为这通常是通过防火墙规则允许的。
/etc/openvpn/server.conf
# Optional! port 443
通常,如果协议也将限制在该端口上。 如果是这样,请将 proto
从 UDP 更改为 TCP:
/etc/openvpn/server.conf
# Optional! proto tcp
如果您不需要使用不同的端口,最好将这两个设置保留为默认值。
(可选)指向非默认凭证
如果您之前在 ./build-key-server
命令期间选择了不同的名称,请修改您看到的 cert
和 key
行以指向适当的 .crt
和 [X167X ] 文件。 如果您使用默认的 server
,则应该已经正确设置:
/etc/openvpn/server.conf
cert server.crt key server.key
完成后,保存并关闭文件。
步骤 8:调整服务器网络配置
接下来,我们需要调整服务器网络的某些方面,以便 OpenVPN 能够正确路由流量。
允许 IP 转发
首先,我们需要允许服务器转发流量。 这对于我们希望 VPN 服务器提供的功能来说是相当重要的。
我们可以通过修改/etc/sysctl.conf
文件来调整这个设置:
sudo nano /etc/sysctl.conf
在里面,寻找设置 net.ipv4.ip_forward
的行。 从行首删除“#”字符以取消注释该设置:
/etc/sysctl.conf
net.ipv4.ip_forward=1
完成后保存并关闭文件。
要读取文件并调整当前会话的值,请键入:
sudo sysctl -p
调整 UFW 规则以伪装客户端连接
如果您按照先决条件中的 Ubuntu 16.04 初始服务器设置指南进行操作,则应该安装 UFW 防火墙。 无论您是否使用防火墙来阻止不需要的流量(您几乎总是应该这样做),我们都需要本指南中的防火墙来操纵一些进入服务器的流量。 我们需要修改规则文件来设置伪装,这是一个 iptables
概念,它提供动态动态 NAT 以正确路由客户端连接。
在我们打开防火墙配置文件添加伪装之前,我们需要找到我们机器的公网接口。 为此,请键入:
ip route | grep default
您的公共界面应遵循“开发”一词。 例如,这个结果显示了名为 wlp11s0
的接口,它在下面突出显示:
Outputdefault via 203.0.113.1 dev wlp11s0 proto static metric 600
有了默认路由关联的接口后,打开/etc/ufw/before.rules
文件添加相关配置:
sudo nano /etc/ufw/before.rules
此文件处理应在加载常规 UFW 规则之前就位的配置。 在文件的顶部,添加下面突出显示的行。 这将为 nat
表中的 POSTROUTING
链设置默认策略,并伪装来自 VPN 的任何流量:
注意:记得把下面-A POSTROUTING
行中的wlp11s0
替换成上面命令中找到的接口。
/etc/ufw/before.rules
# # rules.before # # Rules that should be run before the ufw command line added rules. Custom # rules should be added to one of these chains: # ufw-before-input # ufw-before-output # ufw-before-forward # # START OPENVPN RULES # NAT table rules *nat :POSTROUTING ACCEPT [0:0] # Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!) -A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE COMMIT # END OPENVPN RULES # Don't delete these required lines, otherwise there will be errors *filter . . .
完成后保存并关闭文件。
我们还需要告诉 UFW 默认情况下允许转发数据包。 为此,我们将打开 /etc/default/ufw
文件:
sudo nano /etc/default/ufw
在里面,找到 DEFAULT_FORWARD_POLICY
指令。 我们将值从 DROP
更改为 ACCEPT
:
/etc/default/ufw
DEFAULT_FORWARD_POLICY="ACCEPT"
完成后保存并关闭文件。
打开 OpenVPN 端口并启用更改
接下来,我们将调整防火墙本身以允许流量到 OpenVPN。
如果您没有更改 /etc/openvpn/server.conf
文件中的端口和协议,则需要打开 UDP 流量到端口 1194。 如果您修改了端口和/或协议,请替换您在此处选择的值。
我们还将添加 SSH 端口,以防您在遵循先决条件教程时忘记添加它:
sudo ufw allow 1194/udp sudo ufw allow OpenSSH
现在,我们可以禁用和重新启用 UFW 以从我们修改的所有文件中加载更改:
sudo ufw disable sudo ufw enable
我们的服务器现在配置为正确处理 OpenVPN 流量。
第 9 步:启动并启用 OpenVPN 服务
我们终于准备好在我们的服务器上启动 OpenVPN 服务了。 我们可以使用 systemd 来做到这一点。
我们需要通过将我们的配置文件名指定为 systemd 单元文件名之后的实例变量来启动 OpenVPN 服务器。 我们服务器的配置文件叫做/etc/openvpn/server.conf
,所以我们在调用它的时候将@server
添加到我们的单元文件的末尾:
sudo systemctl start openvpn@server
通过键入以下内容仔细检查服务是否已成功启动:
sudo systemctl status openvpn@server
如果一切顺利,您的输出应该如下所示:
Output● openvpn@server.service - OpenVPN connection to server Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled) Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago Docs: man:openvpn(8) https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage https://community.openvpn.net/openvpn/wiki/HOWTO Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta Main PID: 5856 (openvpn) Tasks: 1 (limit: 512) CGroup: /system.slice/system-openvpn.slice/openvpn@server.service └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2 May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef] May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef] May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256 May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0 May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed
您还可以通过键入以下命令检查 OpenVPN tun0
界面是否可用:
ip addr show tun0
您应该看到一个配置的界面:
Output4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100 link/none inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0 valid_lft forever preferred_lft forever
如果一切顺利,请启用该服务,使其在启动时自动启动:
sudo systemctl enable openvpn@server
第 10 步:创建客户端配置基础架构
接下来,我们需要设置一个允许我们轻松创建客户端配置文件的系统。
创建客户端配置目录结构
在你的主目录中创建一个目录结构来存储文件:
mkdir -p ~/client-configs/files
由于我们的客户端配置文件将嵌入客户端密钥,因此我们应该锁定内部目录的权限:
chmod 700 ~/client-configs/files
创建基本配置
接下来,让我们将示例客户端配置复制到我们的目录中以用作我们的基本配置:
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
在文本编辑器中打开这个新文件:
nano ~/client-configs/base.conf
在里面,我们需要做一些调整。
首先,找到 remote
指令。 这会将客户端指向我们的 OpenVPN 服务器地址。 这应该是您的 OpenVPN 服务器的公共 IP 地址。 如果您更改了 OpenVPN 服务器正在侦听的端口,请将 1194
更改为您选择的端口:
~/client-configs/base.conf
. . . # The hostname/IP and port of the server. # You can have multiple remote entries # to load balance between the servers. remote server_IP_address 1194 . . .
确保协议与您在服务器配置中使用的值匹配:
~/client-configs/base.conf
proto udp
接下来,通过删除“;”取消注释 user
和 group
指令:
~/client-configs/base.conf
# Downgrade privileges after initialization (non-Windows only) user nobody group nogroup
查找设置 ca
、cert
和 key
的指令。 注释掉这些指令,因为我们将在文件本身中添加证书和密钥:
~/client-configs/base.conf
# SSL/TLS parms. # See the server config file for more # description. It's best to use # a separate .crt/.key file pair # for each client. A single ca # file can be used for all clients. #ca ca.crt #cert client.crt #key client.key
镜像我们在 /etc/openvpn/server.conf
文件中设置的 cipher
和 auth
设置:
~/client-configs/base.conf
cipher AES-128-CBC auth SHA256
接下来,在文件的某处添加 key-direction
指令。 此 必须 设置为“1”才能与服务器一起使用:
~/client-configs/base.conf
key-direction 1
最后,添加几行 被注释掉的 行。 我们希望在每个配置中包含这些,但应该只为附带 /etc/openvpn/update-resolv-conf
文件的 Linux 客户端启用它们。 此脚本使用 resolvconf
实用程序更新 Linux 客户端的 DNS 信息。
~/client-configs/base.conf
# script-security 2 # up /etc/openvpn/update-resolv-conf # down /etc/openvpn/update-resolv-conf
如果您的客户端正在运行 Linux 并且有一个 /etc/openvpn/update-resolv-conf
文件,您应该从生成的 OpenVPN 客户端配置文件中取消注释这些行。
完成后保存文件。
创建配置生成脚本
接下来,我们将创建一个简单的脚本来使用相关的证书、密钥和加密文件来编译我们的基本配置。 这会将生成的配置放在 ~/client-configs/files
目录中。
在 ~/client-configs
目录中创建并打开一个名为 make_config.sh
的文件:
nano ~/client-configs/make_config.sh
在里面,粘贴以下脚本:
~/client-configs/make_config.sh
#!/bin/bash # First argument: Client identifier KEY_DIR=~/openvpn-ca/keys OUTPUT_DIR=~/client-configs/files BASE_CONFIG=~/client-configs/base.conf cat ${BASE_CONFIG} \ <(echo -e '<ca>') \ ${KEY_DIR}/ca.crt \ <(echo -e '</ca>\n<cert>') \ ${KEY_DIR}/${1}.crt \ <(echo -e '</cert>\n<key>') \ ${KEY_DIR}/${1}.key \ <(echo -e '</key>\n<tls-auth>') \ ${KEY_DIR}/ta.key \ <(echo -e '</tls-auth>') \ > ${OUTPUT_DIR}/${1}.ovpn
完成后保存并关闭文件。
通过键入以下内容将文件标记为可执行文件:
chmod 700 ~/client-configs/make_config.sh
第 11 步:生成客户端配置
现在,我们可以轻松生成客户端配置文件。
如果您按照指南进行操作,则您通过在步骤 6 中运行 ./build-key client1
命令分别创建了名为 client1.crt
和 client1.key
的客户端证书和密钥。 我们可以通过移动到我们的 ~/client-configs
目录并使用我们制作的脚本来为这些凭据生成配置:
cd ~/client-configs ./make_config.sh client1
如果一切顺利,我们的 ~/client-configs/files
目录中应该有一个 client1.ovpn
文件:
ls ~/client-configs/files
Outputclient1.ovpn
将配置传输到客户端设备
我们需要将客户端配置文件传输到相关设备。 例如,这可能是您的本地计算机或移动设备。
虽然用于完成此传输的确切应用程序将取决于您的选择和设备的操作系统,但您希望应用程序在后端使用 SFTP(SSH 文件传输协议)或 SCP(安全复制)。 这将通过加密连接传输您客户端的 VPN 身份验证文件。
这是使用我们的 client1.ovpn 示例的示例 SFTP 命令。 此命令可以从您的本地计算机(OS X 或 Linux)运行。 它将 .ovpn
文件放在您的主目录中:
sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/
以下是一些用于将文件从服务器安全传输到本地计算机的工具和教程:
第 12 步:安装客户端配置
现在,我们将讨论如何在 Windows、OS X、iOS 和 Android 上安装客户端 VPN 配置文件。 这些客户说明均不相互依赖,因此请随意跳至适用于您的说明。
无论您命名 .ovpn
文件,OpenVPN 连接都会被调用。 在我们的示例中,这意味着我们生成的第一个客户端文件的连接将被称为 client1.ovpn
。
视窗
安装
适用于 Windows 的 OpenVPN 客户端应用程序可以在 OpenVPN 的下载页面 上找到。 为您的 Windows 版本选择适当的安装程序版本。
笔记
OpenVPN 需要管理员权限才能安装。
安装 OpenVPN 后,将 .ovpn
文件复制到:
C:\Program Files\OpenVPN\config
当您启动 OpenVPN 时,它会自动查看配置文件并使其可用。
每次使用 OpenVPN 时都必须以管理员身份运行,即使是管理帐户也是如此。 要做到这一点,而不必在每次使用 VPN 时右键单击并选择 以管理员身份运行 ,您可以预设此设置,但这必须通过管理帐户完成。 这也意味着标准用户需要输入管理员密码才能使用 OpenVPN。 另一方面,标准用户无法正确连接到服务器,除非客户端上的 OpenVPN 应用程序具有管理员权限,因此需要提升权限。
要将 OpenVPN 应用程序设置为始终以管理员身份运行,请右键单击其快捷方式图标并转到 属性 。 在兼容性选项卡底部,单击按钮以更改所有用户的设置。 在新窗口中,勾选以管理员身份运行此程序。
连接
每次启动 OpenVPN GUI 时,Windows 都会询问您是否要允许该程序对您的计算机进行更改。 单击是。 启动 OpenVPN 客户端应用程序只会将小程序放在系统托盘中,以便可以根据需要连接和断开 VPN; 它实际上并没有建立 VPN 连接。
一旦 OpenVPN 启动,通过进入系统托盘小程序并右键单击 OpenVPN 小程序图标来启动连接。 这将打开上下文菜单。 选择菜单顶部的 client1(这是我们的 client1.ovpn
配置文件),然后选择 Connect。
建立连接时将打开一个状态窗口,显示日志输出,并在客户端连接后显示一条消息。
以同样的方式断开 VPN:进入系统托盘小程序,右键单击 OpenVPN 小程序图标,选择客户端配置文件,然后单击 Disconnect。
操作系统
安装
Tunnelblick 是适用于 Mac OS X 的免费开源 OpenVPN 客户端。 您可以从 Tunnelblick 下载页面 下载最新的磁盘映像。 双击下载的【X28X】【X32X】文件,按照提示进行安装。
在安装过程即将结束时,Tunnelblick 会询问您是否有任何配置文件。 回答 No 并让 Tunnelblick 完成会更容易。 打开 Finder 窗口并双击 client1.ovpn
。 Tunnelblick 将安装客户端配置文件。 需要管理权限。
连接
双击 Applications 文件夹中的 Tunnelblick 启动 Tunnelblick。 Tunnelblick 启动后,屏幕右上角的菜单栏中将出现一个 Tunnelblick 图标,用于控制连接。 单击图标,然后单击 Connect 菜单项以启动 VPN 连接。 选择 client1 连接。
Linux
安装
如果您使用的是 Linux,则可以使用多种工具,具体取决于您的发行版。 您的桌面环境或窗口管理器可能还包括连接实用程序。
然而,最通用的连接方式是使用 OpenVPN 软件。
在 Ubuntu 或 Debian 上,您可以像在服务器上一样安装它,方法是键入:
sudo apt-get update sudo apt-get install openvpn
在 CentOS 上,您可以启用 EPEL 存储库,然后输入以下命令进行安装:
sudo yum install epel-release sudo yum install openvpn
配置
检查您的发行版是否包含 /etc/openvpn/update-resolv-conf
脚本:
ls /etc/openvpn
Outputupdate-resolve-conf
接下来,编辑您传输的 OpenVPN 客户端配置文件:
nano client1.ovpn
如果您能够找到 update-resolv-conf
文件,请取消注释我们用于调整 DNS 设置的三行:
client1.ovpn
script-security 2 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf
如果您使用的是 CentOS,请将 group
从 nogroup
更改为 nobody
以匹配发行版的可用组:
client1.ovpn
group nobody
保存并关闭文件。
现在,您只需将 openvpn
命令指向客户端配置文件即可连接到 VPN:
sudo openvpn --config client1.ovpn
这应该将您连接到您的服务器。
iOS
安装
在 iTunes App Store 中,搜索并安装 OpenVPN Connect,官方 iOS OpenVPN 客户端应用程序。 要将您的 iOS 客户端配置传输到设备上,请将其直接连接到计算机。
此处将概述使用 iTunes 完成传输。 在电脑上打开 iTunes 并点击 iPhone > apps。 向下滚动到底部的 文件共享 部分,然后单击 OpenVPN 应用程序。 右侧的空白窗口 OpenVPN Documents 用于共享文件。 将 .ovpn
文件拖到 OpenVPN 文档窗口。
现在在 iPhone 上启动 OpenVPN 应用程序。 将会有一个新的配置文件已准备好导入的通知。 点击绿色加号将其导入。
连接
OpenVPN 现在可以与新配置文件一起使用。 通过将 Connect 按钮滑动到 On 位置来开始连接。 通过将相同的按钮滑动到 Off 来断开连接。
笔记
设置下的VPN开关不能用于连接VPN。 如果您尝试,您将收到仅使用 OpenVPN 应用程序连接的通知。
安卓
安装
打开 Google Play 商店。 搜索并安装 Android OpenVPN Connect,官方的 Android OpenVPN 客户端应用程序。
.ovpn
配置文件可以通过 USB 将 Android 设备连接到您的计算机并复制文件来传输。 或者,如果您有 SD 卡读卡器,您可以移除设备的 SD 卡,将配置文件复制到其中,然后将卡重新插入 Android 设备。
启动 OpenVPN 应用程序并点击菜单以导入配置文件。
然后导航到保存配置文件的位置(屏幕截图使用 /sdcard/Download/
)并选择文件。 该应用程序将记录配置文件已导入。
连接
要连接,只需点击 Connect 按钮。 系统会询问您是否信任 OpenVPN 应用程序。 选择 OK 启动连接。 要断开与 VPN 的连接,请返回 OpenVPN 应用并选择 Disconnect。
第 13 步:测试您的 VPN 连接
安装完所有内容后,只需进行简单检查即可确认一切正常。 在未启用 VPN 连接的情况下,打开浏览器并转到 DNSLeakTest。
该站点将返回由您的互联网服务提供商分配的 IP 地址,并且与您在世界其他地方看到的一样。 要通过同一网站检查您的 DNS 设置,请单击 Extended Test,它会告诉您您正在使用哪些 DNS 服务器。
现在将 OpenVPN 客户端连接到 Droplet 的 VPN 并刷新浏览器。 现在应该会出现您的 VPN 服务器的完全不同的 IP 地址。 这就是你现在出现在世界上的样子。 同样,DNSLeakTest's Extended Test 将检查您的 DNS 设置并确认您现在正在使用您的 VPN 推送的 DNS 解析器。
第 14 步:撤销客户端证书
有时,您可能需要撤销客户端证书以防止进一步访问 OpenVPN 服务器。
为此,请输入您的 CA 目录并重新获取 vars
文件:
cd ~/openvpn-ca source vars
接下来,使用您希望撤销的客户端名称调用 revoke-full
命令:
./revoke-full client3
这将显示一些输出,以 error 23
结尾。 这是正常的,进程应该已经成功生成了必要的撤销信息,该信息存储在 keys
子目录中名为 crl.pem
的文件中。
将此文件传输到 /etc/openvpn
配置目录:
sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn
接下来,打开 OpenVPN 服务器配置文件:
sudo nano /etc/openvpn/server.conf
在文件的底部,添加 crl-verify
选项,以便 OpenVPN 服务器在每次尝试连接时检查我们创建的证书吊销列表:
/etc/openvpn/server.conf
crl-verify crl.pem
保存并关闭文件。
最后重启OpenVPN实现证书撤销:
sudo systemctl restart openvpn@server
客户端现在应该能够使用旧凭据成功连接到服务器。
要撤销其他客户端,请按照以下流程操作:
- 通过获取
~/openvpn-ca
目录中的vars
文件,然后在客户端名称上调用revoke-full
脚本,生成新的证书吊销列表。 - 将新的证书吊销列表复制到
/etc/openvpn
目录以覆盖旧列表。 - 重新启动 OpenVPN 服务。
此过程可用于撤销您之前为服务器颁发的任何证书。
结论
恭喜! 您现在可以安全地穿越互联网,保护您的身份、位置和流量免受窥探者和审查者的侵害。
要配置更多客户端,您只需要为每个附加设备执行步骤6和11-13。 要撤销对客户端的访问权限,请执行步骤 14。