最近的工作跟路由器网络有关,接触到SNAT和DNAT的相关概念,但是这两者有点傻傻分不清楚,虽然网上的定义一搜一大把,但是不知道大家能否结合实际用例来讲解下,让我等菜鸟能够明白它的含义?
最近的工作跟路由器网络有关,接触到SNAT和DNAT的相关概念,但是这两者有点傻傻分不清楚,虽然网上的定义一搜一大把,但是不知道大家能否结合实际用例来讲解下,让我等菜鸟能够明白它的含义?
可以简单地这样理解它们:
SNAT: Source Network Address Translation,是修改网络包源ip地址的。
DNAT: Destination Network Address Translation,是修改网络包目的ip地址的。
明白了这些后,要再知道使用它们的原因,也就是你什么时候要修改源ip地址,什么时候修改目的ip地址。我拿iptables举个例子。
修改源ip地址的目的一般都是为了让这个包能再回到自己这里,所以在iptables中,SNAT是在出口,也即POSTROUTING
链发挥作用。
修改目的ip地址的原因一般就是为了改变包发送的目的地,让包走出去,而不是留下来,所以在iptables中,DNAT是在入口,也即PREROUTING
链中发挥作用,以便让包进入FORWARD
表。
具体讲来就有些复杂了,感兴趣的话可以看下iptables的两篇文章
学习使用iptables 和iptables入门 ,分开来只讲SNAT和DNAT是没多少意义的,主要还得看实战。
SNAT: 是设置内网的设备经过防火器(路由器等)接入到互联网时,按内网设备的不同IP地址、对应选择不同的外网接口(电信、联通等)。即根据源IP地址在网络出口进行对应设置。
DNAT: 是设置外网(互联网)用户访问-->我们防火墙的外网IP所提供的服务(http ssh ftp等)时,将防火墙外网IP提供的服务映射回防火墙的DMZ服务器或者内网服务器。
修改源ip地址的目的一般都是为了让这个包能再回到自己这里,所以在iptables中,SNAT是在出口,也即POSTROUTING链发挥作用。修改目的ip地址的原因一般就是为了改变包发送的目的地,让包走出去,而不是留下来,所以在iptables中,DNAT是在入口,也即PREROUTING链中发挥作用,以便让包进入FORWARD表
//很精辟
2 回答1.7k 阅读✓ 已解决
3 回答1.4k 阅读
761 阅读
1 回答688 阅读
说一下自己的理解:
1. SNAT
场景:云上的vm主机用户作为客户端访问外网服务器
vm(client)--->SNAT(将数据包中的内网源IP转换为外网IP)--->Internet(服务器)--->SNAT(将数据包内的目的IP转换为内网IP)--->vm(client)
2. DNAT
场景:云上的VM主机作为服务器端为外网提供服务
Internet(client用户)--->DNAT(将数据包中的目的公网IP转换为目的内网IP)--->VM(server)--->DNAT(将数据包中的源内网IP转换为外网IP)--->Internet(client用户)