2011-09-14 73 views
61

我從來沒有使用過iptables,並且在線文檔似乎有點不透明。iptables阻止訪問端口8000除IP地址

我想阻止我的服務器上的端口8000的所有請求,除了那些來自特定IP地址的端口。我如何使用iptables來做到這一點?

+1

//,你會如此友善地分享不透明文檔的鏈接嗎? –

回答

111

此問題應該在Server Fault。然而,接下來應該做的伎倆,假設你在談論TCP並且要允許IP爲1.2.3.4:

iptables -A INPUT -p tcp --dport 8000 -s 1.2.3.4 -j ACCEPT 
iptables -A INPUT -p tcp --dport 8000 -j DROP 
+3

你將如何去扭轉你在這裏設置的ip/port限制? (萬一我想在將來撤消這個) – tester

+4

測試人員,刪除的東西,請參考此 - http://stackoverflow.com/questions/10197405/iptables-remove-specific-rules –

+2

我知道這是比較舊的,這完全釘了我所需要的。而且由於無論如何答案已被接受,你如何做一個具體的IP範圍相同的事情?謝謝! :) – jagc

14

另一種選擇是;

sudo iptables -A INPUT -p tcp --dport 8000 -s ! 1.2.3.4 -j DROP 

我有類似問題的3橋的虛只需要使用不同的組合訪問海誓山盟,所以我測試了這個命令,而且運作良好。

編輯**

據費爾南多評論這link感嘆號 (!)將被置於前比-s參數:

sudo iptables -A INPUT -p tcp --dport 8000 ! -s 1.2.3.4 -j DROP 
+1

感嘆號('!')現在必須放在'-s'參數之前:'sudo iptables -A INPUT -p tcp --dport 8000 -s! 1.2.3.4 -j DROP'。 –

+1

@FernandoSilveira謝謝,我已更新 – HRgiger

4

您可以隨時使用iptables來刪除規則。如果您有很多規則,請使用以下命令輸出它們。

iptables-save > myfile 

vi從commend行編輯它們。只需使用「dd」刪除不再需要的行。

iptables-load < myfile and you're good to go. 

記住,如果您不要配置OS保存規則到一個文件,然後加載程序文件的規則將失去在啓動過程中。

+3

在Debian上沒有iptables-load,但iptables-restore iptables-restore