iptables是什麼?不解釋,直接進入正題。
iptables的命令使用結構是這樣的 iptables [-t table] command [match] [target] 下面一項一項來介紹
[-t table]部分
[-t table]選項允許使用標准表之外的任何表。表是包含僅處理特定類型信息包的規則和鏈的信息包過濾表。
有三個可用的表選項:filter、nat和mangle。該選項不是必需的,如果未指定,則filter作為缺省表。
filter 用於一般信息包的過濾,包含INPUT、 OUTPUT和FORWARD鏈。
INPUT:代表匹配目的 IP 是本機的數據包
OUTPUT:代表匹配源ip是本機的數據包
FORWARD:代表匹配穿過本機的數據包
nat 用於要轉發的信息包,包含PREROUTING、OUTPUT和POSTROUTING鏈。
PREROUTING: 修改目的地址(DNAT)
POSTROUTING:修改源地址 (SNAT)
mangle 這個表不是很理解,反正我沒有用過,嘻嘻
#############################################################################
command部分
command部分是iptables命令最重要的部分。它告訴iptables命令要做什麼,例如插入規則、
將規則添加到鏈的末尾或刪除規則。
-A <鏈名>
APPEND,追加一條規則(放到最後)
例如:
iptables -t filter -A INPUT -j DROP
在 filter 表的 INPUT 鏈裡追加一條規則(作為最後一條規則),將所有目的IP為本機的包全部丟棄。
在沒有開啟防火牆之前,我可以ping192.168.254.153這台機子,防火牆開後,ping不通了,而且我的ssh也斷開了,因為防火牆是將所有的包都丟棄了,自然包括ssh鏈接的包。由於無法再使用ssh鏈接,所以我只能到服務器上清空防火牆,清空後,就可以ping了
INPUT:匹配目的IP 是本機的數據包
FORWARD 穿過本機的數據包,
PREROUTING用於修改目的地址(DNAT)
POSTROUTING,用於修改源地址(SNAT)
為了能保證我測試iptables用法時ssh不會斷開,所以在這裡我首先加上一條iptables規則
我還是開啟將所有目的IP為本機的包丟棄
然後我追加一條策略
更多詳情請繼續閱讀第2頁的內容:http://www.linuxidc.com/Linux/2013-10/91444p2.htm