在管理伺服器時,偶爾會遇到某個 IP 被 Fail2ban 封鎖的情況。
這篇文章介紹如何:
- ✅ 查出是否被封
- ✅ 找出是哪個 jail 封鎖
- ✅ 正確解除封鎖
- ✅ 驗證是否完全清除
以下示例 IP 使用:
X.X.X.X
請替換為實際需要查詢的 IP。
✅ 第一步:查看 Fail2ban log
先從日誌確認是否曾被封鎖:
grep X.X.X.X /var/log/fail2ban.log
如果看到類似:
[sshd] Ban X.X.X.X
代表該 IP 曾被某個 jail 封鎖。
✅ 第二步:確認目前是否仍被封鎖
使用 fail2ban 內建查詢指令:
fail2ban-client banned X.X.X.X
如果該 IP 仍在封鎖名單中,會顯示對應 jail 名稱。
如果沒有任何輸出,代表目前沒有被 Fail2ban 封鎖。
✅ 第三步:解除封鎖(Unban)
若確認需要解除封鎖:
fail2ban-client unban X.X.X.X
這條指令會:
- 從所有 jail 中移除該 IP
- 同時更新防火牆規則
✅ 第四步:確認 firewall 是否已清除
Fail2ban 會透過 iptables 或 nftables 進行封鎖。
如果系統使用 iptables,可檢查:
iptables -L -n | grep X.X.X.X
若沒有任何輸出,表示防火牆規則已移除。
✅ 建議完整排查流程
grep X.X.X.X /var/log/fail2ban.log
fail2ban-client banned X.X.X.X
fail2ban-client unban X.X.X.X
fail2ban-client banned X.X.X.X
iptables -L -n | grep X.X.X.X
✅ 補充說明
- Fail2ban 只負責管理封鎖名單
- 真正丟棄封包的是防火牆規則
- 若 unban 後仍無法連線,應檢查是否有其他防火牆或 CDN 層封鎖
✅ 結語
正確的排查順序應為:
- 查 log
- 查 jail 狀態
- 執行 unban
- 驗證防火牆
避免直接重啟服務或修改設定,
精準排錯才是穩定運行的關鍵。