如何在 Ubuntu 16.04 上设置 OpenVPN 服务器

介绍

想要安全地从智能手机或笔记本电脑上连接到不受信任的网络,如酒店或咖啡店的WiFi? Virtual Private Network(VPN)允许您私下和安全地穿过不受信任的网络,就像您在私人网络上一样。

当与 HTTPS 连接相结合时,此设置允许您保护无线登录和交易,您可以绕过地理限制和审查,并保护您的位置和未加密的 HTTP 流量免受不受信任的网络的影响。

OpenVPN是一个全功能的开源 Secure Socket Layer (SSL) VPN 解决方案,可容纳各种配置。 在本教程中,我们将在Droplet上设置一个OpenVPN服务器,然后从Windows,OS X,iOS和Android配置访问它。本教程将使安装和配置步骤尽可能简单。

<$>[注] 注: 如果您打算在DigitalOcean Droplet上设置一个OpenVPN服务器,请注意,像许多托管提供商一样,我们会收取带宽过期费用。

请参阅此页面(https://www.digitalocean.com/docs/accounts/billing/bandwidth/)以获取更多信息。

前提条件

要完成本教程,您需要访问Ubuntu 16.04服务器。

在启动本指南之前,您需要配置具有sudo权限的非根用户,您可以遵循我们的 Ubuntu 16.04初始服务器设置指南来设置具有相应权限的用户。

当你准备开始时,登录你的Ubuntu服务器作为你的sudo用户,并继续下方。

步骤1:安装OpenVPN

首先,我们将将OpenVPN安装到我们的服务器上。OpenVPN在Ubuntu的默认存储库中可用,因此我们可以使用apt进行安装。

更新您的服务器的包索引并安装所需的包类型:

1sudo apt-get update
2sudo apt-get install openvpn easy-rsa

所需的软件现在在服务器上,准备配置。

步骤 2:设置 CA 目录

OpenVPN是一个TLS/SSL VPN,这意味着它使用证书来加密服务器和客户端之间的流量。为了发行可信证书,我们需要建立自己的简单证书授权机构(CA)。

首先,我们可以用make-cadir命令将easy-rsa模板目录复制到我们的主目录:

1make-cadir ~/openvpn-ca

移动到新创建的目录以开始配置 CA:

1cd ~/openvpn-ca

步骤 3: 配置 CA 变量

要配置我们的CA将使用的值,我们需要在目录中编辑vars文件,现在在文本编辑器中打开该文件:

1nano vars

在里面,你会发现一些可调整的变量来确定你的证书将如何创建,我们只需要担心其中一些。

在文件的底部,寻找设置,为新的证书设置域默认值。

 1[label ~/openvpn-ca/vars]
 2. . .
 3
 4export KEY_COUNTRY="US"
 5export KEY_PROVINCE="CA"
 6export KEY_CITY="SanFrancisco"
 7export KEY_ORG="Fort-Funston"
 8export KEY_EMAIL="[email protected]"
 9export KEY_OU="MyOrganizationalUnit"
10
11. . .

将红色值编辑为您喜欢的任何值,但不要让它们空白:

 1[label ~/openvpn-ca/vars]
 2. . .
 3
 4export KEY_COUNTRY="US"
 5export KEY_PROVINCE="NY"
 6export KEY_CITY="New York City"
 7export KEY_ORG="DigitalOcean"
 8export KEY_EMAIL="[email protected]"
 9export KEY_OU="Community"
10
11. . .

当我们在这里时,我们还会编辑这个部分下面的KEY_NAME值,它填充了主题字段. 为了保持这个简单,我们将在本指南中称之为服务器:

1[label ~/openvpn-ca/vars]
2export KEY_NAME="server"

完成后,保存并关闭文件。

步骤 4:构建证书权威

现在,我们可以使用我们设置的变量和easy-rsa实用程序来构建我们的证书权威。

确保你在你的CA目录,然后源于你刚刚编辑的vars文件:

1cd ~/openvpn-ca
2source vars

你应该看到以下内容,如果它是正确的来源:

1[secondary_label Output]
2NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/sammy/openvpn-ca/keys

确保我们在干净的环境中运行,键入:

1./clean-all

现在,我们可以通过键入构建我们的根 CA:

1./build-ca

这将启动创建 root 证书权限密钥和证书的过程. 由于我们填写了vars文件,所有值都应该自动填充。

 1[secondary_label Output]
 2Generating a 2048 bit RSA private key
 3..........................................................................................+++
 4...............................+++
 5writing new private key to 'ca.key'
 6-----
 7You are about to be asked to enter information that will be incorporated
 8into your certificate request.
 9What you are about to enter is what is called a Distinguished Name or a DN.
10There are quite a few fields but you can leave some blank
11For some fields there will be a default value,
12If you enter '.', the field will be left blank.
13-----
14Country Name (2 letter code) [US]:
15State or Province Name (full name) [NY]:
16Locality Name (eg, city) [New York City]:
17Organization Name (eg, company) [DigitalOcean]:
18Organizational Unit Name (eg, section) [Community]:
19Common Name (eg, your name or your server's hostname) [DigitalOcean CA]:
20Name [server]:
21Email Address [[email protected]]:

我们现在有一个CA,可以用来创建我们需要的其他文件。

步骤 5:创建服务器证书、密钥和加密文件

接下来,我们将生成我们的服务器证书和密钥对,以及在加密过程中使用的一些额外文件。

首先,创建 OpenVPN 服务器证书和密钥对,我们可以通过键入:

<$>[注意] 注意:如果您在这里选择了服务器以外的名称,您将不得不调整下面的一些说明。例如,当将生成的文件复制到/etc/openvpn directroy时,您将不得不替换正确的名称。

1./build-key-server server

再次,提示将基于我们刚刚传输的参数(‘服务器’)和我们来源的‘vars’文件的内容具有默认值。

请轻松接受默认值,点击 ENTER. Do not 输入此设置的挑战密码. 到最后,您将不得不输入 y 两个问题来签署和承诺证书:

1[secondary_label Output]
2. . .
3
4Certificate is to be certified until May 1 17:51:16 2026 GMT (3650 days)
5Sign the certificate? [y/n]:y
6
71 out of 1 certificate requests certified, commit? [y/n]y
8Write out database with 1 new entries
9Data Base Updated

接下来,我们可以通过键入生成一个强大的Diffie-Hellman密钥,以便在密钥交换过程中使用:

1./build-dh

这可能需要几分钟才能完成。

之后,我们可以生成 HMAC 签名,以加强服务器的 TLS 完整性验证能力:

1openvpn --genkey --secret keys/ta.key

步骤 6:生成客户证书和密钥对

接下来,我们可以生成客户端证书和密钥对,虽然这可以在客户端机器上完成,然后由服务器/CA为安全目的签署,但对于本指南,我们将为了简单而在服务器上生成签名的密钥。

我们将为本指南生成单个客户端密钥/证书,但如果您有多个客户端,您可以重复此过程尽可能多次。

由于您可能在稍后重返此步骤,我们将重源vars文件,我们将使用client1作为本指南的第一个证书/钥匙对值。

要生成没有密码的身份证件,以协助自动连接,请使用这样的构建密钥命令:

1cd ~/openvpn-ca
2source vars
3./build-key client1

如果您想创建一个受密码保护的凭证集,请使用build-key-pass命令:

1cd ~/openvpn-ca
2source vars
3./build-key-pass client1

再次,默认值应该被填充,所以你可以点击 ENTER继续。留下挑战密码空,并确保输入 y,以便提示是否要签署和承诺证书。

步骤 7: 配置 OpenVPN 服务

接下来,我们可以开始使用我们生成的身份证和文件来配置OpenVPN服务。

将文件复制到 OpenVPN 目录

首先,我们需要将所需的文件复制到 /etc/openvpn 配置目录。

我们可以从我们刚刚生成的所有文件开始,这些文件在它们创建时被放置在~/openvpn-ca/keys目录中,我们需要移动我们的CA cert,我们的服务器 cert和密钥,HMAC签名和Diffie-Hellman文件:

1cd ~/openvpn-ca/keys
2sudo cp ca.crt server.crt server.key ta.key dh2048.pem /etc/openvpn

接下来,我们需要将样本OpenVPN配置文件复制到配置目录中,以便我们可以将其作为我们的设置的基础:

1gunzip -c /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz | sudo tee /etc/openvpn/server.conf

调整OpenVPN配置

现在我们的文件已经在场,我们可以修改服务器配置文件:

1sudo nano /etc/openvpn/server.conf

基本配置

首先,通过搜索tls-auth指令来查找HMAC部分,删除**;**以解除tls-auth行评论:

1[label /etc/openvpn/server.conf]
2tls-auth ta.key 0 # This file is secret

接下来,通过搜索评论的数字线来查找加密加密的部分。AES-128-CBC加密提供了良好的加密水平,并且得到良好的支持。

1[label /etc/openvpn/server.conf]
2cipher AES-128-CBC

下面,添加一个auth行来选择HMAC消息消化算法,因此,SHA256是一个很好的选择:

1[label /etc/openvpn/server.conf]
2auth SHA256

最后,找到用户设置,并在开始时删除**;**以不评论这些行:

1[label /etc/openvpn/server.conf]
2user nobody
3group nogroup

(可选)推动 DNS 更改,通过 VPN 重定向所有流量

上面的设置将创建两台机器之间的VPN连接,但不会强迫任何连接使用隧道. 如果您希望使用VPN来路由您的所有流量,您可能希望将DNS设置推到客户端计算机。

您可以这样做,不遵循几条指令,这些指令将配置客户端机器来通过VPN重定向所有网络流量,找到重定向网关部分,并从重定向网关行开始删除半字符**;**,以便不评论它:

1[label /etc/openvpn/server.conf]
2push "redirect-gateway def1 bypass-dhcp"

就在此下方,找到dhcp-option部分. 再次,从两行前面删除**;**,以免评论它们:

1[label /etc/openvpn/server.conf]
2push "dhcp-option DNS 208.67.222.222"
3push "dhcp-option DNS 208.67.220.220"

这应该帮助客户重新配置他们的DNS设置,以便使用VPN隧道作为默认网关。

(可选) 调整端口和协议

默认情况下,OpenVPN服务器使用 1194 端口和 UDP 协议来接受客户端连接. 如果您需要使用不同的端口,因为客户端可能存在的限制性网络环境,您可以更改端口选项。

1[label /etc/openvpn/server.conf]
2# Optional!
3port 443

通常,如果协议也会被限制到该端口,那么如果是,则从UDP更改proto到TCP:

1[label /etc/openvpn/server.conf]
2# Optional!
3proto tcp

如果您不需要使用不同的端口,最好将这两个设置作为默认设置。

(可选)指向非默认凭证

如果您早些时候在/build-key-server命令中选择了不同的名称,请修改您看到的certkey行,以指向相应的.crt.key文件。

1[label /etc/openvpn/server.conf]
2cert server.crt
3key server.key

完成后,保存并关闭文件。

步骤 8:调整服务器网络配置

接下来,我们需要调整服务器网络的一些方面,以便OpenVPN能够正确地路由流量。

允许IP转发

首先,我们需要允许服务器传输流量,这对于我们希望我们的VPN服务器提供的功能非常重要。

我们可以通过修改 /etc/sysctl.conf 文件来调整此设置:

1sudo nano /etc/sysctl.conf

在内部,寻找设置net.ipv4.ip_forward的行,从行开始删除**#**字符,以解除该设置的评论:

1[label /etc/sysctl.conf]
2net.ipv4.ip_forward=1

保存并关闭文件,当你完成。

要读取文件并调整当前会话的值,键入:

1sudo sysctl -p

调整UFW规则以掩盖客户端连接

如果你遵循Ubuntu 16.04初始服务器安装指南的先决条件,你应该有UFW防火墙。无论你是否使用防火墙来阻止不需要的流量(你几乎总是应该做),我们需要本指南中的防火墙来操纵部分流量进入服务器。

在我们打开防火墙配置文件以添加伪装之前,我们需要找到我们机器的公共网络接口。

1ip route | grep default

例如,此结果显示了名为wlp11s0的界面,该界面如下所示:

1[secondary_label Output]
2default via 203.0.113.1 dev wlp11s0 proto static metric 600

当您有与默认路径相关联的界面时,请打开 /etc/ufw/before.rules 文件以添加相关配置:

1sudo nano /etc/ufw/before.rules

此檔案處理了在傳統 UFW 規則下載之前應實施的配置。向檔案的頂部添加下面的突出的行。這將設定「NAT」表中的「POSTROUTING」連鎖的默認策略,並掩蓋來自 VPN 的任何流量:

<$>[注] :请记住,在下面的-A POSTROUTING行中代替wlp11s0以您在上面的命令中找到的界面。

 1[label /etc/ufw/before.rules]
 2#
 3# rules.before
 4#
 5# Rules that should be run before the ufw command line added rules. Custom
 6# rules should be added to one of these chains:
 7#   ufw-before-input
 8#   ufw-before-output
 9#   ufw-before-forward
10#
11
12# START OPENVPN RULES
13# NAT table rules
14*nat
15:POSTROUTING ACCEPT [0:0] 
16# Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!)
17-A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE
18COMMIT
19# END OPENVPN RULES
20
21# Don't delete these required lines, otherwise there will be errors
22*filter
23. . .

保存并关闭文件,当你完成。

我们需要告诉 UFW 以默认方式允许转发的数据包。 为了做到这一点,我们将打开 /etc/default/ufw 文件:

1sudo nano /etc/default/ufw

在内部,找到DEFAULT_FORWARD_POLICY指令,我们将值从DROP更改为ACCEPT:

1[label /etc/default/ufw]
2DEFAULT_FORWARD_POLICY="ACCEPT"

保存并关闭文件,当你完成。

打开 OpenVPN 端口并启用更改

接下来,我们将调整防火墙本身,以允许流量到OpenVPN。

如果您未在 /etc/openvpn/server.conf 文件中更改端口和协议,则需要打开 UDP 流量到端口 1194。

我们还会添加SSH端口,如果您在遵循前提教程时忘了添加它:

1sudo ufw allow 1194/udp
2sudo ufw allow OpenSSH

现在,我们可以禁用并重新启用 UFW 来从我们修改的所有文件中加载更改:

1sudo ufw disable
2sudo ufw enable

我们的服务器现在已配置为正确处理OpenVPN流量。

步骤 9:启动并启用 OpenVPN 服务

我們終於準備在我們的伺服器上啟動 OpenVPN 服務,我們可以使用 systemd 這樣做。

我们需要启动OpenVPN服务器,将我们的配置文件名指定为系统d单元文件名之后的实例变量。我们为我们的服务器的配置文件名为 /etc/openvpn/server.conf,所以我们在调用它时将 @server`添加到我们的单元文件的尽头:

1sudo systemctl start openvpn@server

通过键入双重检查服务是否成功启动:

1sudo systemctl status openvpn@server

如果一切顺利,你的输出应该看起来像这样的东西:

 1[secondary_label Output]
 2 openvpn@server.service - OpenVPN connection to server
 3   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
 4   Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
 5     Docs: man:openvpn(8)
 6           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
 7           https://community.openvpn.net/openvpn/wiki/HOWTO
 8  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
 9 Main PID: 5856 (openvpn)
10    Tasks: 1 (limit: 512)
11   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
12           └─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
13
14May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip addr add dev tun0 local 10.8.0.1 peer 10.8.0.2
15May 03 15:30:05 openvpn2 ovpn-server[5856]: /sbin/ip route add 10.8.0.0/24 via 10.8.0.2
16May 03 15:30:05 openvpn2 ovpn-server[5856]: GID set to nogroup
17May 03 15:30:05 openvpn2 ovpn-server[5856]: UID set to nobody
18May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link local (bound): [undef]
19May 03 15:30:05 openvpn2 ovpn-server[5856]: UDPv4 link remote: [undef]
20May 03 15:30:05 openvpn2 ovpn-server[5856]: MULTI: multi_init called, r=256 v=256
21May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL: base=10.8.0.4 size=62, ipv6=0
22May 03 15:30:05 openvpn2 ovpn-server[5856]: IFCONFIG POOL LIST
23May 03 15:30:05 openvpn2 ovpn-server[5856]: Initialization Sequence Completed

您也可以通过键入来检查OpenVPN的tun0接口是否可用:

1ip addr show tun0

你应该看到一个配置的界面:

1[secondary_label Output]
24: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
3    link/none 
4    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
5       valid_lft forever preferred_lft forever

如果一切顺利,请启用该服务,以便在启动时自动启动:

1sudo systemctl enable openvpn@server

步骤 10:创建客户端配置基础设施

接下来,我们需要建立一个系统,使我们能够轻松创建客户端配置文件。

创建客户端 Config 目录结构

在您的家庭目录中创建一个目录结构来存储文件:

1mkdir -p ~/client-configs/files

由于我们的客户端配置文件将嵌入客户端密钥,我们应该在内部目录中锁定权限:

1chmod 700 ~/client-configs/files

创建基础配置

接下来,让我们将一个客户端配置示例复制到我们的目录中,以便作为我们的基本配置:

1cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf

在文本编辑器中打开此新文件:

1nano ~/client-configs/base.conf

内部,我们需要做一些调整。

首先,找出远程指令,将客户端指向我们的OpenVPN服务器地址,这应该是您的OpenVPN服务器的公共IP地址,如果您更改了OpenVPN服务器正在收听的端口,则更改1194到您选择的端口:

1[label ~/client-configs/base.conf]
2. . .
3# The hostname/IP and port of the server.
4# You can have multiple remote entries
5# to load balance between the servers.
6remote server_IP_address 1194
7. . .

请确保协议匹配您在服务器配置中使用的值:

1[label ~/client-configs/base.conf]
2proto udp

接下来,通过删除**;**删除用户指令:

1[label ~/client-configs/base.conf]
2# Downgrade privileges after initialization (non-Windows only)
3user nobody
4group nogroup

查找设置ca,certkey的指令. 评论这些指令,因为我们将在文件本身中添加证件和密钥:

 1[label ~/client-configs/base.conf]
 2# SSL/TLS parms.
 3# See the server config file for more
 4# description. It's best to use
 5# a separate .crt/.key file pair
 6# for each client. A single ca
 7# file can be used for all clients.
 8#ca ca.crt
 9#cert client.crt
10#key client.key

镜像我们在/etc/openvpn/server.conf文件中设置的cipherauth设置:

1[label ~/client-configs/base.conf]
2cipher AES-128-CBC
3auth SHA256

接下来,在文件中的某个地方添加钥匙方向指令,此 **必须设置为1,以便与服务器工作:

1[label ~/client-configs/base.conf]
2key-direction 1

最后,添加几个 评论出来的行. 我们希望在每一个配置中包含这些,但应该只为带有 `/etc/openvpn/update-resolv-conf’ 文件的 Linux 客户端启用它们。

1[label ~/client-configs/base.conf]
2# script-security 2
3# up /etc/openvpn/update-resolv-conf
4# down /etc/openvpn/update-resolv-conf

如果您的客户端运行的是 Linux,并且有一个 /etc/openvpn/update-resolv-conf 文件,您应该从生成的 OpenVPN 客户端配置文件中删除这些行。

完成后保存文件。

创建 Configuration Generation 脚本

接下来,我们将创建一个简单的脚本来编译我们的基本配置与相关的证书,密钥和加密文件。

~/client-configs目录中创建并打开名为make_config.sh的文件:

1nano ~/client-configs/make_config.sh

在内部,插入以下脚本:

 1[label ~/client-configs/make_config.sh]
 2#!/bin/bash
 3
 4# First argument: Client identifier
 5
 6KEY_DIR=~/openvpn-ca/keys
 7OUTPUT_DIR=~/client-configs/files
 8BASE_CONFIG=~/client-configs/base.conf
 9
10cat ${BASE_CONFIG} \
11    <(echo -e '<ca>') \
12    ${KEY_DIR}/ca.crt \
13    <(echo -e '</ca>\n<cert>') \
14    ${KEY_DIR}/${1}.crt \
15    <(echo -e '</cert>\n<key>') \
16    ${KEY_DIR}/${1}.key \
17    <(echo -e '</key>\n<tls-auth>') \
18    ${KEY_DIR}/ta.key \
19    <(echo -e '</tls-auth>') \
20    > ${OUTPUT_DIR}/${1}.ovpn

保存并关闭文件,当你完成。

通过键入标记文件为可执行:

1chmod 700 ~/client-configs/make_config.sh

步骤 11:生成客户端配置

现在,我们可以轻松地生成客户端配置文件。

如果您跟随了指南,您将创建一个名为client1.crtclient1.key的客户端证书和密钥,分别在步骤 6 中运行./build-key client1命令,我们可以通过进入我们的~/client-configs目录并使用我们创建的脚本来生成这些凭证的配置:

1cd ~/client-configs
2./make_config.sh client1

如果一切顺利,我们应该在我们的~/client-configs/files目录中有一个client1.ovpn文件:

1ls ~/client-configs/files
1[secondary_label Output]
2client1.ovpn

将配置转移到客户端设备

我们需要将客户端配置文件传输到相应的设备,例如,这可能是您的本地计算机或移动设备。

虽然用于实现此转移的确切应用程序将取决于您的选择和设备的操作系统,但您希望该应用程序在后端使用SFTP(SSH文件传输协议)或SCP(安全副本)。

以下是一個例子 SFTP 命令,使用我們的 client1.ovpn 例子. 這個命令可以從您的本地電腦(OS X 或 Linux)執行。

1sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/

以下是几个工具和教程,以安全地将文件从服务器传输到本地计算机:

步骤 12:安装客户端配置

现在,我们将讨论如何在 Windows、OS X、iOS 和 Android 上安装客户端 VPN 配置文件. 这些客户端指令并不相互依赖,因此请自由跳过适用于您的任何内容。

在我们的例子中,这意味着连接将被称为client1.ovpn为我们生成的第一个客户端文件。

窗口

  • 安装 *

OpenVPN Windows 客户端应用程序可在 OpenVPN 的下载页面找到。

<$>[注] [标签注] OpenVPN需要管理权限来安装。

安装 OpenVPN 后,将.ovpn 文件复制到:

1C:\Program Files\OpenVPN\config

当您启动OpenVPN时,它会自动看到您的个人资料并使其可用。

OpenVPN 每次使用都必须作为管理员运行,即使是由管理员帐户使用。 要做到这一点,不用右键单击并选择 ** 作为管理员运行** 每次使用VPN,您可以预设此功能,但这必须从管理员帐户执行。 这也意味着标准用户需要输入管理员的密码才能使用 OpenVPN。

要将 OpenVPN 应用程序设置为始终以管理员身份运行,请右键单击其快捷图标,然后转到 属性。在 兼容性选项卡的底部,点击按钮为 更改所有用户的设置

  • 连接 *

每次启动 OpenVPN GUI 时,Windows 都会询问您是否希望允许该程序对您的计算机进行更改. 点击 Yes. 启动 OpenVPN 客户端应用程序只会将 applet 放入系统盘,以便VPN 可根据需要连接和断开连接;它实际上不会实现 VPN 连接。

一旦 OpenVPN 启动,请通过进入系统底盘的 applet 并右键单击 OpenVPN applet 图标来启动连接,这将打开背景菜单,在菜单顶部选择 client1(这是我们的client1.ovpn配置文件),然后选择 Connect

在建立连接时,会打开状态窗口,显示日志输出,并在客户端连接后会显示消息。

以同样的方式脱离VPN:进入系统底盘应用程序,右键单击OpenVPN应用程序图标,选择客户端配置文件,然后单击 脱离

对于X

  • 安装 *

Tunnelblick 是 Mac OS X 的免费开源 OpenVPN 客户端,您可以从 Tunnelblick 下载页面下载最新的磁盘图像。

安装过程结束时,Tunnelblick 会询问您是否有任何配置文件。 回答 No 可以更容易,然后让Tunnelblick 完成。 打开 Finder 窗口并双击client1.ovpn

  • 连接 *

启动 Tunnelblick 通过在 Applications文件夹中双击 Tunnelblick。一旦启动 Tunnelblick,屏幕右上方的菜单栏中会出现一个 Tunnelblick 图标,以便控制连接。

Linux 的

安装

如果您正在使用 Linux,您可以根据您的发行版使用各种工具,您的桌面环境或窗口管理器也可能包括连接实用程序。

然而,最通用的连接方式是仅仅使用OpenVPN软件。

在Ubuntu或Debian上,您可以像在服务器上一样安装它,键入:

1sudo apt-get update
2sudo apt-get install openvpn

在CentOS上,您可以启用EPEL存储库,然后通过键入来安装它:

1sudo yum install epel-release
2sudo yum install openvpn

配置

检查您的分布是否包含 /etc/openvpn/update-resolv-conf 脚本:

1ls /etc/openvpn
1[secondary_label Output]
2update-resolve-conf

接下来,编辑您转移的 OpenVPN 客户端配置文件:

1nano client1.ovpn

如果您能找到一个update-resolv-conf文件,则不符合我们放置的三个行以调整 DNS 设置:

1[label client1.ovpn]
2script-security 2
3up /etc/openvpn/update-resolv-conf
4down /etc/openvpn/update-resolv-conf

如果您正在使用 CentOS,请将nogroup更改为nobody,以匹配分布的可用组:

1[label client1.ovpn]
2group nobody

保存并关闭文件。

现在,您可以通过指向客户端配置文件的openvpn命令连接到VPN:

1sudo openvpn --config client1.ovpn

这将使您连接到您的服务器。

  • 安装 *

从 iTunes App Store 搜索并安装 OpenVPN Connect,官方的 iOS OpenVPN 客户端应用程序. 要将您的 iOS 客户端配置传输到设备上,请直接连接到计算机。

通过iTunes完成传输将被描述在这里. 在计算机上打开iTunes,然后点击 iPhone > apps. 向下滚动到 File Sharing 部分,然后点击 OpenVPN 应用程序. 右侧的空白窗口, OpenVPN 文档,用于共享文件。

iTunes showing the VPN profile ready to load on the iPhone

现在在 iPhone 上启动 OpenVPN 应用程序. 将收到通知,新配置文件已准备好导入。

The OpenVPN iOS app showing new profile ready to import

  • 连接 *

OpenVPN现在已经准备好与新配置文件一起使用。通过将 Connect按钮滑动到 On位置来启动连接。

<$>[注] [标签注] 在设置下的VPN交换机不能用来连接到VPN。

The OpenVPN iOS app connected to the VPN

安卓

  • 安装 *

搜索并安装 Android OpenVPN Connect,是官方的Android OpenVPN客户端应用程序。

可以通过 USB 将 Android 设备连接到您的计算机并复制文件来传输 .ovpn 配置文件. 或者,如果您有 SD 卡阅读器,您可以删除设备的 SD 卡,将该配置文件复制到其上,然后将该卡重新插入到 Android 设备中。

启动OpenVPN应用程序,然后点击菜单来导入配置文件。

The OpenVPN Android app profile import menu selection

然后导航到保存的配置文件的位置(屏幕截图使用 /sdcard/Download/)并选择文件。

The OpenVPN Android app selecting VPN profile to import

  • 连接 *

要连接,只需点击 连接 ** 按钮,您将被问及是否信任 OpenVPN 应用程序。 选择 OK 来启动连接。 要脱离 VPN,请返回 OpenVPN 应用程序并选择 ** 脱离

The OpenVPN Android app ready to connect to the VPN

步骤 13:测试您的VPN连接

一旦一切都安装完毕,一个简单的检查就证实一切正常工作了. 没有启用VPN连接,请打开浏览器,然后转到 DNSLeakTest

该网站将返回由您的互联网服务提供商分配的IP地址,并显示给世界其他地方. 要通过相同的网站检查您的DNS设置,请单击 扩展测试,它将告诉您正在使用的DNS服务器。

现在将OpenVPN客户端连接到您的Droplet的VPN,并刷新浏览器。VPN服务器的完全不同的IP地址现在应该出现。这就是您现在向世界展示的方式。 再次,DNSLeakTest(https://www.dnsleaktest.com) Extended Test将检查您的DNS设置并确认您现在正在使用VPN推出的DNS解析器。

第14步:取消客户证书

有时,您可能需要撤销客户端证书,以防止进一步访问 OpenVPN 服务器。

要做到这一点,请输入您的 CA 目录并重新源 vars 文件:

1cd ~/openvpn-ca
2source vars

接下来,使用您想要撤销的客户端名称拨打撤销完整命令:

1./revoke-full client3

这会显示一些输出,以错误23结束,这是正常的,该过程应该成功生成必要的撤销信息,该信息存储在名为crl.pem的文件中,在关键子目录中。

将此文件转移到 /etc/openvpn 配置目录:

1sudo cp ~/openvpn-ca/keys/crl.pem /etc/openvpn

接下来,打开 OpenVPN 服务器配置文件:

1sudo nano /etc/openvpn/server.conf

在文件的底部,添加crl-verify选项,以便OpenVPN服务器在每次尝试连接时检查我们创建的证书撤销列表:

1[label /etc/openvpn/server.conf]
2crl-verify crl.pem

保存并关闭文件。

最后,重新启动 OpenVPN 来执行证书撤销:

1sudo systemctl restart openvpn@server

客户端现在不应该再能够使用旧身份证成功连接到服务器。

若要取消额外的客户,请遵循此过程:

  1. 创建一个新的证书撤销列表,将vars文件源于~/openvpn-ca目录,然后在客户端名称上调用revoke-full脚本。
  2. 将新的证书撤销列表复制到/etc/openvpn目录,以重写旧列表。

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

结论

恭喜您!您现在正在安全地穿越互联网,保护您的身份,位置和流量免受欺诈者和审查者的影响。

若要配置更多客户端,只需按照步骤 6和每个额外设备的步骤 11-13

Published At
Categories with 技术
comments powered by Disqus