您的位置:首页 > 其它

snat的理解和回流的理解(内网可以访问外网地址)

2016-05-03 14:04 302 查看
什么是snat呢?
snat是源地址转换,其作用是将ip数据包的源地址转换成另外一个地址,可能有人觉得奇怪,好好的为什么要进行ip地址转换啊,为了弄懂这个问题,我们要看一下局域网用户上公网的原理,假设内网主机A(192.168.2.8)要和外网主机B(61.132.62.131)通信,A向B发出IP数据包,如果没有SNAT对A主机进行源地址转换,A与B主机的通讯会不正常中断,因为当路由器将内网的数据包发到公网IP后,公网IP会给你的私网IP回数据包,这时,公网IP根本就无法知道你的私网IP应该如何走了。所以问它上一级路由器,当然这是肯定的,因为从公网上根本就无法看到私网IP,因些你无法给他通信。为了实现数据包的正确发送及返回,网关必须将A的址转换为一个合法的公网地址,同时为了以后B主机能将数据包发送给A,这个合法的公网地址必须是网关的外网地址,如果是其它公网地址的话,B会把数据包发送到其它网关,而不是A主机所在的网关,A将收不到B发过来的数据包,所以内网主机要上公网就必须要有合法的公网地址,而得到这个地址的方法就是让网关进行SNAT(源地址转换),将内网地址转换成公网址(一般是网关的外部地址),所以大家经常会看到为了让内网用户上公网,我们必须在routeros的firewall中设置snat,俗称IP地址欺骗或伪装(masquerade) 。

什么是回流呢?
就是当内网有服务映射到网关后,内网主机也可以用网关外部地址访问,凡是支持回流功能的路由器,都可以从内网访问网关外部地址上映射的服务,不支持回流技术的当然就不行啦

回流是如何实现的呢?
事实上也是通过snat实现的,通常的snat是为了能让内网的电脑上外网,所以在outside(外网卡)上做snat,但回流是内部主机连接内网的主机(只不过是通过网关外部地址访问),所以必须在inside(内网卡)上做snat,这样经过内网卡的数据包先被伪装成公网或其它网段内的ip地址,然后发送到外网卡,外网卡看到源地址伪装过的ip数据包,就认为该数据包是从公网或其它网段来的,所以就通过dnat功能帮它转换目标地址,并发向处在内网的服务器(如果不进行回流,外网卡认为该数据不是从公网而来,就不会通过dnat把它转回到内网,然后丢弃数据包,内网电脑就不能访问映射在网关外部地址上的服务啦!!!),这样内网电脑就能访问被映射过的内网服务啦 。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息