当前位置:  技术问答>linux和unix

SNAT 与 DNAT

    来源: 互联网  发布时间:2014-11-24

    本文导语:  在使用IPTABLES时什么情况下用SNAT,什么情况下用DNAT,有时我看一些例子我都搞不清了,究竟代表什么意思? | 请看下面说明: 源NAT(SNAT)     比如,更改所有来自192.168.1.0/24的数据包的源ip...

在使用IPTABLES时什么情况下用SNAT,什么情况下用DNAT,有时我看一些例子我都搞不清了,究竟代表什么意思?

|
请看下面说明:

源NAT(SNAT)

    比如,更改所有来自192.168.1.0/24的数据包的源ip地址为1.2.3.4:
    iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 1.2.3.4
    这里需要注意的是,系统在路由及过虑等处理直到数据包要被送出时才进行SNAT。
    有一种SNAT的特殊情况是ip欺骗,也就是所谓的Masquerading,通常建议在使用拨号上网的时候使用,或者说在合法ip地址不固定的情况下使用。比如
    # iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE 
    可以看出,这时候我们没有必要显式的指定源ip地址等信息。

目的SNAT(DNAT)
    
    比如,更改所有来自192.168.1.0/24的数据包的目的ip地址为1.2.3.4:
    iptables -t nat -A PREROUTING -s 192.168.1.0/24 -i eth1 -j DNAT --to 1.2.3.4 
    这里需要注意的是,系统是先进行DNAT,然后才进行路由及过虑等操作。
    有一种DNAT的特殊情况是重定向,也就是所谓的Redirection,这时候就相当于将符合条件的数据包的目的ip地址改为数据包进入系统时的网络接口的ip地址。通常是在与squid配置形成透明代理时使用,假设squid的监听端口是3128,我们可以通过以下语句来将来自192.168.1.0/24,目的端口为80的数据包重定向到squid监听端口:
    iptables -t nat -A PREROUTING -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-port 3128


|
一般来说,对外访问用snat,而对方访问自己做dnat
简单的说snat就是改变源地址,dnat就是改变目的地址

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,