SNAT和DNAT的区别

最近的工作跟路由器网络有关,接触到SNAT和DNAT的相关概念,但是这两者有点傻傻分不清楚,虽然网上的定义一搜一大把,但是不知道大家能否结合实际用例来讲解下,让我等菜鸟能够明白它的含义?

阅读 39k
评论
    4 个回答

    说一下自己的理解:

    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用户)

      可以简单地这样理解它们:

      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的两篇文章

      学习使用iptablesiptables入门 ,分开来只讲SNAT和DNAT是没多少意义的,主要还得看实战。

        SNAT: 是设置内网的设备经过防火器(路由器等)接入到互联网时,按内网设备的不同IP地址、对应选择不同的外网接口(电信、联通等)。即根据源IP地址在网络出口进行对应设置。
        DNAT: 是设置外网(互联网)用户访问-->我们防火墙的外网IP所提供的服务(http ssh ftp等)时,将防火墙外网IP提供的服务映射回防火墙的DMZ服务器或者内网服务器。

          • 1
          • 新人请关照

          修改源ip地址的目的一般都是为了让这个包能再回到自己这里,所以在iptables中,SNAT是在出口,也即POSTROUTING链发挥作用。修改目的ip地址的原因一般就是为了改变包发送的目的地,让包走出去,而不是留下来,所以在iptables中,DNAT是在入口,也即PREROUTING链中发挥作用,以便让包进入FORWARD表
          //很精辟

            撰写回答

            登录后参与交流、获取后续更新提醒