來源:http://iptables-tutorial.frozentux.net/
Iptables 指南1.1.9
語法: iptables [-t table] command [match] [target/jump]
table 對哪個表的操作,默認是filter表
match 根據什么對包進行匹配
target 匹配到的數據包如何處理
[bingo] Iptables筆記2-規則的編寫
來源:http://iptables-tutorial.frozentux.net/
Iptables 指南1.1.9
語法: iptables [-t table] command [match] [target/jump]
table 對哪個表的操作,默認是filter表
match 根據什么對包進行匹配
target 匹配到的數據包如何處理
1. command 可以見iptables的幫助 iptables -h
2. match. -p 匹配協議。協議在/etc/protocols中定義。默認的是tcp,udp,icmp。
3. match. -s,-d 匹配源地址和目的地址??梢允菃蝹€IP,也可以是網絡地址。192.168.0.0/24
4. match. -f 匹配被分片的包的第二片和后面的所有片。
5. match. -m multiport --source-port 22,110 多端口匹配
6. match. -m owner --pid-owner 78 對某個進程匹配(另外如--uid-owner,--sid-owner)
7. DNAT target 改寫目的IP地址,只能用在nat表中的PREROUTING鏈和OUTPUT鏈中。
SNAT target 改寫源IP地址,只用于nat表中的POSTROUTING鏈中。
iptables -t nat -A PREROUTING -p tcp -d 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.9
# 將所有的訪問15.45.23.67:80端口的數據做DNAT發到192.168.1.9:80
如果和192.168.1.9在同一內網的機器要訪問15.45.23.67,防火墻還需要做設置,改變源IP為防火期內網IP 192.168.1.1。否則數據包直接發給內網機器,對方將丟棄。
iptables -t nat -A POSTROUTING -p tcp --dst 15.45.23.67 --dport 80 -j SNAT --to-source 192.168.1.1
# 將所有的訪問15.45.23.67:80端口的數據包源IP改為192.168.1.1
如果防火墻也需要訪問15.45.23.67:80,則需要在OUTPUT鏈中添加,因為防火墻自己發出的包不經過PREROUTING。
iptables -t nat -A OUTPUT --dst 15.45.23.67 --dport 80 -j DNAT --to-destination 192.168.1.9
8. MASQUERADE target
和SNAT target類似。不使用--to-source,因為偽裝的,不需要指定源IP,只可選用--to-ports指定端口。對于靜態IP,通常使用SNAT,保留連接跟蹤,對于動態IP,通常使用MASQUERADE,不保留連接跟蹤,但會占用更多的開銷。
9. MIRROR target
顛倒IP頭中的源地址與目的地址,再轉發。
10. REDIRECT target
在防火墻內部轉發包到另外一個端口,只用在nat表的PREROUTING鏈和OUTPUT鏈中。常用在透明代理中。
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080-8090
11. REJECT target
和DROP基本一樣。但是DROP不返回錯誤信息,REJECT可以指定返回的錯誤信息。
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with icmp-net-unreachable
12. RETURN target
返回上一層,順序是:子鏈——>父鏈——>缺省的策略。
13. TTL target
用來更改包的TTL,有些ISP根據TTL來判斷是不是有多臺機器共享連接上網。
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-set 64
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-dec 1
# 離開防火墻的時候實際上TTL已經-2了,因為防火墻本身要-1一次。
iptables -t mangle -A PREROUTING -i eth0 -j TTL --ttl-inc 1
# 離開防火墻的時候不增不減,tracert就不好用了,呵呵。
14. LOG target
在內核空間記錄日志,dmesg等才能看。
15. ULOG target
在用戶空間記錄日志。
打開轉發IP功能(IP forwarding):
echo "1" > /proc/sys/net/ipv4/ip_forward
如果使用PPP、DHCP等動態IP,需要打開:
echo "1" > /proc/sys/net/ipv4/ip_dynaddr