详解电信和网通之间架桥的方法.

时间:2007-01-04 10:28:39   来源:  作者:whsong  点击:次  出处:技术无忧
关键字:详解

详解电信和网通之间架桥的方法.

先看看一个数据包在整个中转过程中的源ip地址和目的ip地址的变化.(附图)

从图上可以看出,主要是两个组件起作用,一个是iptables的nat表的dnat和snat功能,
一个是本地路由规则.(图中是用默认路由,后面我会写一个用自定义路由表的)

总体的思路就是利用iptable改变数据包的源ip地址和目的ip地址,同时用linux的多路由表功能进行ip包的导向,导向到所学要的网卡上.

来看看具体的操作步骤:
1. 首先打开主机的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的数据包能够正确返回,至于为啥你们自己想想.:)

如果你的主机已经设置了默认网关,那么下面的步骤将帮助你设置正确的默认网关.


1)

代码:
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)


3)
本地路由规则的设置,首先定义两条自定义的本地路由条目.

代码:
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这个网关出去的.

经过上面三个步骤的设置,我们就完成了,一台中转为北方用户访问的设置.
那有的人会问这个只是单向的设置,那么用户返回的数据包怎么处理呢?
这个问题我当初也在想.不过你忘了我们是用snat来改变最终数据包的源ip地址嘛?
Nat不是对出去的连接有记录的功能嘛?这个叫做ip_conntrack,也就是说只要数据包是从snat出去的.那么回来的时候你就不用操心了,iptable的nat会替你清理源ip地址和目的ip地址的

当昨晚这些清理后,回来的数据包的源ip地址就是原来北方网通的ip,这个也就是默认网关为啥要设成北方网通的网关的原因,因为这样就不要一个个去设置ip ru的规则了,全部未知的ip走默认路由就可以了.:)

如果你们对ip ro 或者ip ru的用法有疑问可以先看看这个帖子

http://www.be10.net/vbb3.0.1/showthread.php?t=569

这个问题的最初帖子在
http://bbs.et8.net/bbs/showthread.php?t=602819

所上传图片


图片:
本文引用自PC51.NET


相关文章

文章评论

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