开启左侧

linux,双网卡,路由,TC,做的好累!

[复制链接]
发表于 2012-2-11 02:02:07 | 显示全部楼层 |阅读模式
我有四台电脑,串联,如下图:
1――2――3――4
中间2 3两台双网卡做路由,但做路由的PC与远端主机就是ping不通――2ping不通4,3ping不通1,但只要相领的两台电脑都能很好的ping通(包括双网卡中的任意一张网卡)。
而且更奇怪的是如果拓朴如下图:
1――2――4则路由功通很好,一切正常, 1 4之间完全可以ping通,甚至在windows下还能局域网互访共享文件。

我没有用软件路由,用的是/proc/sys/net/ipv4/ip_forward置1这个方法,并且用的是静态路由。

现在想问一下,到底是2 3两台双网卡路由实现1 4通信在linux下根本就是不支持,还是会不会是其它原因,比如说我可能有些设置出错或是什么的原因

PS:还想问一下,这里有没有人对TC熟一点,linux下的traffic control,有些问题想请教一下。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-11 02:02:09 | 显示全部楼层
1--2--4,只要开启2的路由转发1,4网关设置好就可以了,但1--2--3--4涉及的网段很多,一般要用到动态路由才能实现,如比较著名的Zebra,静态路由或许也能实现,如果你的网段不是很多的话,对于TC,看:http://www.linuxeden.com/forum/t130419.html
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
 楼主| 发表于 2012-2-11 02:02:10 | 显示全部楼层
谢楼上的,我也是这么考虑的,昨天弄了半天,搞不定,今天去找点动态路由的资料,我昨天是将几台路由的功能全打开的,会错的话也就估计是静态路由表项上出错了,但昨天又找不到错误.唉,麻烦啊.
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
 楼主| 发表于 2012-2-11 02:02:11 | 显示全部楼层
今天我又在做这个路由,怪的很,我现在用四台机:
1――2――3――4
Device Eth0 Eth1
PC1 192.168.10.2/24
Route1 192.168.10.1/24 192.168.20.1/24
Route2 192.168.20.2/24 192.168.30.1/24
PC2 192.168.30.2/24

1 4为两客户机――PC1 PC2,只有一张网卡。
2 3为两模拟的路由linux PC,有双网卡。
三个网段,同网段的网卡互连,这个我还是不会出错的。
两路由器都开启/proc/sys/net/ipv4/ip_forward,

开始时1 4号机还没开启,只是2――3互连,完全四张网卡ping通没问题,但当连上1号机后,1号机――linux redhat9 也装了双网卡,但一网卡没接网线,接上1号机后,2号机仍能与1号机ping通,2 3号机也能ping通,但1 3号机不通。我觉得我路由表也没设错,设的是静态路由,下附三台机子的路由表:
我在终端中敲route后:
1号机:

kernel ip routing table
destination gateway genmask flag metric ref use iface
192.168.50.0 X 255.255.255.0 U 0 0 0 eth1
192.168.10.0 X 255.255.255.0 U 0 0 0 eth0
192.168.20.0 X 255.255.255.0 U 0 0 0 eth0
127.0.0.0 X 255.0.0.0 U 0 0 0 lo
169.254.0.0 X 255.255.0.0 U 0 0 0 eth1

PS:在一开始1号机启动的时候,默认的eth1 ip是 192.168.30.1, eth0 192.168.20.2,当时2 3号机在线,但我开机后马上改过来了,变成上面所示了,这应该没太多问题吧。


2号机:
kernel ip routing table
destination gateway genmask flag metric ref use iface
192.168.20.0 X 255.255.255.0 U 0 0 0 eth1
192.168.30.0 X 255.255.255.0 U 0 0 0 eth1
192.168.10.0 X 255.255.255.0 U 0 0 0 eth0
127.0.0.0 X 255.0.0.0 U 0 0 0 lo

3号机:
kernel ip routing table
destination gateway genmask flag metric ref use iface
192.168.20.0 X 255.255.255.0 U 0 0 0 eth0
192.168.30.0 X 255.255.255.0 U 0 0 0 eth1
192.168.10.0 X 255.255.255.0 U 0 0 0 eth0
127.0.0.0 X 255.0.0.0 U 0 0 0 lo


望各位指点啊,十分感谢,为了这个我搞了两天了。还是不行。怪事啊。路由表也不觉有错啊。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-11 02:02:12 | 显示全部楼层
关键是一定要设好每个网卡的gateway,否则很容易混乱,楼主如果每个linux开启路由,如果要从1--ping--4,在3上加个静态路由试试:
route add -net 192.168.30.0 netmask 255.255.255.0 dev eth1
同理如果4--ping--1则在2上加。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
 楼主| 发表于 2012-2-11 02:02:13 | 显示全部楼层
谢谢各位指点,我今天己经调通四机了,但我的目标是五机串联路由,今天试了一下,还是有问题,请各位多多帮忙指点迷津.
http://www.linuxeden.com/forum/t135223.html
上面是我发贴的链接.
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-11 02:02:15 | 显示全部楼层
[QUOTE=yuzhongdeyu]谢谢各位指点,我今天己经调通四机了,但我的目标是五机串联路由,今天试了一下,还是有问题,请各位多多帮忙指点迷津.
http://www.linuxeden.com/forum/t135223.html
上面是我发贴的链接.[/QUOTE]
先问1--ping--4在3上加静态路由通?如果通,1--ping--5再在4上加静态路由。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
 楼主| 发表于 2012-2-11 02:02:16 | 显示全部楼层
老大们,我回来了,终于搞定了,这几天的问题一扫而空了,原来我几台机子的路由表是完全没问题的,只是不知为什么arp通告上有点问题,几台机子ping 最远端的机子时,不通,我先用tcpdump监听,发现有请求,但只是无回应,然后我敲入arp命令,发现arp表中的相对应的mac一栏写在:incomplete,我就用arp命令,强行添加一个mac地址,现在一切都解决了。
我就想啊,我再怎么笨也不可能把才要加六个静态路由这么简单的事弄错,现在算是勉强解决了问题。但为什么会出现arp不通告的问题,还有待检查,但能用就行,以后空下来再说,接下去还要试验两个TC命令的脚本。呵呵,有问题,还会再麻烦各位老大们的。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
发表于 2012-2-11 02:02:17 | 显示全部楼层
把经过写出来大家共同学习共同进步,并加精华。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
 楼主| 发表于 2012-2-11 02:02:19 | 显示全部楼层
本来今天是想好好休息一下的,但sitlhj大哥让我写仔细点,我只好从命写一下了。呵呵。
其实五机串联是一个很简单的环境,但就是因为太简单了,所以弄的我抓狂。
具体的网络拓可见我的附件,也就五台机串联,1――2――3――4――5;
头尾两台做客户端的普通PC,环境是Windows XP,只有单网卡;
中间三台是redhat 7.3 (内核是2.4.18-3,老机子了再高就跑不动了,本来中间一台用的是定制过内核的redhat 9 2.4.20-18,但在最后重装了一下成了redhat 7.3),每一台都模拟路由器,有双网卡;
网段从10.1分配置40.2,五机共八块网卡,子网掩码都是/24。

开始时我觉得是很简单的一件事,也就在客户端机子上将领近一网卡的IP设为网关,三台路由机子上加上六个静态路由就行,每台告两个,通过一下网段,我用的静态路由添加的命令如下:
route add -net 192.168.10(20,30,40,).0 netmask 255.255.255.0 dev eth0(1)
其它没有加减任何路由表中的条目,
并且开启路由转发――echo 1 > /proc/sys/net/ipv4/ip_forward
然后当我以为大功告成时,出现了巨大的问题,路由不通,最常见的是五机中各机都只和相领机子ping通(如果相领机子有双网卡,则双网卡都能ping通),只要隔一台机子就不能转发!有时改动一些路由表后(具体怎么改我也忘了,这几天做这个有点混了,大概记得也就把静态路由去掉改为默认网关――route add default gw 192.168.10.1之类的),有些机子能够找到隔一台的机子了,但首尾两端的机子还是不通,而且我以前有经验,在redhat版本中不能设两个网关,不然机子出错,所以总也找不出一个好的解决办法。
后来,我先不用五机串联了,先四机串联,去掉原来拓朴中的一台路由,加上静态路由,但问题依然,
然后我改了一下路由设置,在四机环境下不给中间的两台路由器添加静态路由,只分别添加了默认网关(分别以对方的IP为网关),在这种情况下,竟然四机通了,首尾都通了。
然后我加入最后一台linux pC,做为中心的路由,其间因为怀疑这台机子系统问题,当初改内核时选项有些问题,故重装了系统。然后与四机串联时的设置类似的,1 2 两机的10 20网段不变,2机以3机的20.2为网关,3机以2机的20.1为网关,并添加一条静态路由:
route add -net 192.168.40.0 netmask 255.255.255.0 dev eth1,4机以3机的30.1为网关,两客户机则以领接的那台路由器为网关,这样接好后,10.2能与40.1通,但就是不通40.2,也就1 2 3 4机通相互通,但奇怪的是1 2 3机不通与5机40.2通,回报总是说:3号机的两张网卡回报,不能达到40.2(这话是我翻译的,机子中的是英文,具体英文看http://www.linuxeden.com/forum/t135223.html的贴子中。),只有与5机相连的4机才能与它通。
我然后用2号机ping 5号机40.2,并在3号机用tcpdump监听――tcpdump -i eth0/1,发现2号机有发请求过来,但就是不转发,只是回通告说40.2不可达。然后我用arp命令,调出系统中的arp表,发现40.2这一项中的相对应的mac一栏写在:incomplete,
我就用arp -s IPaddress macaddress命令,强行添加4号机30.2那块网卡的mac地址给它,然后一切就正常了,完全没问题了。
现在我总结下来,发现七层网络中的第三层路由表是没问题的,主要出问题出来这个arp 协议上,不知为什么,3号机就是得不到5号机40.2的MAC地址,是4号机没有通告给它,还是3号机就根本没有发出地址解析请求?其实我不用默认网关,用静态路由时也是这个问题,两机间不相互通告mac地址,才会出现隔一台机子就不通的问题。但我没有改过任何的ARP的参数啊,这个问题始终不清楚。
我现在时间有限,接下去还要在路由中加入diffserv功能,没太多时间想这个问题了!写了这么多也就是给大家提个醒,有时碰到路由的问题时,不要总是盯着路由表看,有时路由表没问题,可能出问题出在第二层的MAC地址上面。
第一次写这么长的贴,大家有问题可以向我提,我也是刚学linux不久,以前从小用的是windows,从95到XP,唉,被微软害了,现在都不太会用linux,还请大家多多指教啊。
我的MSN:[email="xulei01_18@msn.com"]xulei01_18@msn.com[/email]。望各位指点,交流。十分感谢。
平度网:www.pingdu.co 平度论坛:bbs.pingdu.co
您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

 
QQ在线咨询
售前咨询热线
0532-88371356
售后服务微信
pingduwangzhan
快速回复 返回顶部 返回列表