为OpenVPN客户端分配静态IP地址

在本指南中,我们将学习如何为OpenVPN客户端分配静态IP地址。例如,在大多数情况下,如果您的环境中有一些控件,这些主机要求主机具有静态IP地址才能管理此类控件,则很可能需要为您的特定客户端分配一个静态IP地址。 OpenVPN支持静态IP地址的分配。

为OpenVPN客户端分配静态IP地址

OpenVPN可以从定义的IP池中为客户端分配特定的IP地址。为此,它使用三种类型的客户端IP地址选择算法。这些包括按照使用的顺序;

  1. 用于 --client-connect script。这涉及执行指定的脚本,该脚本在客户端连接时在服务器上生成包含静态IP地址的文件。这种方法通常是 第一选择 被考虑。
  2. 用于 --client-config-dir。这涉及使用一个文件,该文件包含根据客户端的客户端证书公用名(CN)为客户端提供的静态IP地址(第二选择)。
  3. 用于 --ifconfig-pool 用于动态IP(最后选择)。

有关更多信息,请咨询 man openvpn

在本指南中,我们将使用第二个选项,在该选项中,我们将配置OpenVPN服务器以读取特定文件,该文件包含客户端公用名和映射的IP地址。这样可以确保根据客户端证书上定义的通用名称为连接的客户端分配静态IP地址。

在之前的指南中,我们介绍了在CentOS 8系统上安装和配置OpenVPN服务器的过程。

创建一个文件来存储静态IP地址

使用 client-config-dir 选项,要求将分配给连接客户端的静态IP地址存储在OpenVPN服务器可以读取的文件中。

因此,打开OpenVPN服务器配置文件, /etc/openvpn/server/server.conf,然后将静态IP分配文件的路径设置为 client-config-dir 参数。

vim /etc/openvpn/server/server.conf
...
# EXAMPLE: Suppose you want to give
# Thelonious a fixed VPN IP address of 10.9.0.1.
# First uncomment out these lines:
client-config-dir /etc/openvpn/ccd
...

在此演示中,我们设置了将静态/固定IP地址分配文件存储到的路径, /etc/openvpn/ccd。好吧,我尝试使用默认的/ etc / openvpn / server / ccd路径,但它导致以下错误;

Could not access file 'ccd/koromicha': Permission denied (errno=13)
Could not access file 'ccd/DEFAULT': Permission denied (errno=13)

因此,作为一种解决方法,我们选择了使用其他路径,如上所述。

为OpenVPN客户端分配静态IP地址

对于要向其分配静态IP地址的每个OpenVPN客户端,您需要从该特定客户端证书中提取通用名称。

在我们的演示中,我们创建了两个OpenVPN客户端, 科罗米恰约翰多。要从客户端证书中提取公用名,请使用 openssl 命令如下所示。 确保替换客户端证书

openssl x509 -subject -noout -in /etc/openvpn/client/koromicha/koromicha.crt
subject=CN = koromicha
openssl x509 -subject -noout -in /etc/openvpn/client/johndoe/johndoe.crt
subject=CN = johndoe

有了客户端的通用名称后,您就可以使用 ifconfig-push 选项。例如,使用证书分配客户端 koromicha 作为通用名称的IP地址, 10.8.0.50 和客户端使用证书与 johndoe 作为CN的IP地址 10.8.0.60,这就是完成分配的方式;

echo "ifconfig-push 10.8.0.50 255.255.255.0" > /etc/openvpn/ccd/koromicha
echo "ifconfig-push 10.8.0.60 255.255.255.0" > /etc/openvpn/ccd/johndoe

请注意,如何分配静态IP地址取决于您配置的OpenVPN服务器拓扑。在本例中,我们将拓扑设置为子网。

# Network topology
...
topology subnet

阅读更多 OpenVPN寻址概念

重新启动OpenVPN服务器;

systemctl restart [email protected]

确保始终检查日志;

tail -f /var/log/openvpn/openvpn.log

在OpenVPN客户端上验证静态IP地址分配

假设您的客户端上已经具有相应的客户端OpenVPN配置文件,请启动连接并验证IP地址分配。

sudo openvpn johndoe.ovpn

检查分配的IP地址;

ip add show tun0
8: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.60/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::ea62:fbae:5b45:2d78/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

在另一个客户端上;

ip add show tun0
12: tun0:  mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.50/24 brd 10.8.0.255 scope global tun0
       valid_lft forever preferred_lft forever
    inet6 fe80::c928:c76d:fbd4:6c6a/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

检查两个客户端之间的连接;

ping 10.8.0.60 -c 3
PING 10.8.0.60 (10.8.0.60) 56(84) bytes of data.
64 bytes from 10.8.0.60: icmp_seq=1 ttl=64 time=4.67 ms
64 bytes from 10.8.0.60: icmp_seq=2 ttl=64 time=3.86 ms
64 bytes from 10.8.0.60: icmp_seq=3 ttl=64 time=4.05 ms

--- 10.8.0.60 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2003ms
rtt min/avg/max/mdev = 3.864/4.196/4.670/0.351 ms

这就对了。我们已经结束了有关如何为OpenVPN客户端分配静态IP地址的指南。

在Ubuntu 18.04 / CentOS 8上配置StrongSwan VPN客户端

Sidebar