地址与端口怎样对应
基本地址转换在两侧地址空间之间建立对应关系。NAPT还把内部IP地址和端口组合映射到外部地址与端口,使多台主机可以同时使用较少的外部地址。
回复到达外侧端点以后,转换设备依据相应映射把它交回内部端点。它需要修改相关报文字段,不能被理解成只是给网络连上一根透明电缆。
参考:[1]
映射与过滤不是同一规则
不同NAT对映射复用的条件可能不同:访问另一个外部端点时,原映射是否继续使用,会影响应用观察到的地址。UDP与TCP还涉及不同状态和超时处理。
过滤则决定哪些外部报文可以通过已有边界,两者不能混为一个概念。一个应用在某台家用路由器后可以通信,不保证在另一种映射、过滤或超时策略下也有相同行为。
同一NAT后面的两个端点,也可能通过彼此的外部映射通信。RFC 4787称这种行为为hairpinning:内部甲把报文发给内部乙对应的外部地址与端口,NAT依据仍有效的映射,把报文重新转回乙,而不是要求它先抵达另一台公网主机。设备还需呈现适当的来源地址与端口,让接收端按预期识别对方。因此同处一个内网,不等于访问对方公网映射就必然按普通局域网直连处理,实际支持与过滤策略仍需核对。
应用语义与安全的边界
如果应用把地址或端口写进消息内容,边界只改写外层首部就可能不足以维持原本语义。外部主动建立连接也需要可用的映射或另外协调,不能凭内网主机有地址就假定可达。
地址转换描述报文如何改写,不证明内容保密、端点身份真实或授权正确。将它与防火墙策略、加密以及认证分别设计,才能说明系统实际提供了哪些保护。