创新路
我们一直在努力

iptables(SNAT & DNAT & MASQUERADE)学习

iptables(SNAT & DNAT & MASQUERADE)学习

一、背景

       最近整了一台群晖NAS,准备当做软路由使用。网络拓扑很简单,但是就是不成功。

群晖NAS的WAN口拨号正常,LAN口也正常。

最终,技术牛人Y给出了解决方法:

1595467577814161.png

       其中,引入了MASQUERADE这一概念。所以,接下来就是学习这一概念。


二、SNAT & DNAT & MASQUERADE 分别是什么


1、SNAT


SNAT(source networkaddress translation),源地址目标转换。

       多个PC机使用ADSL路由器共享上网,每个PC机都配置了内网IP,PC机访问外部网络的时候,路由器将数据包的报头中的源地址替换成路由器的ip,当外部网络的服务器比如网站web服务器接到访问请求的时候,他的日志记录下来的是路由器的ip地址,而不是pc机的内网ip,这是因为,这个服务器收到的数据包的报头里边的“源地址”,已经被替换了,所以叫做SNAT。


例子:

如下命令表示把所有10.8.0.0网段的数据包SNAT成192.168.5.3的ip然后发出去,

iptables-t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT –to-source192.168.5.3

如下命令表示把所有10.8.0.0网段的数据包SNAT成192.168.5.3/192.168.5.4/192.168.5.5等几个ip然后发出去

iptables-t nat -A POSTROUTING -s 10.8.0.0/255.255.255.0 -o eth0 -j SNAT –to-source192.168.5.3-192.168.5.5

2、DNAT


DNAT(destination networkaddress translation),目标网络地址转换。

       web服务器放在内网配置内网ip,前端有个防火墙配置公网ip,互联网上的访问者使用公网ip来访问这个网站,当访问的时候,客户端发出一个数据包,这个数据包的报头里边,目标地址写的是防火墙的公网ip,防火墙会把这个数据包的报头改写一次,将目标地址改写成web服务器的内网ip,然后再把这个数据包发送到内网的web服务器上,这样,数据包就穿透了防火墙,并从公网ip变成了一个对内网地址的访问了,即DNAT。

3、MASQUERADE


MASQUERADE,地址伪装。

       SNAT中的一种特例,可以实现自动化的SNAT。效果和SNAT相近,但也有一些区别,使用SNAT的时候,出口ip的地址范围可以是一个,也可以是多个。


例子:

iptables -t nat -A POSTROUTING -s 192.168.188.0/24 -j MASQUERADE

iptables -t nat -A POSTROUTING -s 192.168.24.0/22 -j MASQUERADE


三、学习后的提炼


1、SNAT和MASQUERADE的区别

       它们两个起到的作用是一样的,都是把指定的源地址转换成一个地址来往外面发包。

好,来说最关键的区别:

SNAT必须NAT成一个IP或者多个IP,就算是多个IP,也是必须指定;

MASQERADE不用指定NAT后的IP。


2、我们为什么要用MASQUERADE

       由于我们的群晖NAS的WAN口使用的是PPPOE拨号上网,IP是随机的。我理解的是,用SNAT也能成功,只是需要先看这盘拨号的地址是好多,然后手动在SNAT中指定,然后下盘拨号再手动指定一盘。所以,MASQERADE更合适。

未经允许不得转载:天府数据港官方信息博客 » iptables(SNAT & DNAT & MASQUERADE)学习

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机