更改Wi-Fi网络后,Linux不会关闭TCP连接


1

在Ubuntu 16.04下,NAT(Wi-Fi路由器)和位于Google Cloud的服务器之间的某些设备之间存在一些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 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
    

请包括输出 grep -H '' /proc/sys/net/ipv4/tcp_keepalive* 来自两个系统( 编辑 这个信息进入问题)。
Kamil Maciorowski

1
只要客户端和服务器都不发送 FIN 并且超时(参见@KamilMaciorowski的评论)不会超过连接停留 既定 ...
tink
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.