什么是端口地址转换PAT?

介绍:

端口地址转换(Port address translation )是专用网络上的多个设备共享一个公共网络地址的手段。它是一种网络设备功能,可修改传入和传出的Internet协议(IP)数据包。 IP地址和端口号都被更改,阻止公共网络直接访问专用网络上的主机。网络路由器使用端口地址转换与本地网络上的所有计算机共享一个公共Internet地址。这节省了公共IP地址,而不是每个需要访问Internet的本地计算机需要一个IP地址。

传输控制协议(TCP)和用户数据报协议(UDP)数据包都通过此过程进行转换。每个数据包都包含源IP地址和源端口号。它还包括目标IP地址和目标端口号。端口地址转换(也称为首字母缩略词PAT)创建一个表,用于映射使用时的地址和端口号。该表保存在PAT设备中,该设备可以是硬件路由器,软件防火墙或类似设备。

当本地网络上的计算机将数据包发送到公共网络时,PAT设备可以更改其标头数据。实际源地址将替换为端口地址转换设备的IP地址。 PAT设备为源计算机与公共网络的连接分配新的端口号。然后,标头中的实际源端口号将替换为新分配的源端口号。通过这种方式,传出数据包被修改为看起来好像它直接来自PAT设备。

对于传出数据包,端口地址转换表保留源地址,源端口和分配端口的副本。只需通过执行表查找,就可以为具有该源地址和端口的每个数据包使用相同的端口号。当公共网络响应时,它将在分配的端口号上将数据包发送到PAT设备的IP地址。然后,PAT设备将使用查找表中的实际专用地址替换该目标地址。它还将使用表中的实际端口号替换数据包标头中的端口号。

网络地址转换(NAT)是映射IP地址的相关方法。端口地址转换实际上是称为过载NAT的NAT的子集。 PAT有时被称为NAT或网络地址端口转换。存在NAT的变体,其仅映射IP地址或仅映射源地址和源端口号。其他表单仅映射目标地址和目标端口号,或两种类型的端口和地址。

通常,WAN到LAN设备处理来自LAN侧的多个网络主机的多个同时请求,并且可能看到来自两个LAN设备的请求,其中源端口号是相同的。如果没有某种机制来处理这种情况,WAN-to-LAN设备将无法满足第二个请求 – 因为它会导致类似以下(不可能)的NAT映射表:

在这种情况下,当对其中一个请求的响应到达时,如果数据包标题中的“目标IP地址”读取“212.213.214.215”,它将有两个可能的网络主机(192.168.0.3和192.168.0.4)来发送在LAN端的数据包,并没有办法辨别哪一个是正确的。

解决方案是WAN-to-LAN设备执行PAT(端口地址转换),有时也称为NAT Overload  – 实际上不仅可以将私有IP地址转换为公共IP地址,还可以转换原始源端口号。

这允许WAN到LAN设备在从远程网络主机返回时正确地路由响应。所以现在任何进入目的地212.213.214.215和端口6060的流量都将在LAN侧转发到IP地址192.168.0.4和端口6060,任何进入目的地212.213.214.215和端口5060的流量都将在LAN端到IP地址192.168.0.3和端口5060。

注意:SIP / VoIP无法使用端口重新映射,因为VoIP工作的端口在包内,而不是由其传输定义!