两台私网IP设备使用相同虚拟端口经公网通信时如何区分请求归属
多私网设备同端口NAT后请求归属判定方案
- 首先明确基础前提:我们常用的多对一NAT(也叫端口地址转换PAT),本身就会自动处理私网源端口冲突的问题:当发现
192.168.0.2:5555和192.168.0.3:5555同时要对外请求时,NAT网关会给其中一个分配不同的公网源端口,正常不会出现公网IP+端口完全重复的情况。 - 特殊场景下的判定逻辑:如果是对称NAT或者做了固定端口映射的特殊配置,真的出现公网IP+端口一致的情况,NAT网关会靠完整的五元组会话表做绑定区分:
五元组指的是:
源IP、源端口、目的IP、目的端口、传输层协议(TCP/UDP) - 对应示例场景的具体判定逻辑:比如
192.168.0.2:5555请求的是1.1.1.1:80、192.168.0.3:5555请求的是2.2.2.2:443,就算两者NAT之后的公网IP+端口都是123.123.123.123:5555,NAT网关会把不同的五元组对应到不同的私网设备,收到外网返回包的时候,匹配五元组就能精准转发到对应的私网设备上。 - 如果遇到两台设备同端口、同协议、访问同一个目的IP+端口的极端场景,NAT网关一定会强制修改其中一个的公网源端口,避免会话冲突,根本不会出现公网侧完全无法区分的情况。
内容的提问来源于stack exchange,提问作者Samvel Ghumashyan
相关产品推荐
相关产品推荐

