﻿# 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

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

-   [/var/log/messages: Too many files open](http://www.linuxquestions.org/questions/linux-newbie-8/varlogmessages-too-many-files-open-335384/?highlight=time_wait)
-   [Warning, got duplicate tcp line – netstat error and solution](http://www.cyberciti.biz/faq/warning-got-duplicate-tcp-line-netstat-error-and-solution/)
-   [How do I Drop or block attackers IP with null routes?](http://www.cyberciti.biz/tips/how-do-i-drop-or-block-attackers-ip-with-null-routes.html)
-   調整網路TCP TIME\_WAIT,快速釋放connection
