也许我没有正确理解这两件事,但源 NAT 不是总是需要目标 NAT 才能工作吗?
假设我们有两个站点:
答:192.168.0.10 B:192.168.0.20
还有一个公网 IP 为 10.11.12.13 的路由器正在做源 NAT,因此它将所有数据包的源地址从 A 和 B 更改为 10.11.12.13。
但是他们应该如何得到回应呢?
我的家用路由器不是同时进行源 NAT 和目标 NAT 吗?
也许我没有正确理解这两件事,但源 NAT 不是总是需要目标 NAT 才能工作吗?
假设我们有两个站点:
答:192.168.0.10 B:192.168.0.20
还有一个公网 IP 为 10.11.12.13 的路由器正在做源 NAT,因此它将所有数据包的源地址从 A 和 B 更改为 10.11.12.13。
但是他们应该如何得到回应呢?
我的家用路由器不是同时进行源 NAT 和目标 NAT 吗?
也许我没有正确理解这两件事,但源 NAT 不是总是需要目标 NAT 才能工作吗?
这取决于您如何定义这些术语。
在 NAT 的数据包级别上,属于特定连接的数据包的转换必须是对称的。如果传出数据包的源地址(和可能的端口)改变了,那么对这些数据包的响应必须改变它们的目标地址(和可能的端口)。
有多种方法可以在管理和状态跟踪级别处理此问题。
linux 上的 iptables(家庭/SMB 路由器以及其他地方使用的常见实现)采用的方法是面向连接的。新连接的第一个数据包通过“nat”表中的链。根据这些表,设置适用于连接的所有数据包的映射。属于该连接的后续数据包不会通过“nat”表中的链。
因此,当您的一台机器连接到 Internet 上的服务器时,会发生以下情况。
一个人的源头是另一个人的目的地。
但严肃地说,源和目标这两个术语是相对于某些参考的,在这种情况下,是设备进行翻译。所以从你的路由器的角度来看,来源是它的内部网络。