snat 源地址转换
源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。
步骤如下
-
图解
-
准备A、B两台liunx机器并配置好网卡
-
A机器做路由器配置源地址转换,设置两张网卡ens33,ip 192.168.225.111,用户上网,ens37,ip192.168.90.1作为lan口连接内网机器,图中均为桥接模式 B机器为内网虚拟机,ip 192.168.90.10,网关为A机器ens37的ip,DNS为114.114.114.114。
-
开启A机器路由功能
echo 1 >/proc/sys/net/ipv4/ip_forward
- 使用iptables添加snat策略
iptables -t nat -A POSTROUTING -s 192.168.90.0/24 -o ens33 -j MASQUERADE
- 测试B机器是否能上网
[root@kafka01 shell-script]# ping www.baidu.com
PING www.a.shifen.com (183.232.231.174) 56(84) bytes of data.
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=1 ttl=128 time=23.1 ms
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=2 ttl=128 time=36.7 ms
64 bytes from 183.232.231.174 (183.232.231.174): icmp_seq=3 ttl=128 time=28.5 ms
^C
dnat 目的地址转换的
互联网主机C想访问企业内部的web服务器A,但A的地址是私有地址,无法直接访问。此时,C可以访问防火墙的公网地址,C的请求数据包(源:ipC,目标:ipB)到达防火墙B后,在B的prerouting上将请求数据包的目标地址进行修改,并将数据包(源:ipC,目标:ipA)发送给A。
步骤如下
- 大致图解比snat多加了个客户机,用来访问私网B机器
- 还是用snat的两台配置好了的Linux虚拟机器,外加一台Windows,C机器
- 为B机器安装好nginx,web服务
- 使用iptables 添加一条访问内部B机器的web服务的dnat策略
iptables -t nat -A PREROUTING -i ens33 -d 192.168.225.111 -p tcp --dport 80 -j DNAT --to-destination 192.168.90.10
- 在Windows机器上用浏览器访问192.168.225.111,就可以映射到B机器的web服务