iptables學習筆記4 自定義鏈

2021-10-05 02:02:20 字數 2094 閱讀 8971

在第一篇文章裡,我們曾說過linux核心缺省內置了5條鏈,分別是prerouting、postrouting、input、output、forward,資料報流入和流出都會經過其中一些鏈。

那自定義鏈和上面的5條鏈有什麼區別呢?什麼情況下需要自定義鏈呢?或者說自定義鏈的好處是什麼?

區別:

自定義鏈和內建的鏈有乙個最大的區別就是:自定義鏈預設不會生效,需要在內建的5條鏈引用才會生效。怎麼引用呢?-j指定動作/自定義鏈。

對於自定義鏈怎麼和表關聯,這是由/sbin/iptables命令指定的,在建立自定義鏈的時候就關聯上了。

好處:

假設現在某台linux伺服器上有1000iptables規則,有些是針對mysql服務的,有些是針對nginx服務的,有些是針對sshd服務的。這時我們需要插入一條關於mysql的規則,限制只能172.16.0.0/16網段訪問。這時應該怎麼辦呢?我們在插入前需要把前面的1000規則中針對mysql服務的規則篩選出來,然後瀏覽一遍,最後在插入我們新增的規則。

這樣做是不是很麻煩啊,簡直是非常麻煩。此時應該怎麼辦呢?聰明的你一定想到自定義鏈的意義了。

假設我們有一條鏈叫in_mysql,它上面應用的規則全是針對mysql服務的,此時我們如果還想增加關於mysql服務的規則,直接在in_mysql鏈上修改就行了。

自定義鏈的好處就是,它可以將規則分類進行管理,讓操作人員管理起來更加清晰。但是自定義鏈預設不會使用,需要在內建的5條鏈上引用。

建立in_mysql

紅色方框內的是我們剛剛建立的自定義鏈

藍色方框內的是docker自己建立的自定義鏈。這裡先不管

括號內的資訊表示鏈的引用次數,1表示1次引用,0表示沒有引用

in_mysql鏈配置規則:只允許172.16.0.0/16網段訪問

input鏈中引用in_mysql

引用之後我們再來看現在的狀態,in_mysql鏈的引用次數已經變成了1,此時在看input鏈中的規則,target的值正是自定義鏈in_mysql趕快自己動手試試吧!

這篇我們講了自定義鏈的區別和好處,同時做了乙個示範,自定義鏈in_mysql

iptables學習筆記

一 三個表 1 filter 1 input 2 output 3 forward 2 nat 1 prerouting 2 postrouting 3 output 3 mangle 二 iptables 語法 iptables ai 鏈 input output forward log io 網...

Iptables學習筆記

前言 公司閘道器為一台linux伺服器,文中均為例項!一 概述 1 linux的防火牆體系工作在網路層,針對tcp ip資料報實施過濾和限制,屬於典型的包過濾防火牆。2 種類 netfilter和iptables通常都可以用來指linux防火牆,但二者區別如下 netfilter 指的是linux核...

Iptables 10 Iptables自定義鏈

之前我們一直在討論和使用預設的鏈,感覺已經滿足我們的需要了,但是這樣嗎?有沒有可能我們想針對某乙個服務自定義一條鏈,所有與之相關的規則都放在一起,這樣會更好管理,我們不用在一大堆雜亂的規則中花大量時間找出我們想要的規則 答案是可以的,我們現在便新建一條自己的鏈吧 現在我們想自定義一條與web相關的鏈...