需求:把80、2二、21端口放行,22端口指定IP段纔可放行,其餘IP段拒絕。shell
1.編寫一個腳本/tmp/iptables.sh 內容以下:bash
#! /bin/bashssh
#定義變量,在shell中命令使用絕對路徑tcp
ipt="/usr/sbin/iptables" spa
#清空以前規則,沒使用-t制定表,默認對filter表操做blog
$ipt -Fip
#修改默認策略,INPUT策略爲DROP路由
$ipt -P INPUT DROPtable
#修改默認策略,OUTPUT策略爲ACCEPT變量
$ipt -P OUTOUT ACCEPT
#修改默認策略,FORWARD策略爲ACCEPT
$ipt FORWARD ACCEPT
#指定RELATED (邊緣狀態),ESTABLISHED(保持鏈接)狀態的數據放行
$ipt -A INPUT -m state --state RELATED ,ESTABLISHED -j ACCEPT
#指定由此網段訪問22端口的數據放行
$ipt -A INPUT -s 192.168.133.0/24 -p tcp --dport 22 -j ACCEPT
#指定訪問80端口的數據放行
$ipt -A INPUT -p tcp --dport 80 -j ACCEPT
#指定訪問21端口的數據放行
$ipt -A INPUT -p tcp --dport 21 -j ACCEPT
2.執行腳本:sh /tmp/iptables.sh
3.查看新規則: iptables -nvL
PS: 使本機可正常ping通其餘機器,但拒絕其餘機器ping本機:
iptables -I INPUT -p icmp --icmp-type 8 -j DROP
需求:
需求1:B機器經過A機器訪問外網。
1.A機器修改內核參數開啓路由轉發功能:
echo "1" > /proc/sys/net/ipv4/ip_forward #默認是0(不轉發);改成1(轉發)
2.A機器增長規則:
iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o ens33 -j MASQUERADE
3.B機器網關設置爲192.168.100.1
此時B機器應能ping通A機器的192.168.133.130
需求2:外網C機器能與A機器通訊,並能經過A機器鏈接B機器的22端口
思路:使用端口映射,將B機器22端口映射成其餘端口如1122,映射到A機器
1.A機器修改內核參數開啓路由轉發功能:
echo "1" > /proc/sys/net/ipv4/ip_forward #默認是0(不轉發);改成1(轉發)
2.A機器增長規則;
#接收到的數據包目標爲133.130:1122的數據轉發到100.100:22上
iptables -t nat -A PREROUTING -d 192.168.133.130 -p tcp --dport 1122 -j DNAT --to 192.168.100.100:22
#接收到的數據包源爲100.100的數據將目標地址改爲133.130
iptables -t nat -A PORTROUTING -s 192.168.100.100 -j SNAT --to 192.168.133.130
3.B機器網關設置爲192.168.100.1
4.C機器經過ssh 192.168.133.130:1122 訪問B機器22端口