iptabels預定義了4表,分别是raw表,mangle表,nat表,filter表,不同的表擁有不同的功能。
以filter表為例,它主要進行資料包的過濾,比如允許哪些IP位址通路,拒絕哪些IP位址;允許通路哪些端口,禁止通路哪些端口,filter會根據我們定義的規則進行過濾。
檢視filter表中的規則
-t選項,指定要操作的表,使用-L選項,檢視-t選項對應的表的規則
上圖中,顯示出三條鍊:INPUT鍊、OUTPUT鍊、FORWARD鍊,每條鍊中都有自己的規則;
例如,我們需要禁止某個IP位址通路我們的主機,則需要在INPUT鍊上定義規則;在生産環境中,在哪條鍊上定義規則,取決于實際的工作場景,是以,如果我們想要禁止某些封包發往本機,我們隻能在
PREROUTING
和 INPUT
鍊中定義規則;但是 PREROUTING
鍊并不存在于 filter
表中,換句話說就是,PREROUTING鍊本身就沒有過濾資料包的能力,是以我們隻能在INPUT鍊中定義規則。
檢視指定鍊的規則,省略-t選項預設為filter表
使用-v選項檢視更多、更詳細的内容: 字段的含義:pkts # 對應規則比對到的封包的個數
bytes # 對應比對到的封包包的大小總數
target # 規則對應的“動作”,即規則比對成功後需要采取的措施
prot # 規則對應的協定,是否隻針對某些協定應用此規則
opt # 規則對應的選項
in # 表示資料包由哪個網卡流入,可以設定通過哪塊網卡流入的封包需要比對的規則
out # 表示資料包由哪個網卡流出,可以設定通過哪塊網卡流出的封包需要比對的規則
source # 規則對應的源位址,IP、網段
destination # 規則對應的目标位址,IP或網段
圖中的源位址和目标位址都為anywhere,iptables預設為我們進行了位址解析,但是在規則非常多的情況下如果進行位址解析,效率會比較低,是以可以使用-n選項,表示不對IP位址進行解析,直接顯示IP位址。
--line-numbers可顯示規則的編号,如下:
可以看到圖中每個鍊的括号中都有一些資訊,分别表示什麼呢?
1.policy:表示目前鍊的預設政策,policy ACCEPT表示上圖中INPUT鍊的預設動作為ACCEPT,預設接受通過INPUT鍊的所有請求;
我們在配置INPUT鍊的具體規則是,應該将需要拒絕的請求配置到規則中,設定“黑名單”機制。
2.packets:表示目前鍊預設政策比對到的包的數量;0 packets表示預設政策比對到0個包。
3.bytes:表示目前鍊預設政策比對到的所有包的大小總和。
指令總結
1.
iptables -t [表名] -L
檢視對應表的所有規則,-t指定表,可省略,預設為filter表;-L表示列出規則
2.
iptables -t [表名] -L [鍊名]
檢視指定表中指定鍊中的規則
3.
iptables -t [表名] -v -L
檢視指定表中所有規則,并顯示出更詳細的資訊
4.
iptables -t [表名] -n -L
檢視表中所有規則,-n選項表示不進行IP位址解析
5.
iptables -t [表名] -L --line-numbers
檢視表中所有規則,--line-numbers選項表示顯示規則的序号,可簡寫為--line