要为具有不同证书的客户端设置静态 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