DNAT与SNAT
目录
实验环境搭建
1准备虚拟主机三台
2配置IP地址及网关
3尝试ping每一个网卡,用来查看网络是否可以通信
实验开始
1.SNAT
2.DNAT
实验环境搭建
1准备虚拟主机三台
网关服务器:配置双网卡;一张网卡配置为NAT,另一张配置为主机模式
内网服务器:安装好apache,网卡配置为NAT
外网服务器:安装好apache;网卡配置为主机模式
2配置IP地址及网关
网关服务器:
ens33网卡
ens36网卡
注:网关服务器他本身就是网关;所以,网关地址与IP地址是一致的
内网服务器:网关是网关服务器的IP地址
外网服务器:网关是网关服务器的IP地址
3尝试ping每一个网卡,用来查看网络是否可以通信
在测试前,先将所有防火墙,核心防护关闭
systemctl stop firewalld
setenforce 0
然后尝试ping各个网卡
结果:
两台设备可以ping通对方的网卡;但是无法ping通对方IP地址
查看网关服务器是否开启路由转发
sysctl -a | grep ip_forward
结果为0,代表未开启路由转发
打开/etc/sysctl.conf文件写入
net.ipv4.ip.forward = 1
完成后使用
sysctl -p
刷新路由转发功能
现在内网与外网主机都可以互相ping
实验开始
1.SNAT
外网设备开启httpd并配置主站网页;使用内网设备curl(字符浏览器)查看100设备
结果:
但是,外网设备里的日志文件显示的IP地址依然是内网IP地址(在市场环境中是不可能也不允许发生的)。所以,我们需要在网关服务器的nat表里的POSTROUTING列设置SNAT
现在104设备访问100设备,100设备中的日志文件只会记录IP地址为12.0.0.254。
SNAT实验完成
2.DNAT
现在我们可以使用100设备直接访问104设备,但是在市场环境中104为内网IP地址。我们上网是不可能存在访问内网IP地址的情况;所以,我们需要使用DNAT将内网IP地址映射到外网IP地址上(不一定是IP地址上,也可能是IP地址上的一个端口)。从而实现:我来访问12.0.0.254的一个端口等于我访问192.168.174.104的80端口。
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to 192.168.174.104
如果觉得不够详细可以加上 -d 12.0.0.254 ,那么整段命令的含义为:在nat表中的PREROUTING列添加规则“如果有设备访问12.0.0.254的tcp80端口那么就会转交给192.168.174.104的80端口”。
DNAT实验完成。