深入浅出之-route命令小结

本文深入解析Linux路由配置方法,包括添加默认网关、网络路由与主机路由的操作,提供实操示例与永久生效策略。同时,讨论多网段生产环境中的网段划分与路由解决方案,为运维人员提供实用指导。

缘起:本文为老男孩linux培训第七次课前考试题及参考答案,有朋友在看完http://oldboy.blog.51cto.com/2561410/784625内容后,希望补充此内容,因此,发布如下,希望大家喜欢。完整试题及答案如下:

考试题一:linux下如何添加路由(百度面试题)

以上是原题,老男孩老师翻译成如下3道题。

a.如何用命令行方式给linux机器添加一个默认网关,假设网关地址为 10.0.0 .254

b. 192.168.1.0网段, 192.168.1.1网关的某一服务器想连入172.16.1.0/24,该如何添加路由(奇虎360

c.如果添加一个主机路由?

请分别解答。

解答:d -net 172.16.0.0  netmask 255.255.255.0 gw 192.168.1.1

route 命令使用方法:

a.缺省网关路由

    默认网关就是数据包不匹配任何设定的路由规则,最后流经的地址关口!网关按字面意思就是网络的关口,就相当于我们家里房子的门一样,如果外出就要经过房门,数据包也是一样。

本题的答案:

route del default gw 10.0.0.254

解答实践:

[root@oldboy ~]# route -n #==>查看路由表,netstat -rn也可以。

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0

#==>这里就是系统的默认网关信息,表示去任何地方(0.0.0.0),都发给10.0.0.254,因为是默认网关,所以,放在了最后一条。路由也是有顺序的,如果不符合任何一条规则就交给默认网关处理。

[root@oldboy ~]# route del default gw 10.0.0.254 #==>这个命令是删除默认的网关。

[root@oldboy ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

[root@oldboy ~]# route add default gw 10.0.0.254    #==>这个命令是添加默认的网关,也是本题的答案。

[root@oldboy ~]# netstat -rn

Kernel IP routing table

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0 #==>又回来了

[root@oldboy ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0 #这里就是添加的默认网关记录。

特别强调:实际上route add default gw 10.0.0.254 就相当于route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.254

b.网络路由:即去往某一网络或网段的路由

    一般多网段之间互相通信,希望建立一条优先路由,而不是通过默认网关时就可以配置网络路由。还是拿房子比喻,你现在不是要出门,而是卧室,卫生间,去卧室就要经过卧室的门,去卫生间也要经过卫生间的门,这里的卧室和卫生间的门就可以认为是去往某一网段的路由,而不是默认路由(即房子的门。)

    实际工作中会有需求,两个不同的内部网络之间互访,而不是出网访问,就是上面例子的情况。

    本题的答案:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

解答实践:

[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

SIOCADDRT: 网络不可达 #==>当连不通地址192.168.1.1时,无法添加路由。

[root@oldboy ~]# ifconfig eth0:0 192.168.1.1/24 up #==>添加一个IP别名用于临时测试,如果永久生效最好加双网卡或写入到配置文件。

[root@oldboy ~]# ifconfig eth0:0 #==>查看添加的IP别名(网络里把这种多IP的方式称为子接口)

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:65:A4:FD 

          inet addr:192.168.1.1  Bcast:192.168.1.255  Mask:255.255.255.0

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

再来添加去192.168.1.0的数据包,交给192.168.1.1处理。

[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

[root@oldboy ~]# netstat -rn   #==>route -n很像。

Kernel IP routing table

Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface

10.0.0.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0

192.168.1.0     192.168.1.1     255.255.255.0   UG        0 0          0 eth0 #==>这就是网络路由

192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0

0.0.0.0         10.0.0.254      0.0.0.0         UG        0 0          0 eth0

拓展:其他写法

[root@oldboy ~]# route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0  #==>指定设备而不是地址。

[root@oldboy ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

192.168.1.0     192.168.1.1     255.255.255.0   UG    0      0        0 eth0

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0

[root@oldboy ~]# route del -net 192.168.1.0/24 dev eth0   

[root@oldboy ~]# route add -net 192.168.1.0/24 dev eth0   

[root@oldboy ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

169.254.0.0     0.0.0.0         255.255.0.0     U     0      0        0 eth0

0.0.0.0         10.0.0.254      0.0.0.0         UG    0      0        0 eth0

总结:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1

route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0

route add -net 192.168.1.0/24 dev eth0 

route del -net 192.168.1.0/24 dev eth0  

特别强调:以上配置在重启网络时都会失效,那么如何让它永久生效呢?

如果要是永久生效,有如下几种方法:

方法一:

vi /etc/sysconfig/network-scripts/route-eth0  #默认不存在此文件

加入如下内容:

192.168.1.0/24 via 192.168.1.1

提示:写到配置里,重启网络服务和重启系统都会生效!

 

方法二:

vi /etc/sysconfig/static-route  #默认不存在此文件

加入如下内容:

any net 192.168.1.0/24 gw 192.168.1.1

提示:写到配置里,重启网络服务和重启系统都会生效!

 

方法三:

vi /etc/rc.local

加入如下内容:

route add -net 192.168.1.0/24 gw 192.168.1.1

PS: 方法一推荐生产环境使用

提示:方法三写到/etc/rc.local里只在开机时加载,当手工重启网络后会失效,但是重启系统后会生效!

 

如果是配置默认路由网关可以再网卡配置里:
[root@oldboy ~]# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=10.0.0.254

c.主机路由:就是去往某个主机地址如何配置路由

/sbin/route add -host 192.168.2.13 dev eth2

/sbin/route add -host 202.81.11.91 dev lo

例如:keepalivedheartbeat高可用服务器对之间的使用单独网卡接心跳线通信就会用到以上主机路由。

route命令拓展:

删除一条默认路由:

route del default gw 10.0.0.254

删除一条静态路由:

route del net 目标网络 netmask

如:route del -net 192.168.1.0/24 route del -net 192.168.1.0 netmask 255.225.255.0

删除一条主机路由:

route del -host 192.168.1.10 dev eth0

有关route命令更详细的内容需要大家执行man route查看帮助,并仔细总结。

有关此题,我们谈下多网段生产环境网段划分及路由的解决方案(1000台机器划分网段方案)。我们能感受到route命令不同功能应用案例。

请参考 老男孩linux运维实战培训-生产环境大于254台机器网段划分及路由解决方案案例

 

本文出自 “老男孩的linux博客” 博客,请务必保留此出处http://oldboy.blog.51cto.com/2561410/974194

<think>我们已经切换到了关于华为路由器命令的讨论。用户现在询问的是`import-route direct`命令的含义。 根据之前的上下文,用户曾引用过一些内容,但那些引用似乎与当前问题不直接相关(一个关于XML路由引用,另一个关于高并发系统设计)。因此,我们需要忽略那些不相关的引用,专注于解释`import-route direct`命令。 在华为路由器中,`import-route direct`是一条用于路由协议(如OSPF、IS-IS等)中的命令,它的作用是将设备上通过直连路由(direct routes)学习到的路由信息引入到当前路由协议中。 以下是详细解释: ### 命令含义 - **`import-route direct`**:将设备上现有的直连路由(Direct routes)引入到当前配置的路由协议进程中。 - **直连路由**:指设备上直接连接到本地接口的网络路由。例如,当给一个接口配置IP地址并激活后,设备会自动生成一条该接口所在网段的直连路由。 - **路由引入**:将一种路由协议学习到的路由或者直连路由、静态路由等引入到另一种路由协议中,使得路由信息可以在不同协议之间传递。 ### 工作原理 1. **收集直连路由**:设备会检查当前所有激活接口的直连路由。 2. **注入路由协议**:将这些直连路由作为外部路由(或内部路由,取决于协议)注入到运行的路由协议中。 3. **通告给邻居**:路由协议会将这些引入的路由通过协议报文通告给邻居设备。 ### 配置示例(以OSPF为例) ``` ospf 1 import-route direct ``` 上述配置将设备上的直连路由引入到OSPF进程中,OSPF会将这些直连路由作为Type-5外部LSA(AS-external-LSA)在OSPF域内传播。 ### 参数选项(扩展) 通常该命令还可以配合以下参数使用: - **`cost`**:设置引入路由的度量值(开销)。 - **`type`**:指定外部路由的类型(Type1或Type2,针对OSPF)。 - **`tag`**:为引入的路由设置标记,用于路由策略。 - **`route-policy`**:使用路由策略来过滤要引入的直连路由。 例如: ``` ospf 1 import-route direct cost 10 type 1 route-policy DIRECT-FILTER ``` ### 典型应用场景 1. **网络边界设备**:将直连接口(如连接用户的接口)的路由引入到核心网络的路由协议中。 2. **多协议环境**:在运行多种路由协议的网络中,需要将直连网段通告给其他协议域。 3. **简化配置**:避免为每个直连网段手动配置网络声明(如在OSPF中使用`network`命令)。 ### 注意事项 - **路由环路风险**:不当的路由引入可能导致路由环路,需谨慎设计。 - **路由过滤**:建议通过路由策略过滤需要引入的直连路由,避免引入不必要或敏感的路由。 - **协议支持**:不同路由协议对引入直连路由的处理方式不同(如OSPF将其作为外部路由,而IS-IS则可以作为内部或外部路由)。 ### 与`default-route-advertise`的区别 - `import-route direct`引入的是所有符合条件的直连路由(多条)。 - `default-route-advertise`仅引入一条默认路由(0.0.0.0/0)。 §§相关问题§§ 1. `import-route direct`和`import-route static`有什么区别? 2. 在OSPF中引入直连路由后,这些路由会以什么类型的LSA传播? 3. 如何避免通过`import-route direct`引入不必要的直连路由? </think>### 华为路由命令 `import-route direct` 详解 `import-route direct` 是华为路由器中**将设备直连路由注入动态路由协议的核心指令**,其作用与配置逻辑如下: --- ### 一、命令本质作用 **将设备所有活跃的直连路由(Direct routes)导入到指定的动态路由协议进程中**,使这些路由能被通告给协议邻居[^1]。直连路由指路由器接口上直接配置的网段路由(如 `192.168.1.0/24`)。 #### 关键特性对比 | **路由类型** | **生成方式** | **是否需要手动注入** | |--------------------|---------------------------|---------------------| | 直连路由 (Direct) | 接口配置IP后自动生成 | 是 (`import-route direct`) | | 静态路由 (Static) | 管理员手动配置 | 是 (`import-route static`) | | 动态路由 (如OSPF) | 协议自动学习 | 否 | --- ### 二、典型应用场景 1. **边界路由器互联** ```java // 边界路由器配置(连接内部网络和ISP) interface GigabitEthernet0/0/1 ip address 192.168.1.1 255.255.255.0 // 直连网段 ospf 1 import-route direct // 将192.168.1.0/24注入OSPF域 ``` **效果**:内部所有OSPF路由器学习到 `O_ASE 192.168.1.0/24` 路由[^2]。 2. **多协议混合组网** ```java bgp 100 import-route direct // 将直连路由注入BGP ``` **作用**:使数据中心直连网段通过BGP发布到广域网。 --- ### 三、配置注意事项 1. **路由过滤需求** 默认注入**所有活跃直连路由**,需用路由策略过滤敏感网段: ```java route-policy DIRECT_FILTER deny node 10 // 创建过滤策略 if-match ip-prefix PRIVATE_NETS route-policy DIRECT_FILTER permit node 20 ! ospf 1 import-route direct route-policy DIRECT_FILTER // 关联策略 ``` 2. **协议差异处理** - **OSPF**:注入路由变为 **Type-5 External LSA**(外部路由) - **BGP**:注入路由变为 **BGP External 路由** - **IS-IS**:可通过 `level-1` 或 `level-2` 指定扩散层级 3. **活跃路由限制** 仅注入 `路由表存在且状态为Active` 的直连路由(接口UP且无冲突)。 --- ### 四、与相似命令的差异 | **命令** | **作用对象** | **典型用途** | |------------------------------|-------------------|----------------------------------| | `import-route direct` | 直连接口网段 | 发布本地直连资源 | | `import-route static` | 静态配置的路由 | 发布管理员指定路径 | | `default-route-advertise` | 强制生成默认路由 | 引导流量到出口设备 | | `network 192.168.1.0 0.0.0.255` | 指定网段参与协议 | 精确控制OSPF内部路由 | > ⚠️ **典型错误**:同时使用 `import-route direct` 和 `network` 通告相同网段,会导致路由重复(OSPF中产生Type-5和Type-1 LSA冲突)。 --- ### 五、故障排查要点 若邻居未收到注入的路由,检查: 1. 直连接口是否 `UP/UP` 2. 路由策略是否误过滤 3. 目标协议是否支持外部路由(如OSPF Stub区域会过滤Type-5 LSA) 4. 使用 `display ospf routing` 验证路由注入结果
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值