filter表应用:
需求:把80、22、21端口放行,22端口指定IP段才可放行,其他IP段拒绝。
1.编写一个脚本/tmp/iptables.sh 内容如下:
#! /bin/bash
#定义变量,在shell中命令使用绝对路径
ipt="/usr/sbin/iptables"
#清空之前规则,没使用-t制定表,默认对filter表操作
$ipt -F
#修改默认策略,INPUT策略为DROP
$ipt -P INPUT DROP
#修改默认策略,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
nat表应用:
需求:
需求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端口