跪求指点linux路由机制
路由表:10.108.144.0/22 dev eth0 proto kernel scope link src 10.108.146.37(教育网出口)
172.16.1.0/24 dev vlan1 proto kernel scope link src 172.16.1.101
172.16.2.0/24 dev vlan2 proto kernel scope link src 172.16.2.101
172.16.3.0/24 via 172.100.0.1 dev eth4 proto zebra metric 2
172.16.4.0/24 dev vlan4 proto kernel scope link src 172.16.4.101
172.100.0.0/24 dev eth4 proto kernel scope link src 172.100.0.2
172.16.1.0网段有两台主机:host1与vlan1桥接,地址为172.16.1.2,网关设置为vlan1(172.16.1.101);另一台host2地址为172.16.1.2,它的网关是172.16.1.100。两边做了GRE打隧道相连的,2层是通的,互ping没有问题。eth4(172.100.0.2)是路由口。就好比在分布在两个楼的同一部门要处在同一2层,而每个楼的汇聚交换机要通过3层互连。eth4即为汇聚交换机互连的3层接口。
现在的问题是用host1(.1.1) ping vlan4(172.16.4.101)没有问题,但是用host2(.1.2) ping vlan4就不通。tcpdump -i eth4看到了从另外一个楼路由过来的host2 -> vlan4的包,但是tcpdump -i vlan4就是看不见这个包。。。这是什么问题啊,为什么从host1 -> vlan4的包就能找到vlan4,从host2 -> vlan4的包就不行呢?
另外,我一去掉vlan 1的IP地址,路由表变成了
default via 10.108.144.1 dev eth0
10.108.144.0/22 dev eth0 proto kernel scope link src 10.108.146.37
172.16.1.0/24 via 172.100.0.1 dev eth4 proto zebra metric 2
172.16.2.0/24 dev vlan2 proto kernel scope link src 172.16.2.101
172.16.3.0/24 via 172.100.0.1 dev eth4 proto zebra metric 2
172.16.4.0/24 dev vlan4 proto kernel scope link src 172.16.4.101
172.100.0.0/24 dev eth4 proto kernel scope link src 172.100.0.2
可见从eth4学到了172.16.1.0网段的地址,这时host2 -> vlan4成功。。。
难道说路由的时候还看包的源地址是否与路由表中相关网段相不相同?
跪求大神解答!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
实验环境:Ubuntu 12.0.4,openvswitch做虚拟三层交换机,quagga做路由器,rip2做动态路由协议
这时详细的文档
页:
[1]