更改默认路由接口时保持 openvpn 连接

更改默认路由接口时保持 openvpn 连接

我有一个 openvpn 服务器,它允许来自多个移动客户端的传入连接。移动客户端是嵌入式 Linux 平台,具有两种可能的互联网路由:蜂窝接口和 wifi 接口。移动客户端花费大量时间在任何可用 wifi 范围之外。因此,大多数时候它们将使用蜂窝互联网网关。当处于 wifi 网络范围内时,wifi 接口将启动,默认路由将更改为 wifi 接口。

问题:当 wifi 接口启动时,默认路由会更改为使用 wifi 接口,因此客户端 openvpn 开始从 wifi 接口发送数据包。这些数据包到达服务器,但服务器会忽略它们。我认为,由于服务器没有设置远程指令,它应该自动允许客户端“浮动”到新地址,因此服务器应该识别来自客户端的数据包并立即开始响应新路由。相反,我看到服务器的 keepalive ping 到达客户端的蜂窝接口,我看到客户端的 keepalive ping 从其 wifi 接口到达服务器。最终Inactivity timeout (--ping-restart)重置旧连接,并通过 wifi 接口成功建立新连接。为什么服务器不让客户端浮动?

服务器配置:

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

答案1

查看 openvpn 论坛,这似乎是一个已知问题,我找到了一个补丁,也许可以帮助你https://community.openvpn.net/openvpn/attachment/ticket/49/tlsfloat.patch

相关内容