如何使用 duplicate-cn 为 OpenVPN 服务器上的客户端设置静态 IP?

如何使用 duplicate-cn 为 OpenVPN 服务器上的客户端设置静态 IP?

要为具有不同证书的客户端设置静态 IP,我们可以为以下客户端设置静态 IPjdmorei 的回答。但是如果duplicate-cn在服务器端设置,让很多客户端共享同一个证书,如何为特定客户端设置静态IP?

答案1

谢谢使用 duplicate-cn 进行 IP 管理,我们可以使用--client-connect cmd为不同的客户端将不同的配置写入动态生成的临时文件。在OpenVPN 2.4 参考手册, 它说

OpenVPN's internal client IP address selection algorithm works as follows:

1 Use --client-connect script generated file for static IP (first choice).
2 Use --client-config-dir file for static IP (next choice).
3 Use --ifconfig-pool allocation for dynamic IP (last choice).

因此我们可以用这个脚本覆盖服务器ifconfig-pool。在我的例子中,我通过 IP 区分不同的客户端,并为特定客户端设置静态 IP。当出现特定 IP 时x.x.x.x,将为该客户端分配一个静态 IP 172.0.0.3。脚本client-connect

$ cat /etc/openvpn/client-connect.sh 
#!/bin/bash

if [ $trusted_ip = "x.x.x.x" ]; then
    echo "static ip triggered for" $trusted_ip  
    echo "ifconfig-push 172.0.0.3 255.255.255.0" >> ${@:-1}
else
    echo "still random ip for" $trusted_ip
fi

exit 0

ifconfig-pool我还在服务器端设置了,以避免与172.0.0.3

mode server
server 172.0.0.0 255.255.255.0 'nopool'
ifconfig-pool 172.0.0.16 172.0.0.128 255.255.255.0

相关内容