LinuxSir.cn,穿越时空的Linuxsir!

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

请教iptables做地址映射时postrouting的用法

[复制链接]
发表于 2005-9-27 18:09:17 | 显示全部楼层 |阅读模式
做地址映射1.2.3.4-〉192.168.1.40,我的规则一直是这样写:
/sbin/iptables -t nat -A PREROUTING -i eth1 -d 1.2.3.4 -j DNAT --to 192.168.1.40

/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.40 -j SNAT --to 1.2.3.4

但是,后来我发现去掉"/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.40 -j SNAT --to 1.2.3.4"工作(试验了http、ftp)照样正常。请问?'/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.40 -j SNAT --to 1.2.3.4'是多余的吗?
发表于 2005-9-28 10:46:21 | 显示全部楼层
Post by dylibin
做地址映射1.2.3.4-〉192.168.1.40,我的规则一直是这样写:
/sbin/iptables -t nat -A PREROUTING -i eth1 -d 1.2.3.4 -j DNAT --to 192.168.1.40

/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.40 -j SNAT --to 1.2.3.4

但是,后来我发现去掉"/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.40 -j SNAT --to 1.2.3.4"工作(试验了http、ftp)照样正常。请问?'/sbin/iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.40 -j SNAT --to 1.2.3.4'是多余的吗?


1,你首先要明白什么是"REROUTING" ,什么是"OSTROUTING",我们可以简单的用下面的关系来表示:

源地址发送数据--> {PREROUTING-->路由规则-->OSTROUTING} -->目的地址接收到数据

当你使用:iptables -t nat -A PREROUTING -i eth1 -d 1.2.3.4 -j DNAT --to 192.168.1.40
时,你访问1.2.3.4,linux路由器会在“路由规则”之前将目的地址改为192.168.1.40,并且Linux路由器(iptables)会同时记录下这个连接,并在数据从192.168.1.40返回时,经过linux路由器将数据发送到那台发出请求的机器。所以你的"OSTROUTING"规则没有起作用。

而"OSTROUTING"是“路由规则”之后的动作。

2,你最好能有个详细的网络拓扑图,这样我可以更好的给你解释。

3,我可以具一个简单的例子说明"REROUTING"和"OSTROUTING"的不同应用环境:

3.1 PREROUTING的应用,
一般情况下,PREROUTING应用在普通的NAT中(也就是SNAT),如:你用ADSL上网,这样你的网络中只有一个公网IP地址(如:61.129.66.5),但你的局域网中的用户还要上网(局域网IP地址为:192.168.1.0/24),这时你可以使用PREROUTING(SNAT)来将局域网中用户的IP地址转换成61.129.66.5,使他们也可以上网:
iptables -t nat -A PREROUTING -s 192.168.1.0/24 -j SNAT 61.129.66.5

3.2 POSTROUTING的应用,
POSTROUTING用于将你的服务器放在防火墙之后,作为保护服务器使用,例如:
A.你的服务器IP地址为:192.168.1.2;
B.你的防火墙(Linux & iptables)地址为192.168.1.1和202.96.129.5

Internet上的用户可以正常的访问202.96.129.5,但他们无法访问192.168.1.2,这时在Linux防火墙里可以做这样的设置:
iptables -t nat -A POSTROUTING -d 202.96.129.5 -j DNAT 192.168.1.2

结:最要紧的是我们要记住PREROUTING是“路由规则”之前的动作,POSTROUTING是“路由规则”之后的动作!
回复 支持 反对

使用道具 举报

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

本版积分规则

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