首先开启路由转发功能:
# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
# sysctl -p
(1)SNAT:内网主机 --访问--> 外网服务器
<1> 搭建模拟环境
内网PC1:172.16.0.1/16(Host-Only)
网关PC2:192.168.1.8/24(桥接),172.16.0.8/16(Host-Only)
外网PC3:192.168.1.11/24(桥接)
<2> 设置源地址转换规则
PC2:iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -j SNAT --to-source 192.168.1.8
<3> 添加防火墙过滤规则(仅允许ping和访问httpd、ftp服务)
PC2:
iptables -P FORWARD DROP
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -s 172.16.0.0/16 -p icmp --icmp-type 8 -m state --state NEW -j ACCEPT
iptables -A FORWARD -s 172.16.0.0/16 -p tcp --dport 80 -m state --state NEW -j ACCEPT
iptables -A FORWARD -s 172.16.0.0/16 -p tcp --dport 21 -m state --state NEW -j ACCEPT
注意:装载ip_conntrack_ftp和ip_nat_ftp模块
# vim /etc/sysconfig/iptables-config
IPTABLES_MODULES="ip_nat_ftp ip_conntrack_ftp"
<4> 测试并抓包分析
PC1:ping 192.168.1.11
PC3:tcpdump -i eth0 -nn -X icmp
(2)DNAT:外网主机 --访问--> 内网服务器
<1> 搭建模拟环境
外网PC1:192.168.1.13/24(桥接)
网关PC2:192.168.1.8/24(桥接),172.16.0.8/16(Host-Only)
内网PC3:172.16.0.1/16(Host-Only)
<2> 设置目标地址转换规则并测试
PC2:iptables -t nat -A PREROUTING -d 192.168.1.8 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.1
PC1:访问http://192.168.1.8
<3> 设置目标地址端口转换规则并测试
PC2:iptables -t nat -A PREROUTING 1 -d 192.168.1.8 -p tcp --dport 80 -j DNAT --to-destination 172.16.0.1:8080
PC1:访问http://192.168.1.8
<4> 添加防火墙过滤规则(基于字符串过滤)并测试
iptables -A FORWARD -m string --algo kmp --string "h7n9" -j DROP
PC1:访问http://192.168.1.8