Linux使用iptables實現IP訪問限制與解除限制的詳細教程
在Linux服務器運維中,iptables是一款強大的防火墻工具,常用于IP訪問控制、端口管理等場景。本文將聚焦“IP訪問限制”與“限制解除”兩大核心需求,結合實戰(zhàn)命令詳細拆解操作流程,適合運維新手及需要快速解決問題的開發(fā)者參考。
核心場景:當我們需要禁止某個特定IP(如惡意攻擊IP、非法訪問IP)訪問服務器時,可通過iptables添加DROP規(guī)則;后續(xù)若需恢復該IP訪問權限,則需精準刪除對應限制規(guī)則。本文以192.168.1.101 為例進行演示。
一、前置知識:iptables基礎規(guī)則說明?
在操作前,先明確幾個核心概念,避免誤操作:?
鏈(Chain):iptables默認包含INPUT(入站規(guī)則)、OUTPUT(出站規(guī)則)、FORWARD(轉發(fā)規(guī)則)等鏈,IP訪問限制主要操作INPUT鏈(控制外部IP訪問服務器)。?
目標動作(Target):
規(guī)則優(yōu)先級:iptables按規(guī)則添加順序匹配,匹配到第一條符合條件的規(guī)則后,不再執(zhí)行后續(xù)規(guī)則。
二、實戰(zhàn)1:添加IP訪問限制(禁止特定IP訪問)
需求:禁止IP192.168.1.101訪問服務器(入站方向)。
2.1 核心命令(添加限制規(guī)則)
iptables -A INPUT -s 192.168.1.101 -j DROP
2.2 命令參數詳解
- -A:Append(追加),將規(guī)則添加到指定鏈的末尾;
- INPUT:指定操作的鏈為入站鏈;
- -s:Source(源IP),指定需要限制的IP地址(此處為
192.168.1.101,支持網段,如192.168.1.0/24); - -j:Jump(跳轉),指定匹配規(guī)則后執(zhí)行的目標動作(此處為DROP,丟棄數據包)。
2.3 驗證限制是否生效
添加規(guī)則后,可通過以下命令查看INPUT鏈規(guī)則,確認規(guī)則已添加:
iptables -nL INPUT --line-numbers
輸出結果類似如下(重點看包含192.168.1.101的規(guī)則):
Chain INPUT (policy ACCEPT) num target prot opt source destination 1 DROP all -- 192.168.1.101 0.0.0.0/0 2 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
說明:num列是規(guī)則編號(后續(xù)刪除需用到),source列顯示限制的IP,target列顯示動作(DROP),表示規(guī)則已生效。
三、實戰(zhàn)2:解除IP訪問限制(恢復特定IP訪問)
需求:后續(xù)若需恢復IP 192.168.1.101 的訪問權限,需刪除上述添加的DROP規(guī)則。推薦兩種方法,優(yōu)先選擇“精準刪除”(避免影響其他規(guī)則)。
方法1:按規(guī)則編號精準刪除(推薦)
此方法需先獲取限制規(guī)則的編號,再刪除,適合規(guī)則較多的場景。
- 步驟1:查看規(guī)則編號:執(zhí)行以下命令,獲取
192.168.1.101對應規(guī)則的num值(參考2.3節(jié),假設編號為1):iptables -nL INPUT --line-numbers - 步驟2:刪除指定編號的規(guī)則:
iptables -D INPUT 1參數說明:-D(Delete,刪除),INPUT為鏈名,1為規(guī)則編號。
方法2:按規(guī)則內容直接刪除(無需查編號)
若明確知道添加限制時的完整命令,可直接按規(guī)則內容刪除,適合規(guī)則較少的場景:
iptables -D INPUT -s 192.168.1.101 -j DROP
說明:此命令與添加規(guī)則的命令僅將-A(追加)改為-D(刪除),即可精準匹配并刪除目標規(guī)則。
方法3:臨時清空INPUT鏈所有規(guī)則(慎用)
若僅用于臨時測試,且不在乎清空INPUT鏈的所有規(guī)則(包括其他合法規(guī)則),可執(zhí)行:
iptables -F INPUT
警告:此命令會刪除INPUT鏈下所有規(guī)則,可能導致服務器暴露風險,僅臨時測試時使用,生產環(huán)境嚴禁隨意執(zhí)行!
驗證限制是否解除
刪除規(guī)則后,再次執(zhí)行以下命令查看INPUT鏈:
iptables -nL INPUT
若輸出結果中無“192.168.1.101 + DROP”的條目,說明限制已成功解除。
四、關鍵補充:保存iptables規(guī)則(避免重啟失效)
注意:上述添加/刪除規(guī)則的操作僅在當前系統(tǒng)運行時有效,服務器重啟后規(guī)則會全部丟失!需執(zhí)行保存命令,將規(guī)則持久化到配置文件。
不同Linux發(fā)行版的保存命令略有差異,重點介紹兩種主流系統(tǒng):
4.1 CentOS/RHEL 系統(tǒng)
# 方法1:通過service命令保存 service iptables save # 方法2:直接導出規(guī)則到配置文件(推薦) iptables-save > /etc/sysconfig/iptables
4.2 Debian/Ubuntu 系統(tǒng)
Debian/Ubuntu默認未安裝規(guī)則持久化工具,需先安裝iptables-persistent:
# 安裝工具 apt update && apt install iptables-persistent -y # 保存IPv4規(guī)則(核心) iptables-save > /etc/iptables/rules.v4 # 若需保存IPv6規(guī)則(可選) ip6tables-save > /etc/iptables/rules.v6
五、常見問題與注意事項
- 問題1:執(zhí)行iptables命令提示“Permission denied”:原因是未使用root權限,需在命令前加
sudo(如sudo iptables -A INPUT ...)或切換到root用戶(su - root)。 - 問題2:刪除規(guī)則后仍無法訪問:可能是存在其他限制規(guī)則(如網段限制),可通過
iptables -nL INPUT --line-numbers全面檢查;或存在防火墻疊加(如firewalld、ufw),需關閉其他防火墻或同步規(guī)則。 - 注意事項1:添加規(guī)則時,避免誤將自己的IP加入DROP列表,否則會導致無法遠程連接服務器(解決方案:若有物理機訪問權限,直接在服務器本地操作刪除規(guī)則;若無物理機權限,需聯系機房運維)。
- 注意事項2:生產環(huán)境中,建議先添加ACCEPT規(guī)則(如允許管理員IP訪問),再添加DROP規(guī)則,避免鎖死自己。示例:
# 先允許管理員IP(如192.168.1.100)訪問iptables -A INPUT -s 192.168.1.100 -j ACCEPT# 再禁止目標IP訪問 iptables -A INPUT -s 192.168.1.101 -j DROP
六、總結
本文通過實戰(zhàn)案例講解了iptables添加IP限制(iptables -A INPUT -s 目標IP -j DROP)與解除限制(按編號/內容刪除規(guī)則)的完整流程,核心要點如下:
- 精準刪除規(guī)則是首選,避免使用清空鏈命令(
iptables -F); - 規(guī)則添加/刪除后,務必保存規(guī)則,防止重啟失效;
- 操作前優(yōu)先查看規(guī)則(
iptables -nL INPUT --line-numbers),避免誤操作。
以上就是Linux使用iptables實現IP訪問限制與解除限制的詳細教程的詳細內容,更多關于Linux iptables實現IP訪問與解除限制的資料請關注腳本之家其它相關文章!
相關文章
新版ubuntu20.04 使用root用戶登錄系統(tǒng)的詳細教程
這篇文章主要介紹了新版ubuntu20.04 使用root用戶登錄系統(tǒng)的詳細教程,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
在Linux/WSL2環(huán)境下安裝和配置Claude Code的全過程
這篇文章就帶你從0開始,在Linux/WSL2環(huán)境下完成安裝、API配置到成功啟動的Claude Code 全流程,我會用API中轉服務簡化 國內直連,避免翻 墻和海外賬戶問題,盡量把每個步驟講清楚,讓你少踩坑,需要的朋友可以參考下2026-05-05
Apache提示 the requested operation has failed無法啟動的解決方法大全
這是我這兩天頻繁遇到的問題。Apache服務器還真是問題少年!任何點改動都可能導致它無法使用,下面結合網上搜來的內容,總結下自己關于此問題的解決方法,分享給大家2014-08-08

