linuxroute命令详解
考试题⼀: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
解答实践:
netstat命令详解linux
[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
提⽰:写到配置⾥,重启⽹络服务和重启系统都会⽣效!
⽅法⼆:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。