在 Linux 伺服器管理中,有時需要立即中斷某個 IP 的現有連線,例如:
- fail2ban 已經 Ban IP
- iptables 規則已生效
- 但既存 TCP 連線仍在持續
這時不必重啟服務,可以使用:
ss -K
來精準關閉指定連線。
什麼是 ss?
ss(Socket Statistics)是用來查看 socket 連線狀態的工具,
功能比舊版 netstat 更完整、更快速。
ss -K 是什麼?
-K = Kill
意思是:
強制關閉符合條件的 TCP 連線
它會透過 kernel 直接發送 TCP RST,立即中斷連線。
基本用法
中斷某個來源 IP 的所有連線
ss -K src 20.91.210.252
意思是:
關閉所有「來源為 20.91.210.252」的 TCP 連線
⚠ 在伺服器上,攻擊者是來源(source),
所以必須使用 src。
查看是否有連線存在
執行前可先確認:
ss -ant | grep 20.91.210.252
如果看到:
ESTAB
代表仍有已建立連線,可以使用 ss -K 中斷。
常見錯誤
❌ 錯誤寫法:
ss -K dst 20.91.210.252
在伺服器端通常應該使用 src,
否則可能找不到對應連線。
與重啟服務的差別
| 方法 | 影響範圍 |
|---|---|
| restart Apache | 所有使用者 |
| ss -K src IP | 只有指定 IP |
使用 ss -K 可以精準操作,而不影響正常流量。
權限需求
必須使用 root 執行:
Operation not permitted
代表權限不足。
小結
ss -K 是一個非常實用的進階網路管理指令:
- 可立即中斷指定 IP 連線
- 不必重啟服務
- 不影響其他使用者
- 適用於安全事件處理
在需要精準控制 TCP 連線時,是比重啟服務更優雅的做法。