之前我們一直在討論和使用預設的鏈,感覺已經滿足我們的需要了,但是這樣嗎?
有沒有可能我們想針對某乙個服務自定義一條鏈,所有與之相關的規則都放在一起,這樣會更好管理,我們不用在一大堆雜亂的規則中花大量時間找出我們想要的規則;答案是可以的,我們現在便新建一條自己的鏈吧
現在我們想自定義一條與web相關的鏈,先不管規則定義,怎麼才能定義一條鏈呢?答案是使用 -n 選項
iptables -t filter -n in_web
上述命令表示,我們要在表 filter 上新建一條名叫 in_web 的鏈,檢視一下iptables的相關資訊
可以看到資訊中比之前多了一條鏈,即"chain in_web (0 reference)" ;這條自定義鏈的引用計數為0,也就是說,這條鏈沒有被任何一條預設鏈引用,此時它是不會有任何作用的,即使裡面有規則
為了讓我們自定義的鏈能夠正常使用,就需要在預設鏈引用它,如我現在想在input鏈引用 in_web 鏈
如圖,我們先在in_web鏈定義了一條規則,然後又在input鏈引用了in_web鏈,可以看到,input鏈的target欄位的值為in_web,表示該input規則匹配條件成功會怎麼做(使用in_web鏈);然後可以看到in_web鏈的引用計數也變成了1,這表示有一條預設鏈引用了in_web鏈
有可能我們並不想使用in_web鏈這個名字了,想把它變成web鏈,我們可以使用 -e 選項
可以看到,我們使用上述命令後,in_web 鏈重新命名為了web ;
那如果不想要web鏈了,需要刪除它,可以使用 -x 選項刪除自定義鏈,但是刪除需要滿足兩個條件
iptables -x web
可以看到刪除失敗,因為之前我們在web 鏈中定義了規則,並且在input鏈引用了web鏈,這就使得刪除鏈的條件不滿足;
要想刪除web鏈,就必須找到input鏈中引用web鏈的規則,將之刪除,然後再清除web鏈的所有規則
由於input鏈中唯一的規則便是引用了web鏈的,所以刪除序號為1的規則便刪除了引用web鏈的規則;然後我們使用了 -f 選項清空了web鏈的所有規則,此時web鏈便是一條無引用,無規則的自定義鏈,滿足刪除鏈的條件,可以被刪除
【iptables】iptables目錄
【iptables】11 iptables之網路防火牆
iptables學習筆記4 自定義鏈
在第一篇文章裡,我們曾說過linux核心缺省內置了5條鏈,分別是prerouting postrouting input output forward,資料報流入和流出都會經過其中一些鏈。那自定義鏈和上面的5條鏈有什麼區別呢?什麼情況下需要自定義鏈呢?或者說自定義鏈的好處是什麼?區別 自定義鏈和內建...
Linux 下iptables自定義鏈簡單操作
1.檢視規則 iptables line nvl 顯示行號更詳細資訊 iptables nl root ubuntu iptables nl chain input policy accept target prot opt source destination drop icmp 0.0.0.0 ...
iptables 定義規則
iptables定義規則的方式大概是這種格式 iptables t table command chain cretiria j action t 表名 指定要操作的表 command 定義策略 chain 指定要操作的鏈 cretiria 定義匹配的標準 分為多個標準 j target 策略進行的...