snat与dnat的区别

原理上来讲nat

前导:NAT(Network AddressTranslation,网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程。(nat就是防火墙的nat表)实际上就是在,在系统上建立nat表,提供IP的映射转发的功能。

在这里插入图片描述
内核中数据包的传输过程:(图片来自网络)

当一个数据包进入网卡时,数据包首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转送出去。
如果数据包就是进入本机的,数据包就会到达INPUT链。经INPUT链检查后,数据包被发往本地进程。本地进程进行相应处理后发送响应数据包,数据包经过OUTPUT链,然后到达POSTROUTING链输出;如果数据包是要转发出去的,且内核允许转发,数据包就会向右移动,经过FORWARD链,然后到达POSTROUTING链输出。

SNAT:

首先进入PREROUTING,发现不是本网段的地址,而后开始查找路由表(查找路由的过程在PREROUTING和FORWARD之间),于是经过FORWARD链进行转发,在通过POSTROUTING时进行NAT转换。在这个流程中,NAT转换的步骤在POSTROUTING链上实现,之所以不再PREROUTING上做NAT是因为数据包在进来之前,还不知道是本网段地址还是外网地址。(出向)

DNAT:

在DNAT中,NAT要在PREROUTING链上做。在数据进入主机后,路由选择过程是在PREROUTING和FORWARD之间的,所以应该先做地址转换之后再进行路由选择,而后经过FORWARD链,最后从POSTROUTING链出去。(入向)

SNAT和DNAT的区别:

从定义来讲它们一个是源地址转换,一个是目标地址转换。都是地址转换的功能,将私有地址转换为公网地址。

要区分这两个功能,可以简单的由连接发起者是谁来区分!

snat:内部地址要访问公网上的服务时(如web访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网关的这个地址转换称为SNAT,主要用于内部共享IP访问外部

dnat:当内部需要提供对外服务时(如对外发布web网站),外部地址发起主动连接,由路由器或者防火墙上的网关接收这个连接,然后将连接转换到内部,此过程是由带有公网IP的网关替代内部服务来接收外部的连接,然后在内部做地址转换,此转换称为DNAT,主要用于内部服务对外发布。

在这里插入图片描述
SNAT:应用实例:
最常见你的应用就是你公司的电脑明明是内网(局域网)却可以网上冲浪!

如上图:G0就是你公司索分配到的公网IP,PC(可以是多个)就是公司的多台电脑,通过配置snat,公司的电脑都将伪装成G0的IP来实现上网!
在这里插入图片描述
DNAT:web服务是你公司的内网,例如一个游戏服务器,PC浏览器就是玩王者农药的你。
你的手机将以公网的姿态访问腾讯的内网服务器。你以为访问的是web的IP,其实你访问的是G0的IP,这就是dnat起的作用。

无论snat 还是 dnat 都是一种IP映射,具体的配置无非就是几条命令,百度到处都是!

猜你喜欢

转载自blog.csdn.net/jkwanga/article/details/106199387