Linux не закрывает TCP-соединение после смены сети Wi-Fi

Linux не закрывает TCP-соединение после смены сети Wi-Fi

Есть некое 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
    

Связанный контент