ubuntu18 安装openvpn

第一步 安装openvpn

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

第二步 新建CA证书文件夹

1
2
3
4
5
6
7
make-cadir ~/openvpn-ca
#或者
mkdir ~/openvpn-ca
cp -r /usr/share/easy-rsa/* ~/openvpn-ca


cd ~/openvpn-ca

配置CA变量

要配置我们的CA将要用到的值,我们需要编辑目录中的vars文件。现在用文本编辑器编辑该文件(我通常使用vim):

1
vim vars

在里面,您会发现一些可以调整的变量,以确定如何创建证书。我们只需要担心其中的一些。
将以下部分值编辑为您喜欢的任何值,但不要将它们留空,有如下示例:

1
2
3
4
5
6
7
export KEY_COUNTRY="CN"
export KEY_PROVINCE="SC"
export KEY_CITY="Chengdu"
export KEY_ORG="whatever you like"
export KEY_EMAIL="whatever you like"
export KEY_OU="Community"
export KEY_NAME="server"

第四步 制作CA

1
2
cd ~/openvpn-ca
source vars

或许你也会遇到跟我一样的问题

1
2
3
4
5
**************************************************************
No /home/ubuntu/openvpn-ca/openssl.cnf file could be found
Further invocations will fail
**************************************************************
NOTE: If you run ./clean-all, I will be doing a rm -rf on /home/ubuntu/openvpn-ca/keys

输入ls会发现,有几个版本的openssl配置文件我们复制一个

1
cp ~/openvpn-ca/openssl-1.0.0.cnf  ~/openvpn-ca/openssl.cnf

再次执行source vars就不会报错了
然后执行以下命令来构建我们的根CA

1
2
./clean-all
./build-ca

一直按enter确认选择即可

第五步 创建服务器证书,密钥和加密文件

接下来,我们将生成服务器证书和密钥对,以及加密过程中使用的一些其他文件。首先生成OpenVPN服务器证书和密钥对。我们可以通过输入:

1
./build-key-server server

接下来,我们将生成一些其他项目。 我们可以通过键入生成一个强大的Diffie-Hellman密钥,以便在密钥交换期间使用

1
./build-dh

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

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

第六步 生成客户端证书和密钥对

接下来,我们可以生成客户端证书和密钥对。 虽然这可以在客户端计算机上完成,然后出于安全目的由服务器/ CA签名,但为了简单起见,我们将在本指南中生成服务器上的签名密钥。
我们将为本指南生成单个客户端密钥/证书,但如果您有多个客户端,则可以根据需要重复此过程。 为每个客户端传递一个唯一值的脚本。
注:在openvpn中,这种配置方法是每一个登陆的VPN客户端需要有一个证书,每个证书在同一时刻只能供一个客户端连接(如果有两个机器安装相同证书,同时拨服务器,都能拨上,但是只有第一个拨上的才能连通网络)。所以需要建立许多份证书。
因为您可能稍后再回到此步骤,我们将重新获取vars文件。 我们将使用client1作为本指南的第一个证书/密钥对的值。
要生成没有密码的凭据,以帮助自动连接,请使用build-key命令,如下所示:

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

生成的证书文件均在~/openvpn-ca/keys

第七步 配置OpenVPN服务

开始之前,把我们需要的相关文件复制到/etc/openvpn这个配置目录中去,即把~/openvpn-ca/keys目录下面的ca.crt,ca.key,server.crt,server.key,HMAC签名以及Diffie-Hellman文件复制到/etc/openvpn这个目录下面

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

然后从OpenVPN自带的配置模板中复制配置文件

1
2
3
sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/
cd /etc/openvpn/
sudo gzip -d server.conf.gz

接下来修改配置文件

1
sudo vim /etc/openvpn/server.conf

然后找到tls-auth ta.key 0,在下方增加一个key-direction参数,设置其参数值为0

1
2
tls-auth ta.key 0
key-direction 0

然后找到cipher AES-256-CBC,在下方增加auth SHA256

1
2
cipher AES-256-CBC
auth SHA256

在完成初始化工作之后,降低OpenVPN守护进程的权限
取消下面的注释

1
2
user nobody
group nobody

完成以上步骤保存退出

第八步 调整服务的网络配置

允许IP转发
首先,我们需要让我们的服务器来转发流量,这是我们需要VPN服务器来提供的最基本的功能。我们可以通过修改/etc/sysctl.conf文件来调整网络设置

1
sudo vim /etc/sysctl.conf

在这个文件里面,找到net.ipv4.ip_forward,去除这一行之前的”#”来解注释这个参数:

1
net.ipv4.ip_forward=1

然后保存退出
为了读取sysctl.conf文件并且让调整后设置对当前系统的session生效,键入如下命令:

1
sudo sysctl -p

第九步 开启vpn服务

1
sudo service openvpn start

查看vpn状态

1
sudo service openvpn status

第十步 链接openvpn

下载openvpn客户端
在openvpn的安装目录中sample-config文件夹下有客户端的模板示例配置文件client.ovpn
需要修改注意的地方

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Are we connecting to a TCP or
# UDP server? Use the same setting as
# on the server.
;proto tcp
proto udp
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote 192.168.0.1 1194 #服务器ip地址及端口
;remote my-server-2 1194
user nobody
group nobody

# 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 client1.crt
key client1.key
# Select a cryptographic cipher.
# If the cipher option is used on the server
# then you must also specify it here.
# Note that v2.4 client/server will automatically
# negotiate AES-256-GCM in TLS mode.
# See also the ncp-cipher option in the manpage
cipher AES-256-CBC
auth SHA256

这些地方都需要参考服务器端修改
以下为特例这里必须为1以来配合服务器端:

1
2
3
4
# If a tls-auth key is used on the server
# then every client must also have the key.
tls-auth ta.key 1
key-direction 1

做完配置文件之后以管理员身份运行openvpn-gui.exe,选择导入配置文件,然后使用ftp工具(我使用的是winscp)下载服务器端~/openvpn-ca/keys文件夹下的ca.crt、client1.crt、client1.key、ta.key。右击任务栏中openvpn选择选项可以看到一些常规设置,将下载的文件复制到配置文件文件夹
右击选择链接,正常情况下就可以正常使用了