SNAT
SNAT是Source NAT的缩写,又称为源地址转换。它是一种网络地址转换技术,用于在一个网络中将源IP地址转换为另一个网络中的IP地址。
SNAT通常用于以下情况:
- 当你的内部网络需要连接到Internet时,你需要将内部私有IP地址转换为外部公共IP地址,以便能够成功访问Internet。
- 当你需要在多个私有网络之间进行通信时,你需要使用SNAT来使它们相互访问。
一个具体的例子是,假设你的公司有多个内部网络,每个内部网络使用不同的私有IP地址段,但是你需要它们之间相互访问,你可以使用SNAT将这些私有IP地址转换为相同的公共IP地址,从而使它们能够相互访问。
举个例子,假设你有一个内部网络192.168.1.0/24,你想让这个网络中的机器访问外部网络。你可以在你的路由器或者防火墙上设置SNAT规则,将所有从内部网络发出的数据包的源IP地址都更改为路由器或防火墙的公网IP地址。这样,外部网络看到的数据包就好像是从路由器或防火墙发出的,而不是来自于内部网络的真实IP地址。这种方式可以隐藏内部网络的真实IP地址,增强网络安全性
SNAT:源地址转换(Source Network Address, Translation):内部报文发送出去时,报文的源IP被修改,SNAT 报文必须存在POSTROUTING链中,也就是从内部发出去的报文经过的最后一道关卡,对应的–to-source选项。
操作步骤如下:
1、确保snat主机开启了路由转发功能
[root@snat ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
2、确保snat主机设置防火墙规则,实现SNAT地址转换
[root@snat ~]# iptables -t nat -A POSTROUTING -s 192.168.149.0/24 -p tcp –dport 80 -j SNAT –to-source 192.168.1.34
3、在client主机上进行测试
[root@client ~]# curl http://192.168.1.48
hello
4、在web主机上查看nginx的日志
[root@web ~]# tail -1000f /var/log/nginx/access.log
192.168.1.34 – – [17/Nov/2021:14:23:30 +0800] “GET / HTTP/1.1” 200 6 “-” “curl/7.29.0” “-“
192.168.1.34 – – [17/Nov/2021:14:23:30 +0800] “GET / HTTP/1.1” 200 6 “-” “curl/7.29.0” “-“
192.168.1.34 – – [17/Nov/2021:14:23:31 +0800] “GET / HTTP/1.1” 200 6 “-” “curl/7.29.0” “-“
通过日志会发现,客户端是先伪装成了192.168.1.34这个ip后再访问的web服务器!