magic_os 发表于 2011-2-20 10:35:35

一个默认路由的小问题

本帖最后由 magic_os 于 2011-2-20 16:49 编辑

Topo如下:



我先简单的描述一下这个网络~

R1上面分配了3个DHCP地址池(192.168.0/1/2.0),用来给PC1、PC2、PC3分配IP(地址池配置正确)
R1 S0/0/0 IP为12.1.1.1
并且R1上面使用默认路由指向R2的S0/0/0(12.1.1.2)
R1(config)#ip route 0.0.0.0 0.0.0.0 12.1.1.2

PC1、PC2、PC3都使用自动获取IP~

R2 S0/0/0 IP为12.1.1.2
   S0/0/1 IP为23.1.1.2
   Fa0/0 IP为192.168.2.1
并且在fa0/0设置了DHCP中继指向R1 12.1.1.1

R3 S0/0/1 IP为23.1.1.3
   Fa0/0 IP为192.168.0.1
   Fa0/1 IP为192.168.1.1
R3使用默认路由指向R2的S0/0/1(23.1.1.2)
并且在fa0/0和fa0/1设置了DHCP中继指向R1 12.1.1.1

----------------------------------------
问题在这里了

我在R2上面使用两个默认路由,一个指向R1一个指向R3:
R2(config)# ip route0.0.0.00.0.0.012.1.1.1
R2(config)# ip route0.0.0.00.0.0.023.1.1.3
这个时候问题出现了~PC1能够正确的获取IP
PC2和PC3都不能正确获取IP,这个是为什么呢?

另外~如果是上面这样两条默认路由同时指向不同的路由的情况
那么会优先选择哪条路由转发?或者拷贝成两份同时转发给两个路由?

-----------------------------------------

其实这个问题我知道只要将R2指向R1的那条默认路由删去
就能正确分配到IP了 ,
只是我不知道为什么设置两条默认路由后就不能分配到IP了,
本来我以为只有一条默认路由会起作用,所以我将
R2(config)# ip route0.0.0.00.0.0.012.1.1.1
R2(config)# ip route0.0.0.00.0.0.023.1.1.3
两条对调成
R2(config)# ip route0.0.0.00.0.0.023.1.1.3
R2(config)# ip route0.0.0.00.0.0.0 12.1.1.1
可是任然不能让PC2 PC3分配到IP~
删去其中的
R2(config)#no ip route0.0.0.00.0.0.0 12.1.1.1
就能正确分配了~就这个小问题~

还希望老师们各路英雄们赐教~谢谢谢谢~!


-------------------------------------------------------------------

对于这个问题我看完2楼薯薯的回复后仔细想了想~会不会是和DHCP的租约过程有关系~?

比如薯薯说的那个负载均衡~
Routing Descriptor Blocks:
    * 23.1.1.3
      Route metric is 0, traffic share count is 1
      12.1.1.1
      Route metric is 0, traffic share count is 1

那么DHCP Discover包首先发到R1,R1会去找匹配的地址池,找到后先发个ARP包确认这个IP没有使用,
然后发送一个DHCP offer这个offer如果刚好是走的第一条默认路由(23.1.1.3)这个offer包就能到达PC2 PC3~
这个时候PC2 PC3会回一个DHCP request给R1,问题就出现在这里~
R1的那个DHCP Ack回复包到达R2根据负载均衡就会走第二条默认路由,
从而倒置PC2 PC3一直收不到DHCP确认信息~

如果上面offer刚好是走的第二条默认路由(12.1.1.1)那么PC1 PC2连Offer都收不到~


不知道这个猜测对不对?因为在没有中继的情况下这些包都是广播的~有中继的情况 包是不是会单播呢?







薯薯 发表于 2011-2-20 12:55:50

本帖最后由 薯薯 于 2011-2-20 12:58 编辑

首先可以肯定的是一台路由上配置两条默认路由肯定是不对的,而在这里对调配置顺序时也不会对路由器传送数据包时进行路由表查询产生影响,就是说跟顺序没关系。
可以使用ip route 0.0.0.0就可以查看去往0.0.0.0 这个网段的数据包是如何发的,显示情况是
Routing Descriptor Blocks:
    23.1.1.3
      Route metric is 0, traffic share count is 1
* 12.1.1.1
      Route metric is 0, traffic share count is 1

就是说会负载均衡,多个数据包发送过来会一边发一个轮流。

至于为什么PC2,PC3无法获取IP,我认为的是:

当PC1发送DHCP请求时,因为有中继,所以请求是以192.168.2.0网段作为源,发往12.1.1.0网段,因为这两个网段在R2上都属于直连,所以发送过程中都与R2的默认路由无关。
而PC2与PC3发送DHCP请求的时候,源是以192.168.0.0 和192.168.1.0作为源,发往12.1.1.0网段,R3使用默认路由发送给R2,R2再根据直连路由发送给R1,而R1反馈DHCP请求时,根据默认路由发送给R2,问题出现了,R2要将数据包转发给一个未知的PC2,PC3网段时,由于没有直连路由,就使用默认路由了,而默认路由有2两条,就产生无法正确发送的现象了。

将R2上去往R1的默认路由删去,那么返回PC2,PC3的DHCP反馈就可以正确回到R3了
(路由表里,直连路由也是路由,并且优于静态路由和默认路由)


小皮球 发表于 2011-2-20 13:11:13

-victory-署署回答得很详细,顶上~

jkrh9 发表于 2011-2-20 13:35:03

--

明天¤晴天℃ 发表于 2011-2-20 15:18:43

楼主人呢? 楼上童鞋回答的可以么

Vneng 发表于 2011-2-20 15:51:28

-lol-云鹏说的很好...

喵喵 发表于 2011-2-20 16:11:46

雄鹰一只只展翅飞翔了!论坛里的娃放出问题出来吧!

magic_os 发表于 2011-2-20 16:22:29

回复 2 # 薯薯 的帖子

楼主人今天出去买东西去了..刚回~


首先谢谢薯薯~!俺理解了~--
其次谢谢上面这些关注的朋友们~希望我的问题也能帮助到以后遇到这同类问题的朋友~
我犯错的地方大家就不要犯错啦~

看来那个show ip route +IP的作用还是蛮大的 ~ 呵呵我曾经一直就用show ip route不加IP的情况


magic_os 发表于 2011-2-20 16:26:07

回复 7 # 喵喵 的帖子

如果可以的话...俺过一段时间要申请一个“问题娃”勋章..
俺感觉自己的问题挺多的~哈哈 ~

还好论坛有这么多高手给俺遮着~俺不怕出丑....

jiazai886 发表于 2011-2-20 16:45:25

解释得很透彻!!!顶
页: [1] 2 3
查看完整版本: 一个默认路由的小问题