我有一个 openvpn 服务器,其配置如下:
ca ...
cert ...
key ...
dh ...
local ...
port 40000
proto udp
dev tun
server 192.168.100.0 255.255.252.0
ifconfig-pool-persist "/etc/openvpn/ipp.txt"
comp-lzo
persist-key
persist-tun
keepalive 10 120
client-to-client
tun-mtu 1500
fragment 1300
mssfix
--script-security 2
--client-connect "/etc/openvpn/vpn_conn_event.py"
--client-disconnect "/etc/openvpn/vpn_conn_event.py"
# Log
status "openvpn-status.log"
log "openvpn.log"
#log-append "openvpn.log"
verb 3
它工作得很好,并保持 IP 地址持久,但偶尔客户端的地址会发生变化,这非常令人沮丧。我进一步追踪了这个问题,发现当客户端(无论出于什么原因)打开新连接而旧连接尚未断开时,就会发生这种情况。以下是日志:
| DATE | Cert | assigned IP | Event |
| 25/04/2018 03:01:46 | abc | 192.168.101.18 | CONNECT |
| 25/04/2018 04:04:54 | abc | 192.168.100.66 | CONNECT |
| 25/04/2018 04:08:42 | abc | 192.168.101.18 | DISCONNECT|
| 25/04/2018 11:09:48 | abc | 192.168.100.66 | DISCONNECT|
因为这是有意义的,我希望 openvpn 服务器在打开新证书之前断开与该证书的任何现有客户端连接,从而保留 IP 地址。有办法实现这一点吗?请注意,dublicate-cn 选项在这里不起作用,因为它不能与 ifconfig-pool-persist 一起使用。
答案1
对于那些感兴趣的人,我将 ifconfig-pool-persist 设置更改为 client-config-dir 设置,并结合使用 ifconfig-push 语句,这最终使分配的 ip 保持稳定。偶尔仍会出现双重连接,我不知道为什么会发生这种情况。即使添加了 duplicate-cn 1 选项,这种情况仍会时不时发生。