Linux は Wi-Fi ネットワークを変更しても TCP 接続を閉じません

Linux は Wi-Fi ネットワークを変更しても TCP 接続を閉じません

NAT の背後にあるデバイス (Wi-Fi ルーター) と Google Cloud にあるサーバー (どちらも Ubuntu 16.04) の間には TCP 接続があります。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 キープアライブ

  • サーバ

    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
    

関連情報