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

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

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

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

  1. 的使用--client-connect script。这涉及执行指定的脚本,该脚本在客户端连接时在服务器上生成包含静态 IP 地址的文件。这种方法通常是首先要考虑的选择
  2. 的使用--client-config-dir。这涉及使用包含客户端静态 IP 地址的文件,根据其客户端证书通用名称 (CN)(第二选择)。
  3. 使用--ifconfig-poolfor 为动态 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 客户端,koromichajohndoe。要从客户端证书中提取通用名称,请使用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 选项为它们分配静态 IP 地址。例如,使用证书koromicha为公用名分配IP地址的10.8.0.50客户端,使用证书的客户端使用johndoeCN的IP地址为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 服务器;

systemctl restart openvpn-server@server

一定要经常检查日志;

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

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

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

sudo openvpn johndoe.ovpn

检查分配的IP地址;

ip add show tun0
8: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> 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: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> 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 地址的指南到此结束。

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:番茄网 » 为 OpenVPN 客户端分配静态 IP 地址

分享到: 生成海报

评论 抢沙发

  • QQ号
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

像番茄一样 表里如一

表里如一表里如一
切换注册

登录

忘记密码 ?

切换登录

注册

我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活