我有2个网络,通过NAT /路由器连接。
网络A(带路由器192.168.0.1)中的PC(A,192.168.0.2)将UDP paket发送到另一个网络B(带路由器10.0.0.1)中的pc(B,10.0.0.2)。 在网络A中,数据包具有源IP /端口192.168.0.2:2000和dst 10.0.0.2:5000, 在网络B中,它变为src ip / port 10.0.0.1:6000(因为6000是免费的,无论出于何种原因,仅为了示例)和dst 10.0.0.2:5000。现在PC A从源ip /端口192.168.0.2:2000向网络B中的另一台PC发送另一个udp数据包。 网络A中的源端口是相同的,但它在网络B中是否相同(本例中为6000)? 我认为是的,但我不确定。
它还依赖于dst ip / port吗? 如果不是,它是否意味着1个网络,即使是网络A中的1个src端口,也可以耗尽所有"路由器端口"在网络B? (我希望至少需要65536个网络A src端口才能填满"路由器端口"在网络B中)
通过"路由器端口"我的意思是哈希表条目,所以如果PC B发送到A(通过路由器端口6000),数据包将被传送。
答案 0 :(得分:0)
它很复杂。这取决于路由器配置。有几种类型的NAT是可能的。 - 静态NAT - 动态NAT - 和端口重定向(与NAT不同)
路由器通常从本地网络(A)到广域网(B)进行NAT,端口重定向用于从B到A的流量。
由于UDP没有建立套接字,路由器应该采用几种策略来映射UDP NATed数据包。这就是路由器使用端口6000的原因。
通常路由器不使用A中的源端口作为B中的源端口,可能是您可以配置,但不推荐,因为该信息(端口)对于建立NAT很有用,路由器可能使用(默认情况下) )对ip-port在网络之间映射数据包。
已知路由器模型可以帮助您找到更具体的答案。
您可以在此处使用iptables查看有关Linux NAT可用性的更多信息:
如果linux可以做到,路由器也应该这样做,但这取决于模型..