需求:把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端口