实现SNAT(源地址转换)

ipv4地址已经分配完毕,再也没有更多的ipv4地址可供申请。因此不可能每一个人分配一个公网地址来浏览互联网。更多情况下是使用防火墙地址转换,把私网地址转换成公网地址,实现公网地址的复用。由于对外表现为一个公网地址,因此实际对外隐藏了内网的拓扑结构,起到了隔离的作用。
可用的私网地址段
A:10.0.0.0/8
B:172.16.0.0/16 – 172.31.0.0/16 172.16.0.0/12
C:192.168.0.0/24 – 192.168.255.0/24 192.168.0.0/16

实验拓扑


内网主机访问互联网,对外表现为模拟的公网地址192.168.30.1
防火墙对内网主机请求报文的源地址进行转换为模拟的公网地址192.168.30.1

实验准备

  • 3台centos 7.4 Linux虚拟机
  • 内网Client 10.0.0.1
  • 网络边界防火墙(防火墙配置工具iptables)
  • 模拟公网server 192.168.30.2

实验步骤

参照“实现内网安全”一文,实现三台主机的互通

FireWall上配置转换规则

iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j snat –to-source 192.168.30.1
或者 如果公网IP地址为动态IP
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -j snat –to-source MASQUERADE

192.168.30.2

公网没有私网路由,删除默认网关,模拟现实情况

在10.0.0.1 ping 192.168.30.2

边界防火墙抓包观察网络流量


可以看到,内网网卡的icmp请求中源地址为10.0.0.1,而在外网网卡中源地址已经修改为公网地址192.168.30.1
此时192.168.30.2已经无法ping通10.0.0.1,内网网络细节已经隐藏起来了。

192.168.30.2上运行web服务,源IP替换源端口未作替换,web服务器log记录的访客为公网地址


Leave a Reply

Your email address will not be published. Required fields are marked *