欢迎光临
我们一直在努力

Azure 防火墙怎么实现SNAT

SNAT,是源地址转换,其作用是将ip数据包的源地址转换成另外一个地址。

SNAT,可能有人觉得奇怪,好好的为什么要进行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的配置方法和DNAT是不一样的,DNAT可以直接在FW上配置,SNAT我们可以通过UDR实现,如果想让所有出站流量都经过FW,我们可以通过UDR配置默认路由的出口为FW,这样访问internet的流量就必须要走FW了

首先来看下FW做DNAT时对IP的改写,从家里电脑curl到FW IP

在Nginx log里可以看到源IP会是FW的IP,也就是说在做DNAT时,FW会重写请求的源IP

而如果curl 服务器的公网IP

Log里会看到源IP是客户端的公网IP

从各个region curl到web服务器公网IP,包括FW的VNET和peer的VNET

直接Curl web服务器公网IP,看到的源IP都是服务器的公网IP,说明出站是直接走到internet,不经过FW,没有SNAT

下边来看SNAT怎么配置,首先在各个region创建UDR

添加默认路由到FW

关联到各个subnet中

之后尝试从VM 继续curl到web服务器,会发现流量被FW拒绝了,因为没有出站的允许规则

解决这个问题可以在FW上开通网络规则

 

10.88网段的可以curl www.baidu.com

    

 不在88网段的就不行

    再次添加其他网段的网络规则

尝试单独再添加linux2所在网段的规则

再次尝试,可以连接,DNAT就简单实现了

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。