LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 682|回复: 1

急:SNAT 无效但是 MASQUERADE 有效?

[复制链接]
发表于 2006-4-5 20:26:39 | 显示全部楼层 |阅读模式
我有一台不算很老的 PC,现在打算用它来做 NAT 网关。这个机器上装了两块网卡,分别连接至内网和外网,配置如下:

内网网卡 eth0:192.168.0.1,对应内网地址段 192.168.0.0/24,内网其他机器以这台 PC 的内网网卡 IP 地址(192.168.0.1)做网关;
外网网卡 eth1:10.13.9.252,对应外网地址段 10.13.9.0/24,外网网关 10.13.9.254。

我装的是 FC4,默认的内核版本是 2.6.11-1.1369_FC4,iptables 自带的版本是 1.3.0。路由规则如下:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.13.9.0       *               255.255.255.0   U     0      0        0 eth1
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
169.254.0.0     *               255.255.0.0     U     0      0        0 eth1
default         10.13.9.254     0.0.0.0         UG    0      0        0 eth1

我用 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE 后,内网的机器无法访问到外网,ping 10.13.9.254 不通。用 iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to 10.13.9.250 后,想把内网的机器用 10.13.9.250 这个地址转换进入外网,内网机器还是无法访问外网,ping 10.13.9.254 不通。

后来我用 yum 升级内核至 2.6.15-1.1833_FC4,用 MASQUERADE 就可以,但是用 SNAT 则还是不行,因为内网要针对不同地址范围做更细的划分,使用多个不同的外网地址做地址转换,比如 192.168.0.1-192.168.0.10 的转换为 10.13.9.250,192.168.0.11-192.168.0.20 转换为 10.13.9.251 等,我想还是要靠 SNAT才行,但是现在只有 MASQUERADE 能起作用,但是 SNAT 始终无法起作用,不知道是不是内核不支持?还是要靠自己编译内核才行吗?我试过自己编译 iptables 1.3.5 也是这个样子,只有 MASQUERADE 起作用,SNAT 没有作用。我不需要内网机器做端口映射,只需要能作到类似 MASQUERADE 那样的效果,但要求能对不同范围的内网地址指定转换为不同的外网地址,恳请哪位高手大人指点迷津,非常感谢!!!
 楼主| 发表于 2006-4-6 11:53:04 | 显示全部楼层
感谢 springwind426 的帮助,问题解决了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表