在CentOS 8 / Ubuntu 18.04上安装和配置OpenVPN Client

为了连接到 开放VPN 服务器允许您访问Intranet本地资源,您只需要一个OpenVPN客户端。在本指南中,我们将学习如何在CentOS 8 / Ubuntu 18.04上安装和配置OpenVPN Client。请注意,可以将OpenVPN软件配置为充当服务器或客户端。

通过以下链接了解如何在CentOS 8上安装和配置OpenVPN服务器;

在CentOS 8上设置OpenVPN服务器

在CentOS 8 / Ubuntu 18.04上安装和配置OpenVPN Client

为了演示不同Intranet上两台服务器的通信,我们有两台服务器Ubuntu 18.04和CentOS 8,它们无法通信,因为它们在不同的LAN网络上,只能通过OpenVPN Server才能访问。两台服务器仅连接了NAT接口。

在Ubuntu 18.04上安装OpenVPN Client

OpenVPN维护着多个OpenVPN(OSS)软件存储库,可从中安装最新且稳定的OpenVPN客户端版本。但是,您需要手动创建这些源列表,如下所示;

安装OpenVPN存储库签名密钥。

wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg| sudo apt-key add -

接下来,安装Ubuntu 18.04的源列表。

echo "deb http://build.openvpn.net/debian/openvpn/stable $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/openvpn-aptrepo.list

更新您的程序包缓存。

apt update

在Ubuntu 18.04上安装OpenVPN Client

apt install openvpn

然后,您可以通过运行以下命令来验证版本;

openvpn --version

在CentOS 8上安装OpenVPN Client

在CentOS 8上,EPEL回购协议提供了截至本文撰写时的最新OpenVPN版本2.4.8。

dnf info openvpn
Name         : openvpn
Version      : 2.4.8
Release      : 1.el8
Arch         : x86_64
Size         : 540 k
Source       : openvpn-2.4.8-1.el8.src.rpm
Repo         : epel
Summary      : A full-featured SSL VPN solution
URL          : https://community.openvpn.net/
License      : GPLv2
...

要在CentOS 8上安装OpenVPN客户端,您需要安装EPEL仓库(如果尚未安装);

dnf install epel-release

然后,您可以通过执行以下命令来安装OpenVPN客户端:

dnf install openvpn

在CentOS 8 / Ubuntu 18.04上配置OpenVPN Client

为了能够连接到OpenVPN服务器,您需要创建包含CA证书,客户端服务器证书和密钥的客户端配置。

如果您遵循了有关在CentOS 8上设置OpenVPN服务器的指南,我们描述了如何生成客户端证书文件和密钥。

生成密钥后,将其复制到客户端并记下它们的存储路径。

您还需要将HMAC密钥和CA证书复制到客户端。

然后,您可以创建OpenVPN客户端配置。

例如,要为客户端创建一个OpenVPN配置文件, 科罗米恰,其证书和密钥为, koromicha.crtkoromicha.key;

vim koromicha.ovpn
client
tls-client
pull
dev tun
proto udp4
remote 192.168.2.132 1194
resolv-retry infinite
nobind
#user nobody
#group nogroup
persist-key
persist-tun
key-direction 1
remote-cert-tls server
auth-nocache
comp-lzo
verb 3
auth SHA512
tls-auth ta.key 1
ca ca.crt
cert koromicha.crt
key koromicha.key

请注意,在此设置中,客户端证书,密钥,CA证书和HMAC密钥与OpenVPN客户端配置本身koromicha.ovpn位于同一路径。

ls
ca.crt koromicha.crt koromicha.key koromicha.ovpn ta.key

为了避免证书和密钥的路径出现问题,可以将它们内联在配置文件中;

client
tls-client
pull
dev tun
proto udp4
remote 192.168.2.132 1194
resolv-retry infinite
nobind
#user nobody
#group nogroup
persist-key
persist-tun
key-direction 1
remote-cert-tls server
auth-nocache
comp-lzo
verb 3
auth SHA512

-----BEGIN OpenVPN Static key V1-----
feb1af5407baa247d4e772c76aed6c75
...
-----END OpenVPN Static key V1-----


-----BEGIN CERTIFICATE-----
MIIDTjCCAjagAwIBAgIUX0VQrHTgLDabUUIOAf7tD9cGp4YwDQYJKoZIhvcNAQEL
...
WA9BBk2shVWfR849Lmkep+GPyqHpU47dZAz37ARB2Gfu3w==
-----END CERTIFICATE-----


Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
...
/7FvJaeLqmUHnvSs5eBlRZSgtOL19SCFkG0HXdnw3LtBaoHQXxgzOkDPW1+5
-----END CERTIFICATE-----


-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+DI7kg6MsRoCs
...
6WdLcNtWKAcU294xJEZoOA8/
-----END PRIVATE KEY-----

在所有需要连接到VPN的用户的所有客户端服务器上执行相同的操作。

如果您注意到了,下面的行将被注释以避免错误, 错误:Linux路由添加命令失败:外部程序退出,错误状态:2 通过刷新创建的路由,然后在重新连接时再次添加它们来解决。

#user nobody
#group nogroup

现在已准备好OpenVPN客户端配置文件。

然后,您可以按需连接到OpenVPN服务器,或者将服务器配置为在系统重启时建立VPN配置文件。

要按需连接,只需使用openvpn命令即可;

sudo openvpn client.ovpn

要么

sudo openvpn --config client.ovpn

如果与OpenVPN服务器的连接成功,您应该会看到一个 Initialization Sequence Completed

...
Wed Apr 14 15:23:19 2020 ROUTE_GATEWAY 10.0.2.2/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:8d:b0:f8
Wed Apr 14 15:23:19 2020 TUN/TAP device tun0 opened
Wed Apr 14 15:23:19 2020 TUN/TAP TX queue length set to 100
Wed Apr 14 15:23:19 2020 /sbin/ip link set dev tun0 up mtu 1500
Wed Apr 14 15:23:19 2020 /sbin/ip addr add dev tun0 10.8.0.3/24 broadcast 10.8.0.255
Wed Apr 14 15:23:19 2020 /sbin/ip route add 192.168.2.132/32 via 10.0.2.2
Wed Apr 14 15:23:19 2020 /sbin/ip route add 0.0.0.0/1 via 10.8.0.1
Wed Apr 14 15:23:19 2020 /sbin/ip route add 128.0.0.0/1 via 10.8.0.1
Wed Apr 14 15:23:19 2020 Initialization Sequence Completed

检查IP地址;

[[email protected] ~]$ ip add show tun0
6: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.3/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::8d65:4038:acb0:b954/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever
[email protected]:~$ ip add show tun0
10: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.2/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::bd3d:27ff:84d5:e587/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

测试两个远程服务器之间的连接;

[email protected]:~$ ping 10.8.0.3 -c 4
PING 10.8.0.3 (10.8.0.3) 56(84) bytes of data.
64 bytes from 10.8.0.3: icmp_seq=1 ttl=64 time=3.78 ms
64 bytes from 10.8.0.3: icmp_seq=2 ttl=64 time=3.59 ms
64 bytes from 10.8.0.3: icmp_seq=3 ttl=64 time=3.61 ms
64 bytes from 10.8.0.3: icmp_seq=4 ttl=64 time=3.30 ms

--- 10.8.0.3 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3007ms
rtt min/avg/max/mdev = 3.307/3.576/3.786/0.172 ms
[[email protected] ~]$ ping 10.8.0.2 -c 4
PING 10.8.0.2 (10.8.0.2) 56(84) bytes of data.
64 bytes from 10.8.0.2: icmp_seq=1 ttl=64 time=6.77 ms
64 bytes from 10.8.0.2: icmp_seq=2 ttl=64 time=1.57 ms
64 bytes from 10.8.0.2: icmp_seq=3 ttl=64 time=4.37 ms
64 bytes from 10.8.0.2: icmp_seq=4 ttl=64 time=13.6 ms

--- 10.8.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 15ms
rtt min/avg/max/mdev = 1.571/6.572/13.577/4.443 ms

您还应该能够访问Internet,具体取决于您的服务器路由设置。

将OpenVPN客户端作为系统服务运行

为了在服务器重启时自动建立连接,您可以启用OpenVPN客户端系统服务。

在执行此操作之前,请先从以下位置更改VPN配置文件的扩展名 .ovpn.conf。相应地替换文件名。

cp koromicha.ovpn koromicha.conf

复制 .conf 文件到OpenVPN客户端配置目录, /etc/openvpn/client

cp koromicha.conf /etc/openvpn/client

接下来,启动OpenVPN客户端系统服务。替换名称 科罗米恰 与.conf配置文件的名称。

systemctl start [email protected]koromicha

检查状态;

systemctl status [email protected]
● [email protected] - OpenVPN tunnel for koromicha
   Loaded: loaded (/lib/systemd/system/[email protected]; disabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-04-14 16:00:35 EAT; 8s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
 Main PID: 6877 (openvpn)
   Status: "Initialization Sequence Completed"
    Tasks: 1 (limit: 2300)
   CGroup: /system.slice/system-openvpnx2dclient.slice/[email protected]
           └─6877 /usr/sbin/openvpn --suppress-timestamps --nobind --config koromicha.conf

Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: Incoming Data Channel: Cipher 'AES-256-GCM' initialized with 256 bit key
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: ROUTE_GATEWAY 10.0.2.2/255.255.255.0 IFACE=enp0s3 HWADDR=08:00:27:4b:ff:18
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: TUN/TAP device tun0 opened
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: TUN/TAP TX queue length set to 100
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: /sbin/ip link set dev tun0 up mtu 1500
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: /sbin/ip addr add dev tun0 10.8.0.2/24 broadcast 10.8.0.255
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: /sbin/ip route add 192.168.2.132/32 via 10.0.2.2
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: /sbin/ip route add 0.0.0.0/1 via 10.8.0.1
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: /sbin/ip route add 128.0.0.0/1 via 10.8.0.1
Elb 14 16:00:37 ubuntu1804.kifarunix-demo.com openvpn[6877]: Initialization Sequence Completed

使它能够在系统启动时运行;

systemctl enable [email protected]

您已经在Ubuntu 18.04和CentOS 8上成功安装和设置了OpenVPN客户端。这使我们进入了如何在CentOS 8 / Ubuntu 18.04上安装和配置OpenVPN Client的教程的结尾。

Sidebar