论坛风格切换切换到宽版
  • 580阅读
  • 7回复

[问题求助]SNAT与MASQUERADE的区别? [复制链接]

上一主题 下一主题
离线ever66.
 
发帖
2054
C币
-235385
威望
386
贡献值
1
银元
-5
铜钱
4642
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
如题,请.教大家哈子。难得找资料。           女人

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线kyabcd.
发帖
2041
C币
-235287
威望
375
贡献值
1
银元
-1
铜钱
4573
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
看 iptables 手册

发帖
2052
C币
-235233
威望
369
贡献值
1
银元
-4
铜钱
4636
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
是CU的手册中心的那份吗?
谢谢.我没有细看.

离线sinxyz.
发帖
2007
C币
-60545
威望
390
贡献值
1
银元
0
铜钱
4476
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
晕.错了.是man吗?

离线andyxie.
发帖
1978
C币
-140881
威望
354
贡献值
1
银元
0
铜钱
4450
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
6.5.6. MASQUERADE target
这个target和SNAT target的作用是一样的,区别就是它不需要指定--to-source 。MASQUERADE是被专门设计用于那些动态获取IP地址的连接的,比如,拨号上网、DHCP连接等。如果你有固定的IP地址,还是用SNAT target吧。

伪装一个连接意味着,我们自动获取网络接口的IP地址,而不使用--to-source 。当接口停用时,MASQUERADE不会记住任何连接,这在我们kill掉接口时是有很大好处的。如果我们使用SNAT target,连接跟踪的数据是被保留下来的,而且时间要好几天哦,这可是要占用很多连接跟踪的内存的。一般情况下,这种处理方式对于拨号上网来说是较好的(这有利于已有那连接继续使用)。如果我们被分配给了一个不同于前一次的IP,不管怎样已有的连接都要丢失,但或多或少地还是有一些连接记录被保留了(真是白痴,是吧)。

即使你有静态的IP,也可以使用MASQUERADE,而不用SNAT 。不过,这不是被赞成的,因为它会带来额外的开销,而且以后还可能引起矛盾,比如它也许会影响你的脚本,使它们不能用。

注意,MASQUERADE和SNAT一样,只能用于nat表的 POSTROUTING链,而且它只有一个选项(不是必需的):

Table 6-19. MASQUERADE target

Option --to-ports
Example iptables -t nat -A POSTROUTING -p TCP -j MASQUERADE --to-ports 1024-31000
Explanation 在指定TCP或UDP的前提下,设置外出包能使用的端口,方式是单个端口,如--to-ports 1025,或者是端口范围,如--to- ports 1024-3000。注意,在指定范围时要使用连字号。这改变了SNAT中缺省的端口选择,详情请查看 SNAT target。


6.5.12. SNAT target
这个target是用来做源网络地址转换的,就是重写包的源IP地址。当我们有几个机子共享一个Internet 连接时,就能用到它了。先在内核里打开ip转发功能,然后再写一个SNAT规则,就可以把所有从本地网络出去的包的源地址改为Internet连接的地址了。如果我们不这样做而是直接转发本地网的包的话,Internet上的机子就不知道往哪儿发送应答了,因为在本地网里我们一般使用的是IANA组织专门指定的一段地址,它们是不能在Internet上使用的。SNAT target的作用就是让所有从本地网出发的包看起来都是从一台机子发出的,这台机子一般就是防火墙。

SNAT只能用在nat表的POSTROUTING链里。只要连接的第一个符合条件的包被SNAT了,那么这个连接的其他所有的包都会自动地被SNAT,而且这个规则还会应用于这个连接所在流的所有数据包。

Table 6-22. SNAT target

Option --to-source
Example iptables -t nat -A POSTROUTING -p tcp -o eth0 -j SNAT --to-source 194.236.50.155-194.236.50.160:1024-32000  
Explanation 指定源地址和端口,有以下几种方式:
1、单独的地址。

2、一段连续的地址,用连字符分隔,如194.236.50.155-194.236.50.160,这样可以实现负载平衡。每个流会被随机分配一个IP,但对于同一个流使用的是同一个IP。

3、在指定-p tcp 或 -p udp的前提下,可以指定源端口的范围,如194.236.50.155:1024-32000,这样包的源端口就被限制在1024-32000了。

注意,如果可能,iptables总是想避免任何的端口变更,换句话说,它总是尽力使用建立连接时所用的端口。但是如果两台机子使用相同的源端口,iptables 将会把他们的其中之一映射到另外的一个端口。如果没有指定端口范围, 所有的在512以内的源端口会被映射到512以内的另一个端口,512和1023之间的将会被映射到 1024内,其他的将会被映射到大于或对于1024的端口,也就是说是同范围映射。还要注意,这种映射和目的端口无关。因此,如果客户想和防火墙外的HTTP服务器联系,它是不会被映射到FTP control所用的端口的。

发帖
2107
C币
-235338
威望
378
贡献值
1
银元
-1
铜钱
4664
人人网人气币
0
只看该作者 5楼 发表于: 2010-04-13
我的RH9编译了netfilter/iptables模块后,MASQUERADE不能自动加载了,而SNAT不需要手动加载.
netfilter加的是"patch-o-matic-ng-20060227.tar.bz2"
iptables 安装的是1.3.5版.
只能手工加载MASQUERADE模块。有些什么错误会造成这样?

离线dorgel.
发帖
2169
C币
-193168
威望
399
贡献值
1
银元
-1
铜钱
4859
人人网人气币
0
只看该作者 6楼 发表于: 2010-04-13
看 FAQ,depmod -a,直到没错误为止

发帖
2073
C币
-139650
威望
368
贡献值
1
银元
-4
铜钱
4512
人人网人气币
0
只看该作者 7楼 发表于: 2010-04-13
谢谢,已解决,如版主所说,是编译了内核后没有demop -a
快速回复
限100 字节
如果您提交过一次失败了,可以用”恢复数据”来恢复帖子内容
 
上一个 下一个