域内双向(同个局域网)
场景:解决内网访问 NAT Server 连接被重置的问题。
问题描述
在该实验拓扑中:
1)Client 2 请求 10.1.12.1:80 能够得到正常的响应;
2)但 Client 1 请求 10.1.12.1:80 会出现 TCP 连接被重置(RST)的问题;
补充说明
Q:然而,针对上面的实验拓扑,Client 1 请求 10.1.12.1:80 并不会出现 TCP 连接被重置(RST)的问题,而是 AR1 无任何响应。
A:我们猜路由器特性(这并非核心问题,这里我们仅记录该行为)。
为了问题能够被复现,我们在 AR1.AR1.GE0/0/1 增加与 AR1.AR1.GE0/0/0 相同的 NAT Server 配置(图中未标注)。
注意事项:
1)防火墙和路由器的实现不同,路由器 NAT Server 是接口的,而防火墙 NAT Server 是全局的,所以防火墙无需额外配置。
2)因此,该实验最好使用防火墙设备进行测试。
原因分析
1)Client1[192.168.1.1] 建立 TCP 连接 AR1[10.1.12.1:80],经过 NAT Server 处理,
2)报文变为 Client1[192.168.1.1] 连接 HTTP[192.168.1.100],
3)然后 HTTP[192.168.1.100] 进行 SYN ACK 响应,报文为 HTTP[192.168.1.100] 到 Client1[192.168.1.1] 地址,
4)此时,Client1 发现自己并没有主动发起到 HTTP[192.168.1.100] 连接,因此 TCP 建立失败并响应 HTTP[192.168.1.100] 链接重置;
解决方案
在 AR1.GE0/0/1 中,增加 nat outbount 配置,将流出的报文的源地址转为 AR1.GE0/0/1 接口地址,即可。
细节说明:
1)Client1[192.168.1.1] 建立 TCP 连接 AR1[10.1.12.1:80],经过 NAT Server 处理,报文变为 Client1[192.168.1.1] 连接 HTTP[192.168.1.100],
2)当报文流出 AR1.GE0/0/1 接口时,又被 nat outbount 配置处理成 AR1[192.168.1.254] 连接 HTTP[192.168.1.100],
3)然后 HTTP[192.168.1.100] 进行 SYN ACK 响应,报文为 HTTP[192.168.1.100] 到 Client1[192.168.1.254] 地址,AR1 收到该报文,
4)AR1 根据 NAT Session 把报文转换为 HTTP[192.168.1.100] 到 Client1[192.168.1.1] 并发送给 Client1
简单说:客户端数据包发到路由器,再转到服务器,然后再响应给路由器,由路由器转发给客户端。
域间双向(两个局域网)
场景:用于解决多点到单点的访问,且两个网络地址冲突。
问题描述
两个网络使用相同网段(且不易调整),当网络合并时,即使网段相同,但属于不同广播域,所以二者无法互通。
原因分析
两个网络的网段相同,导致 LAN-A 的数据包送达 LAN-B 网络。
解决方案
1)将 LAN-B.Server1 通过 AR2.GE0/0/0.NATServer 进行映射 ⇒ 以解决 LAN-A.Client1 数据包无法送到 LAN-B.Server1 问题;
2)在 LAN-A.AR1.GE0/0/0 进行 NAT Outbound 处理,转换源地址 ⇒ 以解决 LAN-B.Server1 回包地址为同网段问题;
—- 在数据包发送到 LAN-B.Server1 前 NAT Outbound 已对数据包进行修改;
—- 在 LAN-B.Server1 看来请求来自 LAN-A.AR1 设备,而不是内网地址(192.168.1.1);