route命令

  可以显示或管理Linux系统的路由表,route命令设置的路由主要是静态路由。

路由的概念

    计算机与计算机之间的数据传输必须得经由网络,而网络可以通过直接连接两台计算机的方式或者是以一个或一个以上的节点来构成。
    数据传输首先会通过源主机传送到一个网络节点,然后这个网络节点会根据“约定”将数据传送到另一个网络节点,另一个网络节点再将数据传输到下一个节点,依此类推,最终把数据传输到目标主机。
    这就是数据传送的一个完整过程,而每个网络节点就是一个路由,“约定”就是路由规则,数据传输就是根据路由规则依次传输下去的。

路由的分类

    路由分为静态路由和动态路由。
    Linux上配置的路由都属于静态路由。静态路由规则是系统管理员使用route命令加入的,也就是通过手动输入的方式来加入的路由规则。
    动态路由就是无需手动输入路由的规则,其路由规则是本机与不同的机器彼此经过路由程序(Routing daemon)相互交换路由规则而来的。

route命令的参数选项及说明

 
-n    直接使用IP地址,不进行DNS解析主机名
-ee   显示更详细的路由信息
add    添加路由信息
del    删除路由信息
target    指定目标网络或主机。可以用IP地址或主机/网络名
-net    到一个网络的路由,后面接的是一个网络号地址
-host    到一个主机的路由,后面接的是一个主机地址
netmask NM    为添加的路由指定网络掩码
gw Gw         为发往目标网络/主机的任何分组指定网关
dev If        指定由哪个网络设备出去,后面接网络设备名,如eth0等
 

查看当前系统路由表信息

[root@bzhl ~]# route    #<=默认情况下,route命令会将IP地址进行DNS解析生成主机名。
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 eth0
213.232.105.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
[root@bzhl ~]# route -n
Kernel IP routing table #<=使用-n选项不进行DNS解析,这样会加快显示速度。
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 213.232.105.1 0.0.0.0 UG 100 0 0 eth0
213.232.105.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
命令结果说明具体如下。
Destination:表示网络号,也就是network的意思。
Gateway:连出网关地址,也就是说该网络是通过该IP连接出去的,如果显示0.0.0.0,则表示该路由是直接由本机传送出的。如果有IP显示,则表示本条路由必须经过该IP的转接才能连接出去。
Genmask:表示子网掩码地址,也就是netmask。Destination和Genmask将组合成一个完整的网络。
Flags:路由标记信息,通常会有下面几种不同的标记。
U(route is up):表示此路由当前为启动状态。
H(target is a host):目标路由是一个主机(IP)而非网络。
R(reinstate route for dynamic routing):使用动态路由时,恢复路由信息标识。
G(use gateway):表示需要通过外部的主机(gateway)来转接传递数据。
M(modified from routing daemon or redirect):表示路由已经被修改了。
D(dynamically installed by daemon or redirect):已经由服务设定为动态路由。
!(reject route):这个路由将不会被接受(用来抵挡不安全的网络)。
Metric:需要经过几个网络节点(hops)才能到达路由的目标网络地址。
Ref:参考到此路由规则的数目。
Use;有几个转送数据包参考到了此路由规则。
Iface:路由对应的网络设备接。
 
    命令输出结果的第一行(10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 etho)表示主机所在的网段为10.0.0.0,若数据传送目标是在同一网段,则可直接通过eth0转发数据包。
    命令输出结果的第三行(0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0)是系统的默认网关信息,表示去任何地方(0.0.0.0)都发给10.0.0.2,因为是默认网关,所以放在了最后一条。路由也是有顺序的,如果不符合任何一条规则就交给默认网关来处理。
 

删除和添加默认网关

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

方法1

[root@cs6 ~]# route del default <-删除网关方法1。
[root@cs6 ~]# 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 1002 0 0 eth0
#<==第3行的网关已经删除。 [root@cs6 ~]# ping g.cn
connect: 网络不可达 [root@cs6 ~]# route add default gw 10.0.0.2 #<=添加网关方法主:需要指明网关地址10.0.0,2或其他正确的地址。
[root@cs6 ~]# ping g.cn
PING g.cn (203.208.40.87) 56(84) bytes of data.
64 bytes from 203.208.40.87: icmp_seq=1 ttl=128 time=44.9 ms
64 bytes from 203.208.40.87: icmp_seq=2 ttl=128 time=42.6 ms
^C
--- g.cn ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1706ms
rtt min/avg/max/mdev = 42.613/43.784/44.956/1.190 ms [root@cs6 ~]# 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 1002 0 0 eth0
0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0

方法2

[root@cs6 ~]# route del default gw 10.0.0.2
[root@cs6 ~]# 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 1002 0 0 eth0
[root@cs6 ~]# route add default gw 10.0.0.2 dev eth0 #<=添加网关方法2,使用dev指明网络设备,连用于有多块网络设备的主机。
[root@cs6 ~]# 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 1002 0 0 eth0
0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0 #特别强调:实际上 route add default gw 10.0.0.2 就相当于
route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.0.0.2

配置网络路由(去往某一网络或网段的路由)

    一般多网段之间互相通信,会希望建立一条优先路由,而不是通过默认网关,这时就可以配置网络路由。还是拿房子作比喻,你现在不是要出门,而是要去卧室或卫生间,去卧室就要经过卧室的门,去卫生间就要经过卫生间的门,这里的卧室和卫生间的门就可以认为是去往某一网段的路由,而不是默认路由(即房子的大门)。    
    在实际工作中也会有类似的需求,即两个不同的内部网络之间互相访问,而不是出网访问。
 
    有两个网段10.0.0.0/24和192.168.1.0/24,现在想要实现10网段的机器访问192网段的机器,其中有一台机器有两块网卡,eth0 的IP地址为192.168.1.254,eth1 的IP地址为10.0.0.254。那么配置网络路由会有以下几种方法。
 
 
方法1
route add -net 192.168.1.0/24 gw 10.0.0.254
方法2
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth1 #<=指定设备而不是地址。
route add -net 192.168.1.0/24 dev eth1
 
    在想要访问192网段的每台10网段的机器上执行上面的命令,那么就只是执行该命令的主机能够访问192网段;但若在10网段的网关10.0.0.2上执行上面的命令,则10网段的机器都能访问192网段。

删除网络路由

route del -net 192.168.1.0/24 dev eth1
 
以上配置在重启网络时都会失效,如果希望永久生效,则有如下几种方法。
 
方法1:
    vi /etc/sysconfig/network-scripts/route-eth1    #<=默认不存在此文件
加入如下内容:
    192.168.1.0/24 via 10.0.0.254
 
写到配置里,重启网络服务和重启系统都会生效!
 
方法2:
  vi /etc/sysconfig/static-routes    #<=默认不存在此文件
加入如下内容:
  any net 192.168.1.0/24 gw 10.0.0.254
 
 
方法3:
  vi /etc/rc.local 
加入如下内容:
 route add -net 192.168.1.0/24 gw 10.0.0.254
 
提示:方法1推荐在生产环境下使用,方法3写到/etc/rc.local里只在开机时加载,在手工重启网络后会失效,但是重启系统后会生效!
[root@cs6 ~]# route add -net 192.168.205.0/24 dev eth0
[root@cs6 ~]# 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.205.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 1002 0 0 eth0
0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0 如果是配置默认路由网关,则可以写在网卡配置里,代码如下:
[root@cs6 ~]# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=10.0.0.2

配置和删除主机路由(就是去往某个主机地址的路由)

route add -host 192.169.2.18 dev eth2
route add -host 202.81.11.9 dev lo
 
例如:keepalived或heartbeat高可用服务器对之间使用单独的网卡接心跳线通信时,就会用到以上的主机路由。删除主机路由的方法如下:
route del -host 192.168.2.13 dev eth2
 
 
 

10.4 route:显示或管理路由表的更多相关文章

  1. Linux命令之route - 显示和操作IP路由表

    转自:  http://codingstandards.iteye.com/blog/1125312 用途说明 route命令用于显示和操作IP路由表(show / manipulate the IP ...

  2. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  3. RDIFramework.NET ━ 9.10 岗位(职位)管理 ━ Web部分

    RDIFramework.NET ━ .NET快速信息化系统开发框架 9.10  岗位(职位)管理 -Web部分 岗位(职位)管理模块主要是针对组织机构的岗位(职位)进行管理,包括:增加.修改.删除. ...

  4. 实验10.3_数值显示拓展_dword型数转变为表示十进制数的字符串

    assume cs:code data segment db 10 dup (0) data ends code segment start : mov ax,4240H;F4240H=1000000 ...

  5. Linux 命令 - route: 显示或操作路由表

    route 命令查看路由表或者手动地添加.删除和修改路由表中的条目. 命令格式 route [-CFvnNee] [-A family] route [-v] [-A family] add [-ne ...

  6. django1.10.3下admin后台管理老是显示object

    在设置了一个新models phone book后,admin管理显示数据名称都是object 尝试为model重写__unicode__方法后无效,经查询,在py3环境中,需要重写__str__方法 ...

  7. Android核心分析之二十四Android GDI之显示缓冲管理

    Android GDI之屏幕设备管理-动态链接库 万丈高楼从地起,从最根源的硬件帧缓冲区开始.我们知道显示FrameBuffer在系统中就是一段内存,GDI的工作就是把需要输出的内容放入到该段内存的某 ...

  8. route - 显示 / 操作IP选路表

    总览 SYNOPSIS route [-CFvnee] route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [met ...

  9. 基于Metronic的Bootstrap开发框架经验总结(10)--优化Bootstrap图标管理

    在基于Bootstrap开发的项目中,鲜艳颜色的按钮,以及丰富的图表是很吸引人的特点,为了将这个特点发挥到极致,可以利用Bootstrap图标抽取到数据库里面,并在界面中进行管理和使用,这样我们可以把 ...

随机推荐

  1. Mediapipe 在RK3399PRO上的初探(一)(编译、运行CPU和GPU Demo, RK OpenglES 填坑,编译bazel)

    PS:要转载请注明出处,本人版权所有. PS: 这个只是基于<我自己>的理解, 如果和你的原则及想法相冲突,请谅解,勿喷. 前置说明   本文作为本人csdn blog的主站的备份.(Bl ...

  2. 对象存储服务MinIO安装部署分布式及Spring Boot项目实现文件上传下载

    目录 一.MinIO快速入门 1. MinIO简介 2. CentOS7更换成阿里云镜像 3. 安装 3.1 下载 3.2 运行测试 4. 配置脚本执行文件 4.1 创建配置执行文件 4.2 执行 二 ...

  3. HUAWEI AppGallery Connect获得SOC国际权威认证,多举措保护信息和隐私安全

    近日,华为应用市场AppGallery Connect(简称AGC)一次性成功通过国际权威标准组织"美国注册会计师协会(AICPA)"认定的SOC1 Type2.SOC2 Type ...

  4. 粗浅聊聊Python装饰器

    浅析装饰器 通常情况下,给一个对象添加新功能有三种方式: 直接给对象所属的类添加方法: 使用组合:(在新类中创建原有类的对象,重复利用已有类的功能) 使用继承:(可以使用现有类的,无需重复编写原有类进 ...

  5. 基于MATLAB的手写公式识别(5)

    基于MATLAB的手写公式识别 总结一下昨天一天的工作成果: 获得了大致的识别过程. 一个图像从生肉到可以被处理需要经过预处理(灰质化.增加对比度.中值过滤.膨胀或腐蚀.闭环运算). 掌握了相关函数的 ...

  6. 通过Dapr实现一个简单的基于.net的微服务电商系统(九)——一步一步教你如何撸Dapr之OAuth2授权

    Oauth2授权,熟悉微信开发的同学对这个东西应该不陌生吧.当我们的应用系统需要集成第三方授权时一般都会做oauth集成,今天就来看看在Dapr的语境下我们如何仅通过配置无需修改应用程序的方式让第三方 ...

  7. showdan

    from shodan import Shodan import json api = Shodan("") result = api.search('windows') with ...

  8. hdu4503 概率

    题意: 湫湫系列故事--植树节                                         Time Limit: 1000/500 MS (Java/Others) Memory ...

  9. POJ1201基础差分约束

    题意:       有一条直线,直线上做多有50000个点,然后给你组关系 a b c表明a-b之间最少有c个点,问直线上最少多少个点. 思路:        a-b最少有c个点可以想象a到b+1的距 ...

  10. Python中Scapy网络嗅探模块的使用

    目录 Scapy scapy的安装和使用 发包 发包和收包 抓包 将抓取到的数据包保存 查看抓取到的数据包 格式化输出 过滤抓包 Scapy scapy是python中一个可用于网络嗅探的非常强大的第 ...