Есть некое TCP-соединение между каким-то устройством за NAT (маршрутизатором Wi-Fi) и сервером, расположенным в Google Cloud, оба под управлением Ubuntu 16.04. Когда я изменил сеть Wi-Fi, это устройство сохраняет это соединение в состоянии "ESTABLISHED", хотя сервер его сбрасывает.
До изменения:
Сервер
root@server:~# netstat -natp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1810/crossbar-worker tcp 0 0 10.142.X.X:8080 73.XXX.XXX.XXX:49514 ESTABLISHED 1810/crossbar-worker
Клиент
root@client:~# netstat -natp | grep 8080 tcp 0 0 192.168.X.X:49514 35.XXX.XXX.XXX:8080 ESTABLISHED 9089/crossbar-worker
После изменения:
Сервер
root@server:~# netstat -natp | grep 8080 tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1810/crossbar-worker
Клиент
root@client:~# netstat -natp | grep 8080 tcp 0 0 192.168.X.X:49514 35.XXX.XXX.XXX:8080 ESTABLISHED 9089/crossbar-worker
Почему мое устройство не разрывает TCP-соединение?
Дополнительная информация: TCP keepalive
Сервер
root@server:~# grep -H '' /proc/sys/net/ipv4/tcp_keepalive* /proc/sys/net/ipv4/tcp_keepalive_intvl:75 /proc/sys/net/ipv4/tcp_keepalive_probes:9 /proc/sys/net/ipv4/tcp_keepalive_time:7200
Клиент
root@client:~# grep -H '' /proc/sys/net/ipv4/tcp_keepalive* /proc/sys/net/ipv4/tcp_keepalive_intvl:75 /proc/sys/net/ipv4/tcp_keepalive_probes:9 /proc/sys/net/ipv4/tcp_keepalive_time:7200