linux系统 route命令解析
考试题一: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/24gw 192.168.1.1
route 命令使用方法:
a.缺省网关路由
默认网关就是数据包不匹配任何设定的路由规则,最后流经的地址关口!网关按字面意思就是网络的关口,就相当于我们家里房子的门一样,如果外出就要经过房门,数据包也是一样。
本题的答案:
route del default gw 10.0.0.254
解答实践:
[root@oldboy ~]# route -n #==>查看路由表,netstat -rn也可以。
Kernel IP routing table
DestinationGatewayGenmaskFlags Metric RefUse Iface
10.0.0.00.0.0.0255.255.255.0U000 eth0
169.254.0.00.0.0.0255.255.0.0U000 eth0
0.0.0.010.0.0.2540.0.0.0UG000 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
DestinationGatewayGenmaskFlags Metric RefUse Iface
10.0.0.00.0.0.0255.255.255.0U000 eth0
169.254.0.00.0.0.0255.255.0.0U000 eth0
[root@oldboy ~]# route add default gw 10.0.0.254 #==>这个命令是添加默认的网关,也是本题的答案。
[root@oldboy ~]# netstat -rn
Kernel IP routing table
DestinationGatewayGenmaskFlagsMSS Windowirtt Iface
10.0.0.00.0.0.0255.255.255.0U0 00 eth0
169.254.0.00.0.0.0255.255.0.0U0 00 eth0
0.0.0.010.0.0.2540.0.0.0UG000 eth0#==>又回来了
[root@oldboy ~]# route -n
Kernel IP routing table
DestinationGatewayGenmaskFlags Metric RefUse Iface
10.0.0.00.0.0.0255.255.255.0U000 eth0
169.254.0.00.0.0.0255.255.0.0U000 eth0
0.0.0.010.0.0.2540.0.0.0UG000 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:0Link encap:EthernetHWaddr 00:0C:29:65:A4:FD
inet addr:192.168.1.1Bcast:192.168.1.255Mask:255.255.255.0
UP BROADCAST RUNNING MULTICASTMTU:1500Metric: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
DestinationGatewayGenmaskFlagsMSS Windowirtt Iface
10.0.0.00.0.0.0255.255.255.0U0 00 eth0
192.168.1.0192.168.1.1255.255.255.0UG0 00 eth0#==>这就是网络路由
192.168.1.00.0.0.0255.255.255.0U0 00 eth0
169.254.0.00.0.0.0255.255.0.0U0 00 eth0
0.0.0.010.0.0.2540.0.0.0UG0 00 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
DestinationGatewayGenmaskFlags Metric RefUse Iface
10.0.0.00.0.0.0255.255.255.0U000 eth0
192.168.1.00.0.0.0255.255.255.0U000 eth0
192.168.1.0192.168.1.1255.255.255.0UG000 eth0
192.168.1.00.0.0.0255.255.255.0U000 eth0
169.254.0.00.0.0.0255.255.0.0U000 eth0
0.0.0.010.0.0.2540.0.0.0UG000 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
DestinationGatewayGenmaskFlags Metric RefUse Iface
10.0.0.00.0.0.0255.255.255.0U000 eth0
192.168.1.00.0.0.0255.255.255.0U000 eth0
192.168.1.00.0.0.0255.255.255.0U000 eth0
169.254.0.00.0.0.0255.255.0.0U000 eth0
0.0.0.010.0.0.2540.0.0.0UG000 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或routedel-net 192.168.1.0 netmask 255.225.255.0
删除一条主机路由:
routedel-host 192.168.1.10 dev eth0
有关route命令更详细的内容需要大家执行man route查看帮助,并仔细总结。
有关此题,我们谈下多网段生产环境网段划分及路由的解决方案(1000台机器划分网段方案)。我们能感受到route命令不同功能应用案例。
Linux route命令及其选项详解
Linux route命令及其选项详解
route命令主要用于在Linux系统中显示 / 操作IP路由表
总览
route [-CFvnee]
route [-v] [-A family] add [-net|-host] target [netmask Nm] [gw Gw] [metric N]
[mss M] [window W] [irtt I][reject] [mod] [dyn] [reinstate] [[dev] If]
route [-v] [-A family] del [-net|-host] target [gw Gw][netmask Nm] [metric N] [[dev] If]
route [-V] [--version] [-h] [--help]
描述 DESCRIPTION
route程序对内核的IP选路表进行操作。它主要用于通过已用ifconfig(8)程序配置好的接口来指定的主机或网络设置静态路由。
选项
-v 选用细节操作模式
-A family 用指定的地址族(如`inet',`inet6')。
-n 以数字形式代替解释主机名形式来显示地址。此项对试图检测对域名服务器进行路由发生故障的原因非常有用。
-e 用netstat(8)的格式来显示选路表。
-ee 将产生包括选路表所有参数在内的大量信息。
-net 路由目标为网络。
-host 路由目标为主机。
-F 显示内核的FIB选路表。其格式可以用-e 和 -ee选项改变。
-C 显示内核的路由缓存。
del 删除一条路由。
add 添加一条路由。
target 指定目标网络或主机。可以用点分十进制形式的IP地址或主机/网络名。
netmask Nm 为添加的路由指定网络掩码。
gw Gw 为发往目标网络/主机的任何分组指定网关。注意:指定的网关首先必须是可达的。也就是说必须为该网关预先指定一条静态路由。如果你为本地接口之一指定这个网关地址的话,那么此网关地址将用于决定此接口上的分组将如何进行路由。这是BSD风格所兼容的。
metric M 把选路表中的路由值字段(由选路进程使用)设为M。
mss M 把基于此路由之上的连接的TCP最大报文段长度设为M字节。这通常只用于优化选路设置。默认值为536。
window W 把基于此路由之上的连接的TCP窗口长度设为W字节。这通常只用于AX.25网络和不能处理背对背形式的帧的设备。
irtt I 把基于此路由之上的TCP连接的初始往返时间设为I毫秒(1-12000)。这通常也只用于AX.25网络。如果省略此选项,则使用RFC1122的缺省值300ms。
reject 设置一条阻塞路由以使一条路由查找失败。这用于在使用缺省路由前先屏蔽掉一些网络。但这并不起到防火墙的作用。
mod, dyn, reinstate 设置一条动态的或更改过的路由。这些标志通常只由选路进程来设置。这只用于诊断目的。
dev If 强制使路由与指定的设备关联,因为否则内核会自己来试图检测相应的设备(通常检查已存在的路由和加入路由的设备的规格)。在多数正常的网络上无需使用。
如果dev If是命令行上最后一个指定的选项,那么可以省略关键字dev,因为它是缺省值。否则路由修改对象(metric - netmask- gw -dev)无关紧要。
范例
route add -net 127.0.0.0
加入正常的环回接口项,它使用掩码255.0.0.0(由目标地址决定了它是A类网络)并与设备"lo"相关联(假定该设备先前已由ifconfig(8)正确设置)。
route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
向"eth0"添加一条指向网络192.56.76.x的路由。其中的C类子网掩码并不必须,因为192.*是个C类的IP地址。在此关键字"dev"可省略。
route add default gw mango-gw
加入一条缺省路由(如果无法匹配其它路由则用它)。使用此路由的所有分组将通过网关"mango-gw"进行传输。实际使用此路由的设备取决于如何到达"mango-gw" - 先前必须设好到"mango-gw"的静态路由。
route add ipx4 sl0
向SLIP接口添加一条指向"ipx4"的路由(假定"ipx4"是使用SLIP的主机)。
route add -net 192.57.66.0 netmask 255.255.255.0 gw ipx4
此命令为先前SLIP接口的网关ipx4添加到网络"192.57.66.x"的路由。
route add 224.0.0.0 netmask 240.0.0.0 dev eth0
此命令为"eth0"设定所有D类地址(用于组播)的路由。这是用于组播内核的正确配置行。
route add 10.0.0.0 netmask 255.0.0.0 reject
此命令为私有网络"10.x.x.x."设置一条阻塞路由。
输出信息
内核选路表的输出信息由以下栏目组成:
Destination 目标网络或目标主机。
Gateway 网关地址或'*'(如未设)。
Genmask 目标网络的子网掩码;'255.255.255.255'为主机,'0.0.0.0'为缺省路由。
Flags 可能出现的标志有:
U (route is up) 路由正常
H (target is a host) 主机路由
G (use gateway) 使用网关的间接路由
R (reinstate route for dynamic routing) 为动态选路恢复路由
D (dynamically installed by daemon or redirect) 该路由由选路进程或重定向动态创建
M (modified from routing daemon or rederict) 该路由已由选路进程或重定向修改
! (reject route) 阻塞路由
Metric 通向目标的距离(通常以跳来计算)。新内核不使用此概念,而选路进程可能会用。
Ref 使用此路由的活动进程个数(Linux内核并不使用)。
Use 查找此路由的次数。根据-F 和 -C的使用,此数值是路由缓存的损失数或采样数。
Iface 使用此路由发送分组的接口。
MSS 基于此路由的TCP连接的缺省最大报文段长度。
Window 基于此路由的TCP连接的缺省窗口长度。
irtt 初始往返时间。内核用它来猜测最佳TCP协议参数而无须等待(可能很慢的)应答。
HH (cached only) 为缓存过的路由而访问硬件报头缓存的ARP记录和缓存路由的数量。如果缓存过路由的接口(如lo)无须硬件地址则值为-1。
Arp (cached only) 无论缓存路由所用的硬件地址情况如何都进行更新。
相关问答
linux 中查看路由命令?查看路由命令:1、首先连接上linux主机,进入命令行状态。2、在命令行下输入:route-n,再按回车。3、此时会打印出所有的路由表供查看查看路由命令:1、首先...
linux 路由表怎么看?linux查看路由表的步骤如下:我们需要准备的材料分别是:电脑、linux连接工具。1、首先连接上linux主机,进入命令行状态。2、在命令行下输入:route-n,再按...
LINUX 下怎样加一条静态路由?1、添加一条默认路由routeadddefaultgw10.0.0.1(默认只在内存中生效)开机自启动可以追加到/etc/rc.local文件里echo"routeadd...
linux 路由表详解?Linux路由表是用于管理网络数据包传输的重要工具,它记录了网络通信的路径信息,包括目的地址、网关、接口等。通过路由表,可以实现数据包的转发、策略路由和网...
linuxnoroutetohost什么原因?然后再次运行,...1、原因是可能没有关闭防火墙。2、查看防火墙状态。1)防火墙没有关闭的状态。2)防火墙关闭的状态。3、永久关闭防火墙。...
Linux 系统安装时候的网络设置 - 懂得你在安装的时候把网线插着,在安装系统的时候会自动识别的如果不插网线的话也没关系,系统装完后在手动配置ip,我装linux的时候都很顺利,不用急的!好...
路由器怎么调高网速?哈喽,大家好,我是阳光,每天给大伙更新接地气,实用的干货内容,喜欢的话先关注走一波呗!总是听到有人抱怨说,家里网速太慢了,好多人就说,那就换个路由器...最后一...
想问一下WINDOWS和 LINUX 系统清空路由表的命令是什么啊?VistaWIN7用route-4delete*IF10XP下可以使用route-f清空路由表linux下用cleariprouteVistaWIN7用route-4de...
三张网卡如何设置静态路由?1、进入DOS界面Windows+R进入运行界面,接着在运行界面输入cmd进入dos窗口;2、静态路由标配置Windows的静态路由配置是基于route命令来时实现,输入route?...W...
我想问一下,我现在大学学的 Linux 和路由技术以后能干些什么?学了linux和路由技术(Route),肯定还学了交换机(Switch)技术。毫不客气的说,刚学出来的同学很大一部分的工作是公司网管。精通这三类知识能做得最多有俩:...未来...