首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

小弟我使用过的Linux命令之route - 显示和操作IP路由表

2012-07-15 
我使用过的Linux命令之route - 显示和操作IP路由表我使用过的Linux命令之route - 显示和操作IP路由表本文

我使用过的Linux命令之route - 显示和操作IP路由表
我使用过的Linux命令之route - 显示和操作IP路由表

本文链接:http://codingstandards.iteye.com/blog/1125312 ? (转载请注明出处)

?

用途说明

route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。本文中的例子中会验证这一点。

?

常用参数

格式:route

格式:/sbin/route

用于打印路由表(display the current routing table)。

在非root用户使用时需要使用完整路径执行route命令。

?

格式:route -n

格式:/sbin/route -n

用于打印路由表,加上-n参数就是在输出的信息中不打印主机名而直接打印ip地址。像netstat命令也有此参数。

?

格式:route add default gw {IP-ADDRESS} {INTERFACE-NAME}

用于设置默认路由(adds a default route, which will be used if no other route matches),其中,

参数{IP-ADDRESS): 用于指定路由器(网关)的IP地址(Specify router IP address);
参数{INTERFACE-NAME}: 用于指定接口名称,如eth0(Specify interface name such as eth0)。使用/sbin/ifconfig -a可以显示所有接口信息。

?

格式:route add -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}

添加到指定网络的路由规则,其中

参数{NETWORK-ADDRESS}: 用于指定网络地址

参数{NETMASK}: 用于指定子网掩码

参数{INTERFACE-NAME}: 用于指定接口名称,如eth0。


route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
This is an obscure one documented so people know how to do it. This sets all of the class D (multicast)
IP routes to go via "eth0". This is the correct normal configuration line with a multicasting kernel.
?

格式:route add -net {NETWORK-ADDRESS} netmask {NETMASK} reject

设置到指定网络为不可达,避免在连接到这个网络的地址时程序过长时间的等待,直接就知道该网络不可达。

man route 写道 route add -net 10.0.0.0 netmask 255.0.0.0 reject
This installs a rejecting route for the private network "10.x.x.x."

?

格式:route del -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}

格式:route del -net {NETWORK-ADDRESS} netmask {NETMASK} reject

用于删除路由设置。参数指定的方式与route add相似。

?

?

route命令输出的路由表字段含义如下:

?????? Destination 目标
????????????? The destination network or destination host. 目标网络或目标主机。

?????? Gateway 网关
????????????? The gateway address or '*' if none set. 网关地址,如果没有就显示星号。

?????? Genmask 网络掩码
????????????? The? netmask? for? the? destination net; '255.255.255.255' for a
????????????? host destination and '0.0.0.0' for the default route.

?????? Flags? Possible flags include 标志,常用的是U和G。
????????????? 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 redirect)
????????????? A (installed by addrconf)
????????????? C (cache entry)
????????????? !? (reject route)

?????? Metric 距离、跳数。暂无用。

????????????? The 'distance' to the target (usually counted in? hops).? It? is
????????????? not? used? by? recent kernels, but may be needed by routing dae-
????????????? mons.

?????? Ref?? 不用管,恒为0。

????????????? Number of references to this route. (Not used in the Linux? ker-
????????????? nel.)

?????? Use??? 该路由被使用的次数,可以粗略估计通向指定网络地址的网络流量。

????????????? Count? of lookups for the route.? Depending on the use of -F and
????????????? -C this will be either route cache misses (-F) or hits (-C).

?????? Iface 接口,即eth0,eth0等网络接口名

????????????? Interface to which packets for this route will be sent.

?

使用示例示例一 打印当前路由表(root用户)

[root@jfht ~]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
211.103.28.0??? *?????????????? 255.255.255.224 U???? 0????? 0??????? 0 eth0
192.168.1.0???? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth1
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
default???????? 211.103.28.1??? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@jfht ~]# /sbin/route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
211.103.28.0??? *?????????????? 255.255.255.224 U???? 0????? 0??????? 0 eth0
192.168.1.0???? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth1
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
default???????? 211.103.28.1??? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@jfht ~]# route -n
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
211.103.28.0??? 0.0.0.0???????? 255.255.255.224 U???? 0????? 0??????? 0 eth0
192.168.1.0???? 0.0.0.0???????? 255.255.255.0?? U???? 0????? 0??????? 0 eth1
169.254.0.0???? 0.0.0.0???????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
0.0.0.0???????? 211.103.28.1??? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@jfht ~]# /sbin/route -n
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
211.103.28.0??? 0.0.0.0???????? 255.255.255.224 U???? 0????? 0??????? 0 eth0
192.168.1.0???? 0.0.0.0???????? 255.255.255.0?? U???? 0????? 0??????? 0 eth1
169.254.0.0???? 0.0.0.0???????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
0.0.0.0???????? 211.103.28.1??? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@jfht ~]#

?

示例二 打印当前路由表(非root用户)

[web@hnweb1 ~]$ route
-bash: route: command not found
[web@hnweb1 ~]$ /sbin/route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
10.66.10.0????? *?????????????? 255.255.255.128 U???? 0????? 0??????? 0 eth0
192.130.12.0??? 10.66.10.1????? 255.255.255.0?? UG??? 0????? 0??????? 0 eth0
10.0.0.0??????? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth1
10.66.0.0?????? 10.66.10.1????? 255.255.0.0???? UG??? 0????? 0??????? 0 eth0
134.161.0.0???? 10.66.10.1????? 255.255.0.0???? UG??? 0????? 0??????? 0 eth0
10.20.0.0?????? 10.66.10.1????? 255.255.0.0???? UG??? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
172.224.0.0???? 10.66.10.1????? 255.255.0.0???? UG??? 0????? 0??????? 0 eth0
default???????? 10.66.10.22???? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[web@hnweb1 ~]$ route -n
-bash: route: command not found
[web@hnweb1 ~]$ /sbin/route -n
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
10.66.10.0????? 0.0.0.0???????? 255.255.255.128 U???? 0????? 0??????? 0 eth0
192.130.12.0??? 10.66.10.1????? 255.255.255.0?? UG??? 0????? 0??????? 0 eth0
10.0.0.0??????? 0.0.0.0???????? 255.255.255.0?? U???? 0????? 0??????? 0 eth1
10.66.0.0?????? 10.66.10.1????? 255.255.0.0???? UG??? 0????? 0??????? 0 eth0
134.161.0.0???? 10.66.10.1????? 255.255.0.0???? UG??? 0????? 0??????? 0 eth0
10.20.0.0?????? 10.66.10.1????? 255.255.0.0???? UG??? 0????? 0??????? 0 eth0
169.254.0.0???? 0.0.0.0???????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
172.224.0.0???? 10.66.10.1????? 255.255.0.0???? UG??? 0????? 0??????? 0 eth0
0.0.0.0???????? 10.66.10.22???? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[web@hnweb1 ~]$

?

示例三 设置到某网络的路由的例子

下面的例子来自一个实际的服务器配置。route命令写在了/etc/rc.local中,这样就设置了一条永久路由。

?

[root@jf07 root]# grep route /etc/rc.local
route add -net 10.0.0.0/8 gw 10.33.149.1 dev eth1
[root@jf07 root]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
10.32.181.182?? 10.33.149.1???? 255.255.255.255 UGH?? 0????? 0??????? 0 eth1
10.33.136.135?? 10.33.149.1???? 255.255.255.255 UGH?? 0????? 0??????? 0 eth1
10.32.208.13??? 10.33.149.1???? 255.255.255.255 UGH?? 0????? 0??????? 0 eth1
10.33.149.0???? *?????????????? 255.255.255.128 U???? 0????? 0??????? 0 eth1
192.168.1.0???? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
10.0.0.0??????? 10.33.149.1???? 255.0.0.0?????? UG??? 0????? 0??????? 0 eth1
default???????? 192.168.1.254?? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@jf07 root]#

?

示例四 添加拒绝路由的测试

[root@jfht ~]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
211.103.28.0??? *?????????????? 255.255.255.224 U???? 0????? 0??????? 0 eth0
192.168.1.0???? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth1
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
default???????? 211.103.28.1??? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@jfht ~]# ping 10.33.11.12
PING 10.33.11.12 (10.33.11.12) 56(84) bytes of data.
Ctrl+C
--- 10.33.11.12 ping statistics ---
21 packets transmitted, 0 received, 100% packet loss, time 19999ms

[root@jfht ~]# route add -net 10.0.0.0 netmask 255.0.0.0 reject
[root@jfht ~]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
211.103.28.0??? *?????????????? 255.255.255.224 U???? 0????? 0??????? 0 eth0
192.168.1.0???? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth1
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth1
10.0.0.0??????? -?????????????? 255.0.0.0?????? !???? 0????? -??????? 0 -
default???????? 211.103.28.1??? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@jfht ~]# ping 10.33.11.12???????????????????????????????
connect: Network is unreachable
[root@jfht ~]#

?

示例五 设置路由之后重启机器的测试

[root@node34 root]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.227.0?? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth0
default???????? 192.168.227.2?? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@node34 root]# route add -net 10.0.0.0 netmask 255.0.0.0 reject
[root@node34 root]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.227.0?? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth0
10.0.0.0??????? -?????????????? 255.0.0.0?????? !???? 0????? -??????? 0 -
default???????? 192.168.227.2?? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@node34 root]# reboot

Broadcast message from root (pts/0) (Thu Jul? 7 05:31:26 2011):

The system is going down for reboot NOW!
[root@node34 root]#

Last login: Thu Jul? 7 05:30:50 2011 from 192.168.227.1
[root@node34 root]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.227.0?? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth0
default???????? 192.168.227.2?? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@node34 root]#

?

上面的测试表明route设置的路由在机器重启之后就消失了。

?

示例六 将route命令添加到/etc/rc.local来设置永久路由的测试

先用vi在/etc/rc.local后面添加route命令。

?

[root@node34 root]# tail /etc/rc.local
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

# 2011.07.15 add permanent route test
route add -net 10.0.0.0 netmask 255.0.0.0 reject


[root@node34 root]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.227.0?? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth0
default???????? 192.168.227.2?? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@node34 root]# reboot

Broadcast message from root (pts/0) (Fri Jul 15 14:43:44 2011):

The system is going down for reboot NOW!
[root@node34 root]#

?


Last login: Fri Jul 15 14:40:22 2011 from 192.168.227.1
[root@node34 root]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.227.0?? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth0
10.0.0.0??????? -?????????????? 255.0.0.0?????? !???? 0????? -??????? 0 -
default???????? 192.168.227.2?? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@node34 root]#

?

示例七 删除路由的测试

删除路由的时候只需将route add改成route del,其他参数类似。如果报“无效的参数”或“没有那个进程”,可能是因为提供的参数不够。

?

[root@node34 root]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.227.0?? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth0
10.0.0.0??????? -?????????????? 255.0.0.0?????? !???? 0????? -??????? 0 -
default???????? 192.168.227.2?? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@node34 root]#
[root@node34 root]# route del -net 10.0.0.0
SIOCDELRT: 无效的参数
[root@node34 root]# route del -net 10.0.0.0 netmask 255.0.0.0
SIOCDELRT: 没有那个进程
[root@node34 root]#
[root@node34 root]# route del -net 10.0.0.0 netmask 255.0.0.0 reject
[root@node34 root]#

[root@node34 root]# route
Kernel IP routing table
Destination???? Gateway???????? Genmask???????? Flags Metric Ref??? Use Iface
192.168.227.0?? *?????????????? 255.255.255.0?? U???? 0????? 0??????? 0 eth0
169.254.0.0???? *?????????????? 255.255.0.0???? U???? 0????? 0??????? 0 eth0
default???????? 192.168.227.2?? 0.0.0.0???????? UG??? 0????? 0??????? 0 eth0
[root@node34 root]#

?

问题思考相关资料

【1】nixCraft Linux setup default gateway with route command
http://www.cyberciti.biz/faq/linux-setup-default-gateway-with-route-command/

【2】360doc Linux route命令
http://www.360doc.com/content/11/0418/14/2054285_110501874.shtml

【3】Linux公社 Linux下route add route del 用法
http://www.linuxidc.com/Linux/2010-11/30032.htm

【4】鳥哥的 Linux 私房菜 第五章、 Linux 常用網路指令

http://linux.vbird.org/linux_server/0140networkcommand.php#route

?

?

返回 我使用过的Linux命令系列总目录

?

热点排行