iptables filter表案例及iptables nat應用
iptables小案例需求
只針對filter表,預設策略INPUT鏈DROP,其他兩個鏈ACCEPT,然後針對192.168.1.0/24開通22端口,對所有網段開放80端口,對所有網段開放21端口。
由於這個需求有多條規則,所以最好寫成腳本的形式,操作示例如下:
# vi /usr/local/sbin/iptables.sh 加入如下內容,保存退出。
腳本內容:
ipt="/usr/sbin/iptables"
$ipt -F
$ipt -P INPUT DROP
$ipt -P OUTPUT ACCEPT
$ipt -P FORWARD ACCEPT
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
# sh /usr/local/sbin/iptables.sh 執行腳本
# iptables -nvL 查看規則
Chain INPUT (policy DROP 193 packets, 14785 bytes)
pkts bytes target prot opt in out source destination
25 1764 ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
0 0 ACCEPT tcp -- * * 192.168.133.0/24 0.0.0.0/0 tcp dpt:22
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 16 packets, 1504 bytes)
pkts bytes target prot opt in out source destination
關於icmp有一個特殊的應用:
#iptables -I INPUT -p icmp --icmp-type 8 -j DROP
解釋:這裏的--icmp-type選項要跟-p icmp一起使用,後面指定類型編號。這個8指的是本機能ping通其他機器,而其他機器不能ping通本機,請牢記。
iptables nat表應用
linux的iptables功能規則是十分強大的,可以實現很多功能,路由器共享上網的功能就是通過由linux的iptables實現的,而iptables又是通過nat表作用而實現的。
舉例說明:
假設有兩臺機器,A機器有兩塊網卡ens33(192.168.100.1)、ens37(192.168.1.185),ens33可以上外網,但ens37僅僅是內部網絡,而B機器只有ens37(192.168.1.186),和A機器ens37可以通信互聯。
需求1:可以讓B機器連接外網
操作命令如下:
#echo "1" > /proc/sys/net/ipv4/ip_forward echo 1到配置文件打開轉發功能
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o ens37 -j MASQUERADE -o表表示出口的網卡,MASQUERA表示偽裝。
解釋:
第一個命令涉及內核參數相關的配置文件,它的目的是打開路由轉發功能,否則無法實現我們的應用。
第二個命令則是iptables對nat表做了一個IP轉發的操作,-O選項後面跟設備名,表示出口的網卡,MASQUERADE表示偽裝。
iptables filter表案例及iptables nat應用