曲径通幽论坛

标题: POSTROUTING 和 PREROUTING 应用举例 [打印本页]

作者: beyes    时间: 2014-4-16 11:08
标题: POSTROUTING 和 PREROUTING 应用举例
1. POSTROUTING 举例
  1. iptables -t nat -A POSTROUTING -o eth0 -s 192.168.0.0/24 -j SNAT --to 118.88.19.110
复制代码


-t nat :  选择表,表示使用 Netfilter 的 NAT 机制。

-A POSTROUTING : 选择功能,表示要执行的操作为 SNAT 机制。

-o eth0 : 选择数据包流向的网口,在执行 SNAT 或 DNAT 时该项必选,否则出错。

-s 192.168.0.0/24 : 指定来源网段。

-j SNAT --to 118.88.19.110 : 如果数据包符合上面给出的条件,那么将源 IP 改为 118.88.19.110,这个就是 NAT 主机对外的公网 IP 了。


经过上面的设置后,处于 192.168.0.0/24 网段中的计算机就可以上网了。可能会对此有疑问,只设置数据包的流出方向,而不设置数据包的进入方向?答案是,我们不必要担心这个问题,因为 Netfilter 的工程师也早已想到,为了我们的方便,就自动的将另一半给补上了,这对于我们来说是透明的。因此,不管使用的是 SNAT 还是 DNAT 规则,NAT 机制都会自动为我们考虑另一个方向的数据包。

2. PREROUTING 举例
  1. iptables -t nat -A PREROUTING -i eth0 -d 118.99.19.110 -j DNAT --to 192.168.1.100
复制代码


如果说 POSTROUTING 是用于内网向外网 NAT 的转换访问,那么 PREROUTING 则用在外网向内网的 NAT 访问了。比如,我们在内网里假设了一台 WEB 服务器(IP 地址为 192.168.1.100),而在路由主机的公网 IP 是 118.99.19.110,这时候就要用到 PREROUTING 。

上面命令的语法和 SNAT 的相似。需要注意的是,POSTROUTING 时,网卡那里是 -o eth0,而 PREROUTING 时,用的是 -i eth0 。整条命令的意思是(以 WEB 服务器为例说明),外网向 118.99.19.110 这个 IP 发送 HTTP 请求时,都转到 192.168.1.00 这台内网计算机上。






欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2