У меня есть сервер openvpn, который позволяет входящие соединения от нескольких мобильных клиентов. Мобильные клиенты представляют собой встроенные платформы linux с двумя возможными маршрутами в Интернет: сотовый интерфейс и интерфейс Wi-Fi. Мобильные клиенты проводят много времени вне зоны действия доступного Wi-Fi. Поэтому большую часть времени они будут использовать шлюз сотового Интернета. Когда вы находитесь в зоне действия сети Wi-Fi, появляется интерфейс Wi-Fi, и маршрут по умолчанию изменяется на интерфейс Wi-Fi.
Проблема: когда появляется интерфейс Wi-Fi, маршрут по умолчанию изменяется на использование интерфейса Wi-Fi, поэтому клиент openvpn начинает отправлять пакеты через интерфейс Wi-Fi. Эти пакеты поступают на сервер, но сервер их игнорирует. Я думал, что, поскольку на сервере нет удаленной директивы, он должен автоматически разрешать клиенту «плавать» на новый адрес, поэтому сервер должен распознавать пакеты, исходящие от клиента, и немедленно начинать отвечать на новый маршрут. Вместо этого я вижу, как серверные эхо-запросы поддержки активности поступают на сотовый интерфейс клиента, и я вижу, как клиентские эхо-запросы поддержки активности поступают на сервер через его интерфейс Wi-Fi. В конце концов Inactivity timeout (--ping-restart)
сбрасывает старое соединение, и новое соединение успешно устанавливается через интерфейс Wi-Fi. Почему сервер не позволяет клиенту плавать?
Конфигурация сервера:
dev tun0
topology subnet
mode server
tls-server
duplicate-cn
push "topology subnet"
ifconfig 10.0.0.1 255.255.255.0
ifconfig-pool 10.0.0.200 10.0.0.254 255.255.255.0
port 12345
proto udp
persist-key
persist-tun
comp-lzo
ca /etc/openvpn/ssl/tmvca-cacert.pem
cert /etc/openvpn/ssl/principal-cert.pem
key /etc/openvpn/ssl/principal-key.pem
dh /etc/openvpn/ssl/dh1024.pem
username-as-common-name
keepalive 50 120
client-to-client
user nobody
group nogroup
verb 3
float
Конфигурация клиента:
client
remote mydomain.com 12345
nobind
proto udp
mssfix 1400
persist-key
persist-tun
dev tun
ns-cert-type server
resolv-retry infinite
ca /opt/odp/openvpn/ca.pem
cert /opt/odp/openvpn/crt.pem
key /opt/odp/openvpn/key.pem
dh /opt/odp/openvpn/dh1024.pem
comp-lzo
verb 3
syslog ovpn-gw
auth-user-pass /opt/odp/openvpn/auth.passwd
writepid "/tmp/ovpn-gw.pid"
tls-remote principal
tls-exit
ipchange /opt/odp/scripts/ipchange.sh
script-security 2
Глядя на форум openvpn, кажется, что это проблема, я нашел патч, который, возможно, может вам помочь https://community.openvpn.net/openvpn/attachment/ticket/49/tlsfloat.patch