如何建立一个OpenVPN服务器在Ubuntu 16.04

介绍

想要在连接到不受信任的网络(例如酒店或咖啡店的WiFi)时从智能手机或笔记本电脑安全地访问互联网吗? 一个虚拟专用网络 (VPN)允许,如果你是一个专用网络上,你私下地穿过不受信任的网络。 流量从VPN服务器出现并继续其到目的地的旅程。

当结合HTTPS连接 ,这种设置可以让你保护你的无线登录和交易。 您可以规避地理限制和审查,并屏蔽您的位置和任何未加密的HTTP流量从不受信任的网络。

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

先决条件

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

您需要配置一个非root用户sudo权限开始本指南之前。 您可以按照我们的Ubuntu 16.04服务器初始设置向导来设置具有相应权限的用户。 链接的教程也将设立一个防火墙 ,我们将承担本指南中已安装到位。

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

第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)。

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

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 directroy,你将不得不代替正确的名称。 您还可以修改/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

同样,默认值应该进行填充,这样你就可以只打回车键继续。 离开的挑战密码为空,并确保输入y为询问是否签署并提交证书的提示。

第7步:配置OpenVPN服务

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

将文件复制到OpenVPN目录

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

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

cd ~/openvpn-ca/keys
sudo cp ca.crt ca.key 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

基本配置

首先,通过查找发现HMAC部分tls-auth指令。 删除“;” 要取消对tls-auth线。 下面这一点,添加key-direction设置为“0”的参数:

/etc/openvpn/server.conf
tls-auth ta.key 0 # This file is secret
key-direction 0

接下来,通过寻找注释掉找到加密算法,部分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选项。 如果您不是托管Web内容您的OpenVPN服务器,端口443是一个受欢迎的选择,因为这通常允许通过防火墙规则。

/etc/openvpn/server.conf
# Optional!
port 443

通常如果协议也将被限制到该端口。 如果是这样,改变proto从UDP到TCP:

/etc/openvpn/server.conf
# Optional!
proto tcp

如果您不需要使用其他端口,最好将这两个设置保留为默认值。

(可选)指向非默认凭据

如果在选择了不同的名称./build-key-server指令早,修改certkey线路,你看到指向适当.crt.key文件。 如果您使用的是默认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

你的公共接口应该遵循“dev”一词。 例如,该结果显示了一个名为接口wlp11s0 ,其中概述如下:

Outputdefault via 203.0.113.1 dev eth0  proto static  metric 600

当你与你的默认路由相关的接口,打开/etc/ufw/before.rules文件中添加相关的配置:

sudo nano /etc/ufw/before.rules

该文件处理在加载常规UFW规则之前应该放置的配置。 朝向文件的顶部,添加下面突出显示的行。 这将设置为默认策略POSTROUTING链中的nat表,并伪装从VPN未来的任何流量:

:记得替换eth0-A POSTROUTING符合您在上面的命令找到下面的界面。

/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 eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -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指令。 我们将改变从价值DROPACCEPT

/ 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

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

〜/ client-configs / base.conf
cipher AES-128-CBC
auth SHA256

接下来,添加key-direction在该文件中某处指令。 必须被设置为“1”,以与服务器一起工作:

〜/ client-configs / base.conf
key-direction 1

最后,添加一些注释掉行。 我们希望包括这些与每一个配置,而应该只让他们与船舶Linux客户端/etc/openvpn/update-resolv-conf文件。 此脚本使用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目录。

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

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

第1步1:生成客户端配置

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

如果你与导向跟着一起,您创建了一个客户端证书和密钥称为client1.crtclient1.key通过运行分别./build-key client1在第6步的命令,我们可以通过移动到为这些凭证的配置我们~/client-configs目录,并使用我们做的脚本:

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

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

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 ~/

这里有几个工具和教程,用于将文件从服务器安全地传输到本地计算机:

第1步2:安装客户端配置

现在,我们将讨论如何在Windows,OS X,iOS和Android上安装客户端VPN配置文件。 这些客户端指令都不相互依赖,所以请随时跳至适用于您的任何一个。

OpenVPN的连接将被称为任何你指定的.ovpn文件。 在我们的例子中,这意味着连接将被称为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启动,通过进入系统托盘applet并右键单击OpenVPN小程序图标启动连接。 这将打开上下文菜单。 在菜单的顶部选择客户端1(这是我们的client1.ovpn配置文件),然后选择连接

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

从VPN断开以同样的方式:进入系统托盘小程序,右键单击OpenVPN的小程序图标,选择客户端配置文件并单击断开连接

OS X

安装

的Tunnelblick是一个免费,开源的OpenVPN客户端的Mac OS X您可以从下载最新的磁盘映像的Tunnelblick下载页面 双击下载.dmg文件,并按照提示进行安装。

在安装过程结束时,Tunnelblick会询问您是否有任何配置文件。 它可以比较容易回答没有 ,并让的Tunnelblick完成。 打开Finder窗口,双击client1.ovpn Tunnelblick将安装客户端配置文件。 需要管理权限。

连接

应用程序文件夹启动的Tunnelblick通过双击的Tunnelblick。 一旦Tunnelblick启动,在屏幕的右上角的菜单栏中将有一个Tunnelblick图标,用于控制连接。 点击该图标,然后在连接菜单项,启动VPN连接。 选择客户端1连接。

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

注释我们置于如果你能找到一个调整的DNS设置的三条线update-resolv-conf文件:

client1.ovpn
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

如果你使用CentOS的,改变groupnogroupnobody ,以匹配分配的可用群体:

client1.ovpn
group nobody

保存并关闭文件。

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

sudo openvpn --config client1.ovpn

这应该将您连接到您的服务器。

iOS

安装

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

此处将概述使用iTunes完成传输。 在电脑上打开iTunes,点击iPhone> 应用程序 向下滚动至底部到文件共享部分,然后单击OpenVPN的应用程序。 空白窗口的右侧,OpenVPN的文档 ,是一个共享文件。 拖动.ovpn文件到OpenVPN的文档窗口。

iTunes显示VPN配置文件准备加载在iPhone上

现在在iPhone上启动OpenVPN应用程序。 系统会通知您可以汇入新的设定档。 点击绿色加号即可将其导入。

OpenVPN iOS应用程序显示准备导入的新配置文件

连接

OpenVPN现在可以使用新的配置文件。 开始滑动连接按钮,以打开位置的连接。 通过滑动同一个按钮为断开。

注意
设置下的VPN开关不能用于连接到VPN。 如果您尝试,您将收到通知,只使用OpenVPN应用程序连接。

OpenVPN iOS应用程序连接到VPN

Android

安装

打开Goog​​le Play商店。 搜索并安装Android的OpenVPN的连接 ,官方Android OpenVPN的客户端应用程序。

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

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

OpenVPN Android应用配置文件导入菜单选择

然后导航到保存的配置文件(截图中使用的位置/sdcard/Download/ ),并选择该文件。 应用程序将记录导入配置文件。

OpenVPN Android应用程序选择要导入的VPN配置文件

连接

要连接,只需点击Connect按钮。 将询问您是否信任OpenVPN应用程序。 选择确定以发起连接。 若要从VPN断开连接,回到OpenVPN的应用程序,然后选择断开连接

OpenVPN Android应用程序准备好连接到VPN

第1步3:测试您的VPN连接

一旦一切安装,一个简单的检查确认一切正常工作。 无需启用VPN连接,打开浏览器并转到DNSLeakTest

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

现在将OpenVPN客户端连接到您的Droplet的VPN并刷新浏览器。 现在出现VPN服务器完全不同的IP地址。 现在是你对世界的看法。 再次, DNSLeakTest的 扩展测试将检查您的DNS设置,并确认您现在使用由您的VPN推DNS解析器。

第1步4:撤销客户端证书

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

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

cd ~/openvpn-ca
source vars

接下来,调用revoke-full使用要吊销的客户名称命令:

./revoke-full client3

这将显示一些输出,在截至error 23 ,这是正常的,这个过程应该已经成功地产生了必要的撤销信息,存储在一个名为crl.pem的中keys子目录。

该文件传送到/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

The client should now longer be able to successfully connect to the server using the old credential.

To revoke additional clients, follow this process:

  1. Generate a new certificate revocation list by sourcing the vars file in the ~/openvpn-ca directory and then calling the revoke-full script on the client name.
  2. Copy the new certificate revocation list to the /etc/openvpn directory to overwrite the old list.
  3. Restart the OpenVPN service.

This process can be used to revoke any certificates that you've previously issued for your server.

结论

恭喜! You are now securely traversing the internet protecting your identity, location, and traffic from snoopers and censors.

To configure more clients, you only need to follow steps 6 , and 11-13 for each additional device. To revoke access to clients, follow step 14 .

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏