1. 程式人生 > >iptables 語法、iptables filter表小案例

iptables 語法、iptables filter表小案例

iptables 語法 iptables filter表小案例

1、iptables 語法

技術分享圖片

查看規則,輸入命令 iptables -nvL ,回車,見下圖,
技術分享圖片
現在重啟下,再查看,見下圖,
技術分享圖片
可以看到,規則沒有改變。那麽規則在哪裏保存的呢?見下圖,
技術分享圖片
清空規則,使用命令 iptables -F ,見下圖,
技術分享圖片
清空規則之後,使用命令 iptables -nvL,就看不到默認規則了,但是配置文件 /etc/sysconfig/iptables 裏面的內容沒有改變。也就是說,想要把當前的規則保存到配置文件裏,還需要執行一個命令 service iptables save ,這樣清空的規則才會生效。如果不保存的話,可以重啟 iptables ,再加載回來,見下圖,
技術分享圖片
也就是說,重啟服務器或是重啟 iptables 規則,都會去加載配置文件上的規則。

這些默認的規則都在 filter 這個表上,-t 是指定表,不使用 -t 的話,默認就是 filter 這個表。nat 表裏面都是沒有規則的,見下圖,
技術分享圖片

service iptables save 保存規則。當我們把規則寫完之後,僅僅在當前內存中生效。想要重啟後還依然生效,就要做這個保存規則的操作。
-Z (大寫)可以把計數器清零,具體操作見下圖,
技術分享圖片
註意上圖左邊的紅色框框的內容,一開始是有數據的,執行了 -Z 的命令之後,就清零了。然後一會會之後又有數據了,因為每時每刻都在通信。
現在給filter表增加一條規則,輸入命令 iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP ,回車,見下圖,

技術分享圖片
這條命令省略了 -t ,默認為 filter 表;-A 表示增加一條規則,另外還有-I (大寫的i)表示插入一條規則,-D刪除一條規則;INPUT 表示針對的鏈,還可以是OUTPUT或者FORWORD;-s 表示後面跟著指定的來源IP,-p 表示協議(tcp, udp, icmp),--sport/--dport 後跟來源端口/目標端口;-d 後跟目的IP(主要針對內網或者外網);-j 後跟動作(DROP即把包丟掉,REJECT即包拒絕;ACCEPT即允許包)。上圖中,最下面的紅色框框內容就是剛剛增加上去的規則。
總結一下各個選項的作用:
-A/-D :增加刪除一條規則;
-I :插入一條規則,其實跟-A的效果一樣;
-p :指定協議,可以是tcp,udp或者icmp;
--dport :跟-p一起使用,指定目標端口;
--sport :跟-p一起使用,指定源端口;
-s :指定源IP(可以是一個ip段);
-d :指定目的IP(可以是一個ip段);
-j :後跟動作,其中ACCEPT表示允許包,DROP表示丟掉包,REJECT表示拒絕包;
-i :指定網卡(不常用,但有時候能用到);
還有一種用法 -I(大寫的i),輸入命令 iptables -I INPUT -p tcp --dport 80 -j DROP ,回車,見下圖,
技術分享圖片
可以看到使用 -I 選項,規則就插入到第一行了。
既然可以增加和插入,肯定也可以刪除,使用選項 -D ,輸入命令 iptables -D INPUT -p tcp --dport 80 -j DROP ,回車,見下圖,
技術分享圖片
可以看到,第一條插入的規則沒有了。同樣的,輸入命令 iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP ,回車,見下圖,
技術分享圖片
可以看到,增加的最後一條命令也沒有了。
這邊做一個假設,假如忘記掉之前增加或是插入的規則了,要怎麽刪除這些規則呢?先把兩條規則加上去,見下圖,
技術分享圖片
接著往下操作,輸入命令 iptables -nvL --line-number ,回車,見下圖,
技術分享圖片
先給每一行前面增加顯示行號,然後再針對行號做操作,輸入命令 iptables -D INPUT 7 ,回車,見下圖,
技術分享圖片
可以看到增加和插入的規則,已經成功刪除了。再看一下行號,見下圖,
技術分享圖片
可以看到,行號果然還是少了2行的。
還有一個選項 -P(大寫), 表示預設策略,這是默認的規則,在PuTTY上遠程登錄的話,輸入命令 iptables -P OUTPUT DROP ,回車,會發現整個斷掉了,什麽也執行不了,只能重啟。-P後面跟鏈名,策略內容或者為DROP或者為ACCEPT,默認是ACCEPT。
所以要註意:如果你在連接遠程服務器,千萬不要隨便敲這個命令,因為一旦你敲完回車你就會斷掉。
這個策略一旦設定後,只能回到原始的虛擬機上,使用命令 iptables -P OUTPUT ACCEPT ,回車,才能恢復成原始狀態。
上面這一步 -P 的選項不要隨意操作,這邊不演示了。

2、iptables filter表小案例

總結:
iptables -nvL 查看 iptables 規則
service iptables restart 重啟 iptables 規則
cat /etc/sysconfig/iptables 查看 iptables 配置文件
iptables -F 清空規則
-t 是指定表,不使用 -t 的話,默認就是 filter 這個表
service iptables save 保存規則
-Z (大寫) 可以把計數器清零
iptables -A INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 給filter表增加一條規則
iptables -I INPUT -p tcp --dport 80 -j DROP 在第一行插入一條規則
iptables -D INPUT -s 192.168.188.1 -p tcp --sport 1234 -d 192.168.188.128 --dport 80 -j DROP 刪除增加的規則
iptables -D INPUT -p tcp --dport 80 -j DROP 刪除插入的規則
iptables -nvL --line-number 每一行規則前面加上行號
iptables -D INPUT 7 刪除行號為 7 的規則
iptables -P OUTPUT DROP 刪除默認規則,不要隨意執行
iptables -P OUTPUT ACCEPT 恢復默認規則

iptables 語法、iptables filter表小案例