详解电信和网通之间架桥的方法.
详解电信和网通之间架桥的方法. 先看看一个数据包在整个中转过程中的源ip地址和目的ip地址的变化.(附图) 从图上可以看出,主要是两个组件起作用,一个是iptables的nat表的dnat和snat功能, 总体的思路就是利用iptable改变数据包的源ip地址和目的ip地址,同时用linux的多路由表功能进行ip包的导向,导向到所学要的网卡上. 来看看具体的操作步骤: 代码: echo "1">/proc/sys/net/ipv4/ip_forward 2. 假设我们的中转机配置如下 代码: eth0 电信线路 218.5.2.52 mask 255.255.255.0 gw 218.5.2.254eth1 网通线路 218.104.235.20 mask 255.255.255.248 gw 218.104.235.17 假如,我们要让北方的用户通过中转机来访问我们的南方站点.那么请把你的中转机的默认网关设置为北方网通的网关,我这里是218.104.235.17,这样是为了让所有目的地址为北方ip的数据包能够正确返回,至于为啥你们自己想想.:) 如果你的主机已经设置了默认网关,那么下面的步骤将帮助你设置正确的默认网关.
代码: Ip ro ch default via 218.104.235.17 最好在终端上做,因为我有一个内网网卡,所以我直接在主机上做了,因为内网不需要路由,网关设错照样访问. 然后你可以添加你的iptables的规则了.这次我是一个80端口的web服务.那么我的iptable的规则就是如下 2) 代码: iptables –t nat -A PREROUTING -i eth1 -p tcp -d 218.104.235.20 --dport 80 -j DNAT --to-destination 222.77.177.132iptables –t nat -A POSTROUTING -o eth0 -p tcp -d 222.77.177.132 --dport 80 -j SNAT --to-source 218.5.2.52 解释一下第一个prerouting的规则,因为我们是为北方用户提供方便,所以北方用户访问中转机的eth1(网通的网卡),所以数据包一进来就是从eth1进来,所以当用户访问218.104.235.20,并且端口是80的时候,这个数据包的目的i p地址就被替换成我们在南方服务器的ip地址(222.77.177.132) 第二个是postrouting的规则,数据包在被这个规则处理之前应该是被本地的路由处理后,才发送到这里的.他说明当一个数据包要从eth0出去的时候,目的地址是222.77.177.132,目的端口是80的时候源ip地址被替换成电信线路的ip (218.5.2.52)
代码: Ip ro add default via 218.104.235.17 table 200Ip ro add default via 218.5.2.254 table 201 然后规定一下,当数据包的目的地址是222.77.177.132它走那一个网关. 代码: Ip ru add to 222.77.177.132 table 201 这样当一个数据包的目的地址是222.77.177.132的时候它从201这个自定义路由表取路由规则,是从218.5.2.254这个网关出去的. 经过上面三个步骤的设置,我们就完成了,一台中转为北方用户访问的设置. 当昨晚这些清理后,回来的数据包的源ip地址就是原来北方网通的ip,这个也就是默认网关为啥要设成北方网通的网关的原因,因为这样就不要一个个去设置ip ru的规则了,全部未知的ip走默认路由就可以了.:) 如果你们对ip ro 或者ip ru的用法有疑问可以先看看这个帖子 |
图片:
本文引用自PC51.NET











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面