NAT是否会修改出站流量的目标地址?mitmproxy文档相关疑问
NAT类型认知误区解答

你的认知存在的核心问题是对NAT的功能覆盖范围了解不全,NAT不止包含修改源地址的类型:
- 你所认知的是源NAT(SNAT),这类NAT确实只会修改数据包的源IP、源端口,多用于内网多设备共享公网IP访问外网的场景,全程不会修改数据包的目标地址信息。
- 另一类常用的NAT是目标NAT(DNAT),作用刚好和SNAT相反,会直接修改数据包的目标IP、目标端口,最常见的应用就是端口映射、流量转发场景,这类操作会直接覆盖数据包原有的目标地址信息,如果没有额外的规则留存原目标记录,原有目标信息会直接丢失。
而mitmproxy透明代理场景下用到的就是DNAT规则:部署时通常会在网关配置规则,把所有用户发往外网的HTTP/HTTPS流量的目标地址直接修改为mitmproxy的服务地址,让流量先转发到mitmproxy处理。此时mitmproxy收到的数据包目标地址已经被替换为自身地址,没有额外机制传递原目标信息的前提下,自然无法识别流量的真实目的地,这就是官方文档中描述的"NAT会移除目标信息"的实际含义。
内容的提问来源于stack exchange,提问作者a1mersnow
相关产品推荐
相关产品推荐

