我有两个网络,通过NAT/路由器连接。
网络A(路由器192.168.0.1)中的PC(A,192.168.0.2)向另一个网络B(路由器10.0.0.1)中的pc (B,10.0.0.2)发送UDP数据包。在网络A中,数据包具有源ip/端口192.168.0.2:2000和dst 10.0.0.2:5000,在网络B中,其变为src ip/端口10.0.0.1:6000 (因为出于任何原因,6000是空闲的,仅作为示例)和dst 10.0.0.2:5000。
现在,PC A从源ip/端口192.168.0.2:2000发送另一个udp数据包到网络B中的另一台PC。网络A中的源端口相同,但网络B中的源端口(本例中为6000)是否也相同?我想是的,但我不确定。
它是否也依赖于dst ip/端口?如果不是,这是否意味着一台pc,甚至网络A中的一个src端口,都可以用完网络B中的所有“路由器端口”?(我希望至少需要65536个网络A src端口才能填满网络B中的“路由器端口”)
我所说的“路由器端口”指的是哈希表条目,因此在PC B发送到A(通过路由器端口6000)的情况下,数据包将被传送。
发布于 2015-10-23 20:14:34
这很复杂。这取决于路由器配置。可以使用几种类型的NAT。-静态NAT -动态NAT -和端口重定向(与NAT不同)
通常,路由器执行从本地网络( A )到广域网(B)的NAT,端口重定向用于从B到A的流量。
由于UDP不会建立套接字,因此路由器应采用多种策略来映射UDP NATed数据包。这就是路由器使用端口6000的原因。
通常路由器不使用A中的源端口作为B中的源端口,这可能是您可以配置的,但不建议使用该信息(端口)进行NAT,路由器可能(默认情况下)使用ip-端口对在网络之间映射数据包。
已知的路由器型号可以帮助您找到更具体的答案。
您可以在此处查看有关使用iptables的linux NAT可能性的更多信息:
如果linux可以做到这一点,路由器也应该做到这一点,但这取决于型号。
https://stackoverflow.com/questions/33301755
复制相似问题