如何在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

最后,找到 usergroup 设置并删除开头的“;”以取消注释这些行:

/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 命令期间选择了不同的名称,请修改您看到的 certkey 行以指向适当的 .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

接下来,通过删除“;”取消注释 usergroup 指令:

~/client-configs/base.conf

# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup

查找设置 cacertkey 的指令。 注释掉这些指令,因为我们将在文件本身中添加证书和密钥:

~/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 文件中设置的 cipherauth 设置:

~/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.crtclient1.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,请将 groupnogroup 更改为 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

客户端现在应该能够使用旧凭据成功连接到服务器。

要撤销其他客户端,请按照以下流程操作:

  1. 通过获取 ~/openvpn-ca 目录中的 vars 文件,然后在客户端名称上调用 revoke-full 脚本,生成新的证书吊销列表。
  2. 将新的证书吊销列表复制到 /etc/openvpn 目录以覆盖旧列表。
  3. 重新启动 OpenVPN 服务。

此过程可用于撤销您之前为服务器颁发的任何证书。

结论

恭喜! 您现在可以安全地穿越互联网,保护您的身份、位置和流量免受窥探者和审查者的侵害。

要配置更多客户端,您只需要为每个附加设备执行步骤611-13。 要撤销对客户端的访问权限,请执行步骤 14