У меня есть 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.
Для тех, кто заинтересован, я перешел с настройки ifconfig-pool-persist на настройку client-config-dir в сочетании с оператором ifconfig-push, который, наконец, сохраняет стабильный IP-адрес назначения. Иногда встречаются двойные связи, и я понятия не имею, почему они случаются. Даже после добавления опции duplicate-cn 1 время от времени это все равно происходит.