以前一直對iptables的sport、dport不清楚,所以這里記錄一下。
(1)清理防火牆:
iptables -F iptables -X iptables -Z
(2)iptables命令選項輸入順序:
iptables -t 表名 <-A/I/D/R> 規則鏈名 [規則號] <-i/o 網卡名> -p 協議名 <-s 源IP/源子網> --sport 源端口 <-d 目標IP/目標子網> --dport 目標端口 -j 動作
表名包括:
- raw:高級功能,如:網址過濾。
- mangle:數據包修改(QOS),用於實現服務質量。
- net:地址轉換,用於網關路由器。
- filter:包過濾,用於防火牆規則。
規則鏈名包括:
- INPUT鏈:處理輸入數據包。
- OUTPUT鏈:處理輸出數據包。
- PORWARD鏈:處理轉發數據包。
- PREROUTING鏈:用於目標地址轉換(DNAT),路由前。
- POSTOUTING鏈:用於源地址轉換(SNAT),路由后。
動作包括:
- accept:接收數據包。
- DROP:丟棄數據包。
- REDIRECT:重定向、映射、透明代理。
- SNAT:源地址轉換。
- DNAT:目標地址轉換。
- MASQUERADE:IP偽裝(NAT),用於ADSL。
- LOG:日志記錄。
iptables里面的dport和sport
首先先來翻譯一下dport和sport的意思:
dport:目的端口
sport:來源端口
初學iptables比較容易迷糊,但是我盡量用通俗的語言給你講解。
dport 和sport字面意思來說很好理解,一個是數據要到達的目的端口,一個是數據來源的端口。
但是在使用的時候要分具體情況來對待,這個具體情況就是你的數據包的流動行為方式。(INPUT還是OUTPUT)
比如你的例子:/sbin/iptables -A INPUT -p tcp –dport 80 -j ACCEPT
注意里面的INPUT參數,這個代表你的這條數據包的進行的 “進入” 操作!
那么你的這條數據包可以這么描述:
1.這是一條從外部進入內部本地服務器的數據。
2.數據包的目的(dport)地址是80,就是要訪問我本地的80端口。
3.允許以上的數據行為通過。
總和:允許外部數據訪問我的本地服務器80端口。
再看第2條列子:/sbin/iptables -A INPUT -p tcp –sport 80 -j ACCEPT
1.這是一條從外部進入內部本地服務器的數據。
2.數據包的來源端口是(sport)80,就是對方的數據包是80端口發送過來的。
3.允許以上數據行為。
總結:允許外部的來自80端口的數據訪問我的本地服務器。
input方式總結: dport指本地,sport指外部。
如果你的數據包是(OUTPUT)行為,那么就是另外一種理解方式:
比如:
/sbin/iptables -A OUTPUT -p tcp –dport 80 -j ACCEPT
1.這是一條從內部出去的數據。
2.出去的目的(dport)端口是80。
3.允許以上數據行為。
output行為總結:dport只外部,sport指本地。
推薦博客:
http://www.zsythink.net/archives/1199
