在 CentOS 8/Ubuntu 18.04 上安装和配置 OpenVPN 客户端

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

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

在 CentOS 8 上设置 OpenVPN 服务器

在 CentOS 8/Ubuntu 18.04 上安装和配置 OpenVPN 客户端

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

在 Ubuntu 18.04 上安装 OpenVPN 客户端

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 客户端

apt install openvpn

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

openvpn --version

在 CentOS 8 上安装 OpenVPN 客户端

在 CentOS 8 上,在撰写本文时,最新的 OpenVPN 版本 2.4.8 由 EPEL 存储库提供。

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 客户端

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

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

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

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

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

例如,为客户端koromicha创建 OpenVPN 配置文件,其证书和密钥为koromicha.crt和koromicha.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
<tls-auth>
-----BEGIN OpenVPN Static key V1-----
feb1af5407baa247d4e772c76aed6c75
...
-----END OpenVPN Static key V1-----
</tls-auth>
<ca>
-----BEGIN CERTIFICATE-----
MIIDTjCCAjagAwIBAgIUX0VQrHTgLDabUUIOAf7tD9cGp4YwDQYJKoZIhvcNAQEL
...
WA9BBk2shVWfR849Lmkep+GPyqHpU47dZAz37ARB2Gfu3w==
-----END CERTIFICATE-----
</ca>
<cert>
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number:
...
/7FvJaeLqmUHnvSs5eBlRZSgtOL19SCFkG0HXdnw3LtBaoHQXxgzOkDPW1+5
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+DI7kg6MsRoCs
...
6WdLcNtWKAcU294xJEZoOA8/
-----END PRIVATE KEY-----
</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地址;

[koromicha@centos8 ~]$ ip add show tun0
6: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> 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
koromicha@ubuntu1804:~$ ip add show tun0
10: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> 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

测试两台远程服务器之间的连通性;

koromicha@ubuntu1804:~$ 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
[koromicha@centos8 ~]$ 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

根据您的服务器路由设置,您还应该能够访问互联网。

将 OpenVPN 客户端作为 Systemd 服务运行

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

你可以做到这一点之前,改变你的VPN配置文件从扩展.ovpn到.conf。相应地替换文件名。

cp koromicha.ovpn koromicha.conf

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

cp koromicha.conf /etc/openvpn/client

接下来,启动 OpenVPN 客户端 systemd 服务。将名称koromicha替换为.conf 配置文件的名称。

systemctl start openvpn-client@koromicha

检查状态;

systemctl status openvpn-client@koromicha
● openvpn-client@koromicha.service - OpenVPN tunnel for koromicha
   Loaded: loaded (/lib/systemd/system/openvpn-client@.service; 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-openvpn\x2dclient.slice/openvpn-client@koromicha.service
           └─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 openvpn-client@koromicha

您已经在 Ubuntu 18.04 和 CentOS 8 上成功安装和设置了 OpenVPN 客户端。到此我们结束了关于如何在 CentOS 8/Ubuntu 18.04 上安装和配置 OpenVPN 客户端的教程。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容