在虚拟机中模拟实现iptables中的FORWARD及NAT功能
直接上此次实验的环境示意图:
环境说明
- 系统:CentOS 7.2.x86_64主机3台,关闭firewalld服务,同时清空iptables规则
- 主机B上配2块网卡,通过vmnet2与A连接,与C直接桥接
- 主机B充当转发和地址转换,开启核心转发功能(ip_forward)
- 将A的默认网关指向B
FORWARD(转发)
实验前配置
B主机开启核心转发功能,同时确保模块
nf_conntrack
处于开启状echo 1 > /proc/sys/net/ipv4/ip_forward lsmod | grep nf_conntrack
A主机默认网关指向B
route add default gw 172.16.60.12
C主机添加一条网络路由到B主机
route add -net 172.16.0.0/16 gw 192.168.1.71
测试A、B、C之间是否都能ping通
实验要求
A主机开启web,ftp,ssh服务,确保外网C主机可以访问
1 | # 设置FORWARD默认规则为DROP,此时AC间不能进行任何通信 |
NAT(地址转换)
实验前配置
删除上实验中为C主机添加的到B主机网络路由
route del -net 172.16.0.0/16
清空所有规则链,并确保默认策略为ACCEPT
iptables -F
SNAT
源地址转换用于让内网主机访问互联网,仅作用于nat表上POSTROUTING,INPUT,同时也达到隐藏内网ip的作用
实验要求:内网主机A访问外网C主机,通过B主机的源地址转换,实现B代理访问C,同时隐藏内网ip。前提确保B主机能够正常访问C
1 | # 设置转换 |
DNAT
目标地址转换用于让互联网上主机访问本地内网上的某服务器上的服务,仅作用于nat表上PREROUTING和OUTPUT,同时也有端口转换作用
实验要求:内网主机的httpd服务监听在8080端口,让C访问主机B的80时转换到A主机的8080上,B上没有httpd服务,只负责地址转换
1 | # 设置转换 |