聊聊NAT

    科技2024-04-13  89

    NAT全称:network address translation,说的是ip地址的修改。 对应的还有NAPT(network address port translation),即端口也相应的做一些映射。

    要看NAT是SNAT还是DNAT,主要是由前半段决定,前半段如果做的是源ip地址替换,则是SNAT;如果前半段是做的目的ip转换,则是DNAT。

    举一个SNAT和DNAT的场景的例子以加深理解,一般来说,用的比较多的就是我们的路由器,当然还是其他一些NAT设备,这里就不再赘述,所有的ip地址转换都发生在NAT设备上。

    SNAT场景:

    比如公司内部的n台子网设备想要访问Internet,但是只有一个公网IP,我们使用的内部网络一般来说都是私网IP,而我们上网都是通过路由器或者某些NAT设备作为“中介”,从而实现访问互联网的目的。那么我们的请求包发出去,首先会经过NAT设备,而NAT设备做的事情就是将私网IP发出的请求包的源ip改为NAT设备的公网IP,并从NAT设备将修改后的请求包发送到Internet实现互联网络的访问。

    这就是所说的前半段,因为前半段改的是源ip,所以叫做SNAT。

    而后半段则是,互联网收到请求包后,会给出应答。根据前面的逻辑,应答包自然是直接到了我们NAT设备,所以对于火来的应答包,NAT设备做的事情是将应答包的目的ip改为我们私网的ip(数据包到达NAT设备之前目的ip其实还是NAT设备的公网IP)。这样,即实现了一个完整的访问Internet并成功收到返回数据的流程。

    DNAT场景:

    了解了SNAT,对于DNAT来说,理解起来就更加容易了。比如公司有一些业务,分别部署在不同的服务器上,但是由于这样服务器用的是私网IP,所有互联网上的设备想要直接访问肯定不行,这样做也是为了安全考虑,私网IP对外完全隐藏。 同样的道理,互联网设备要访问公司的业务,但是又不知道私网IP,这时我们会给用户提供一个公网IP,可能也会提供端口,而这个IP和端口会映射到内部的私网IP和端口,并将这个公网IP和端口告知用户。这样,用户在访问业务时请求包首先会到达我们的NAT设备,此时由NAT设备将数据包的目的ip改为私网IP,前半段改的是目的ip,故此称之为DNAT。对于返回给用户的数据,到达NAT设备后,会再次又NAT设备修改应答包的源ip,最终返回给用户。

    NAT使用场景还是挺多的,LVS-NAT模型就是一个最简单的用例,LVS用到ipvs等技术,ipvs其实是工作在INPUT链,符合规则的包则直接送往POSTROUTING。
    Processed: 0.009, SQL: 8