Source NAT (SNAT) 与 Destination NAT (DNAT) ?

shadowstar 2002-03-05 12:37:50
Source NAT 就是您將改變第一個封包的來源地址﹕例如﹐您為傳入的連線做 caching 的動作。Source NAT 永遠會在封包傳出網線之前就做好 post-routing 的動作。封包偽裝(Masquerading)就是一個 SNAT 特例。

Destination NAT 就是您將改變第一個封包的目的地地址﹕例如您要為傳出的連線做 caching 的動作。Destination NAT 永遠會在封包從網線進入之後就馬上做好 pre-routing 的動作。Port forwarding﹑負載分擔﹑以及透明代理﹐都屬於 DNAT。

没想通,谁能给解释一下。
怎么算传入,怎么算传出?
究竟什么时候用到 Destination NAT??
...全文
1461 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
sta_gz 2002-03-05
  • 打赏
  • 举报
回复
linux以前的内核仅仅支持有限的NAT功能,被称为伪装。现在,内核为2.4以上版本的支持 Netfilter,则支持任何一种NAT。一般来讲NAT可以分为源NAT和目的NAT。 源NAT在数据报经过NF_IP_POST_ROUTING时修改数据报的源地址。伪装是一个特殊的SNAT.目的NAT在数据报经过NF_IP_LOCAL_OUT或NF_IP_PRE_ROUTING 时修改数据报目的地址。端口转发和透明代理都是DNAT。
一、iptables的NAT目标动作扩展
SNAT
变换数据包的源地址。
例: iptables -t nat -A POSTROUTING -j SNAT --to-source 1.2.3.4
MASQUERADE
用于具有动态IP地址的拨号连接的SNAT,类似于SNAT,但是如果连接断开,所有的连接跟踪信息将被丢弃,而去使用重新连接以后的IP地址进行IP伪装。
例: iptables -t nat -A POSTROUTING -j MASQUERADE -o ppp0
DNAT
转换数据报的目的地址,这是在PREROUTING钩子链中处理的,也就是在数据报刚刚进入时。因此Linux随后的处理得到的都是新的目的地址
例:
iptables -t nat -A PREROUTING -j DNAT --to-destination 1.2.3.4:8080 -p tcp --dport 80 -i eth1
REDIRECT
重定向数据报为目的为本地,和DNAT将目的地址修改为接到数据报的接口地址情况完全一样。
例: iptables -t nat -A PREROUTING -j REDIRECT --to-port 3128 -i eth1 -p tcp --dport 80

19,613

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧