The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

Linux 關於 TIME_WAIT 相關的問題

常用指令

    netstat -tnao

        查詢各連線的狀態與「斷線剩下的時間」( -o ) ( Timer )

    lsof
   
        目前開啟的檔案

    netstat -tna | cut -b 49- |grep TIME_WAIT | sort

        取出目前所有 TIME_WAIT 的連線 IP ( 排序過 )

小技巧

    快速將特定 IP 鎖定的方法

        架設你發現有問題的 IP 是 219.81.165.104

        # route add 219.81.165.104 gw 127.0.0.1 lo

        你可以透過 netstat -nr 指令看哪些被 blocked 的 IP

        # netstat -nr

        也可以將整個網段封鎖:

        # route add -net 192.67.16.0/24 gw 127.0.0.1 lo

        解除封鎖 IP 的方法

        # route del 219.81.165.104 gw 127.0.0.1 lo

        這實在是太酷了!因為你不用寫 iptables 規則就可以快速將 IP 封鎖!

常用檔案

    /proc/sys/net/ipv4/tcp_fin_timeout

        修改系統預設的 Timeout 時間 (單位: 秒)

        echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

     /etc/sysctl.conf

  以下設定可將連線快速關閉:
  
        # net.ipv4.tcp_tw_reuse = 1 表示開啟重用。
        # 允許將 TIME-WAIT sockets 重新用於新的 TCP 連接,預設為 0,表示關閉 reuse 功能!
        net.ipv4.tcp_tw_reuse = 0

        # net.ipv4.tcp_tw_recycle = 1 表示開啟 TCP 連接中 TIME-WAIT sockets 的快速回收,預設為 0
        net.ipv4.tcp_tw_recycle = 0

  此檔設定完要重開機
  
相關連結