iptables配置
filter表包含以下3條鏈:
INPUT鏈:過濾所有目標地址是本機的數據包,
forward鏈:過濾所有路過本機的數據包,也就是目的地址和源地址都不是本機的數據包,
OUTPUT鏈:過濾所有由本機產生的數據包,也就是源地址是本機的數據包,
nat表
nat表用于網絡地址轉換,iptables可以進行以下的nat轉發:
DNAT:主要用于改變數據包的目的地址,以使數據包能重新路由到某臺主機,
SNAT:主要用于改變數據包的源地址,以幫助內部網絡能連接到internet,
MASQUERADE和SNAT完全一樣,只是MASQUERADE會查找可用的ip地址,而不像SNAT要有一個固定的ip,所以MASQUERADE一般用于adsl/ppp等拔號共享上網的方式
,
nat表包含以下3條鏈:
PREROUTING 鏈:可以在數據包到達防火墻的時候改變包的目標地址,
postrouting鏈:在數據包就要離開防火墻的時候改變數據包的源地址
OUTPUT鏈:可以改變本地產生的數據包的目標地址,
使用nat表 實現端口轉發
cat /proc/sys/net/ipv4/ip_forward 1 表示生效 0 標識不生效
vi /etc/sysctl.conf 修改net.ipv4.ip_forward為1
使修改生效
sysctl -p
例:將對IP192.168.169.112端口 8080的訪問轉發到192.168.169.111的80端口
112機器上執行
iptables -t nat -A PREROUTING --dst 192.168.169.112 -p tcp --dport 8080 -j DNAT --to-destination 192.168.169.111:80
iptables -t nat -A POSTROUTING --dst 192.168.169.111 -p tcp --dport 80 -j SNAT --to-source 192.168.169.112
對來自192.168.169.101的icmp請求丟棄
iptables 語法:
iptables -t filter -A INPUT -p icmp -s 192.168.169.101 -j DROP
禁止icmp
iptables -t filter -A INPUT -p icmp -j DROP
-A INPUT
-p icmp
-p Protocol(協議)
匹配某個特定協議封包,
語法:-p icmp ,-p tcp ,-p udp -p all
-s 192.168.1.10
-s address[/mask] 源地址
-d address[/mask] 目的地址
-j 目標處理規則
常見的處理規則
ACCEPT 允許通過
DROP 將封包丟棄調,這種處理方式將導致來源端誤以為封包丟失,而不斷重新發送封包,這個動作將持續到連接Timeout為止
REJECT 將封包丟棄掉,并回送一個DestinationUnreachable的ICMP封包給發送端,發送端的應用程序收到這個錯誤信息封包之后,會終止連接的動作
限制192.168.169.94 對本機的80端口進行訪問
iptables -t filter -A INPUT -p tcp -s 192.168.169.94 --dport 80 -j DROP
允許端口80訪問
iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT
清除filter表規則
iptables -F
清除nat 表規則
iptables -t nat -F
根據規則行號刪除規則
iptables -nvL --line-number
刪除行號為2的規則
iptables -D INPUT 2