网络结构如下:

    wKiom1jwjDGgjQ3sAAAkL0M3Kmw015.png

NAT,即网络地址转换。如上图中三台机器,C服务器配置内网IP,B服务器可以正常上网同时打开了核心转发功能,B、C之间可以互相通信。但C无法访问外网,原因是当192.168.2.10访问192.168.1.10时(即内网访问外网),C的数据包可以正常发送给A,但是C是内网地址,服务器A的响应包是无法发送C的,所以需要进行地址转换。步骤如下:

1、服务器B打开核心转发功能(略);

2、在服务器B的防火墙上配置NAT,我们要让C可以正常访问外网,防火墙配置如下;

# iptables -t nat POSTROUTING -s 192.168.2.0/24 ! -d 192.168.2.0/24 -j SNAT --to-source 192.168.1.1
###########################
将源地址为192.168.2.0/24,目标地址不为192.168.2.0/24的数据包中的源地址转换成192.168.1.1

3、假设服务器C为HTTP服务器,配置了公网IP。现在不希望别人知道网站的实际IP地址

# iptables -t nat PREROUTING -d 192.168.1.1 -j DNAT --to-destination 192.168.2.10
###########################
192.168.1.1将所有接收到的所有数据包转给192.168.2.10,避免直接访问192.168.2.10

源地址转换:可以理解为内网需要访问公网时配置

iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j SNAT --to-source ExtIP(外部IP)

iptables -t nat -A POSTROUTING -s LocalNET ! -d LocalNet -j MASQUERADE(地址伪装,当外部地址不固定时)

目标地址转换:可以理解为公网与内网之间通信

iptables -t nat -A PREROUTING -d ExtIP -p tcp|udp --dport PORT -j DNAT --to-destination InterServerIP[:PORT]