linux route命令深入浅出与实战案例精讲

http://blog.51cto.com/oldboy/1119453

深入浅出之-route命令实战使用指南

http://blog.51cto.com/oldboy/974194

本博文的视频讲解已发布:http://oldboy.blog.51cto.com/2561410/1119453

缘起:本文为老男孩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.如果添加一个主机路由?

请分别解答。

解答:route -net 172.16.1.0/24 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-routes  #默认不存在此文件

加入如下内容:

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

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

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 route命令深入浅出与实战案例精讲的更多相关文章

  1. linux route命令详解

    考试题一:linux下如何添加路由(百度面试题) 以上是原题,老男孩老师翻译成如下3道题. a.如何用命令行方式给linux机器添加一个默认网关,假设网关地址为10.0.0.254? b. 192.1 ...

  2. linux route命令的使用详解 添加永久静态路由 tracert traceroute

    linux route命令的使用详解 添加永久静态路由  tracert  traceroute route -n    Linuxroute  print  Windows traceroute  ...

  3. (转)linux route命令详解

    linux route命令详解 原文:https://www.cnblogs.com/lpfuture/p/5857738.html   &&   http://blog.csdn.n ...

  4. Linux操作系统之grub加密实战案例

    Linux操作系统之grub加密实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.为grub设置明文密码案例 1>.修改"/boot/grub/grub. ...

  5. 微软BI SSIS 2012 ETL 控件与案例精讲课程学习方式与面试准备详解

    开篇介绍 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程从2014年9月开始准备,到2014年12月在 天善BI学院  ...

  6. 微软BI SSIS 2012 ETL 控件与案例精讲面试 200 问(SSIS 面试题,ETL 面试题)

    开篇介绍 本自测与面试题出自 微软BI SSIS 2012 ETL 控件与案例精讲 (http://www.hellobi.com/course/21) 课程,对于学完本课程的每一课时和阅读完相关辅助 ...

  7. Linux route命令详解和使用示例(查看和操作IP路由表)

    Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table).要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或 ...

  8. linux route命令学习

    route命令用于显示和操作IP路由表. 没有增加路由之前,route命令的结果如下, sh-# route Kernel IP routing table Destination     Gatew ...

  9. linux route命令的使用详解

    route命令用于显示和操作IP路由表.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现.在Linux系统中,设置路由通常是 为了解决以下问题:该Linu ...

随机推荐

  1. Linux内核2.6.14源码分析-双向循环链表代码分析(巨详细)

    Linux内核源码分析-链表代码分析 分析人:余旭 分析时间:2005年11月17日星期四 11:40:10 AM 雨 温度:10-11度 编号:1-4 类别:准备工作 Email:yuxu97101 ...

  2. java多线程系列:Semaphore和Exchanger

    本篇文章将介绍Semaphore和Exchanger这两个并发工具类. Semaphore 信号量(英语:Semaphore)又称为信号标,是一个同步对象,用于保持在0至指定最大值之间的一个计数值.当 ...

  3. es6学习总结一

    一.let与var 的区别 (1).作用域: let什么的变量在块级作用域内有效,而var声明则在全局作用内有效 (2).变量提升: let声明的变量不存在变量提升,即一定要在声明之后才能调用,否则就 ...

  4. Android手游外挂入侵----寓攻于守,方能破敌

    欢迎访问网易云社区,了解更多网易技术产品运营经验. 手游外挂入侵 随着各种爆款手游的风靡,目前手机游戏的占比用户已经形成一个巨大的市场,市场上你争我夺,有将PC版本移植到手机中,也有新模式手游的推出. ...

  5. ps 常用命令

    1.ps aux:显示所有进程信息 2.ps -u root:显示指定用户信息 3.ps -ef:显示所有进程信息,连同命令行 ps -ef|grep ssh 4.ps -axjf 显示程序树 5.p ...

  6. #6432. 「PKUSC2018」真实排名(组合数学)

    题面 传送门 题解 这数据范围--这输出大小--这模数--太有迷惑性了-- 首先对于\(0\)来说,不管怎么选它们的排名都不会变,这个先特判掉 对于一个\(a_i\)来说,如果它不选,那么所有大于等于 ...

  7. 程序员趣味读物:谈谈Unicode编码

    这是一篇程序员写给程序员的趣味读物.所谓趣味是指可以比较轻松地了解一些原来不清楚的概念,增进知识,类似于打RPG游戏的升级.整理这篇文章的动机是两个问题: 问题一: 使用Windows记事本的“另存为 ...

  8. linux 内核的 switch_to原理

    switch_to:这是一个宏,有三个参数prev,next,last 局部变量prev,next:指向进程描述符的内存地址 首先明确的是:last和prev是同一个,用last只是为了理解方便,完全 ...

  9. C++基础学习1: C++布尔类型

    布尔类型(bool)是C++新增的一种基本数据类型.在标准的C语言中并未定义bool类型,如果需要使用bool类型, 程序员可以通过宏定义来自定义一个bool类型,定义语句如下: #define bo ...

  10. 16.Shortest Unsorted Continuous Subarray(最短未排序子数组)

    Level:   Easy 题目描述: Given an integer array, you need to find one continuous subarray that if you onl ...