route工具
route工具主要用来查看或修改内核路由表。
1、查看内核路由表
route [-nee]
参数说明:
-n:不要使用协议或主机名称,直接使用 IP 或 port number;
-ee:使用更详细的信息来显示
注意:route 打印的路由表是有顺序的,服务器在做选路的时候,是从上往下依次对比,如果有配对的目标网络,就走相应的Gateway出去。
所以,默认路由(0.0.0.0)一定是在路由表的最后一项。
说明:
1、Destination, Genmask:这两个字段分别是 network(网络地址) 与netmask(子网掩码) ,所以这两个就组合成为一个目标网络!
2、Gateway:目标网络是通过那个 gateway 路由出去的? 如果显示 0.0.0.0 表示该路由是直接由本机传送,即可以通过局域网路的 MAC 直接传送;如果有显示 IP 的话,表示该路由需要经过路由器的帮忙才能够传送出去;
3、Metric 跳数,暂无用;
4、Iface 网卡接口,如eth0;
5、Ref 恒为0,不用管;
6、Use 为该路由被使用次数,根据它,可以粗略估计通向指定网络地址的网络流量;
7、Flags:总共有多个旗标,代表的意义如下:
- U (route is up):该路由是启动的;
- H (target is a host):目标是一主机 (IP) 而非网络;
- G (use gateway):需要透过外部的主机 (gateway) 来转递封包;
- R (reinstate route for dynamic routing):使用动态路由时,恢复路由信息的旗标;
- D (dynamically installed by daemon or redirect):已经由服务或转 port 功能设定为动态路由
- M (modified from routing daemon or redirect):路由已经被修改了;
- ! (reject route):这个路由将不会被接受(用来抵挡不安全的网络!);
2、增加和删除路由
route add [-net|-host] [目标网络号或主机地址] netmask [mask] [gw|dev]
route del [-net|-host] [目标网络号或主机地址] netmask [mask] [gw|dev]
参数说明:
-net: 表示后面接的路由为一个网络地址;
-host:表示后面接的路由为一个主机地址;
netmask:设置子网掩码;
gw:gateway 的简写,后面接的是 IP 地址;
dev:如果只是要指定由哪一块网卡出去,则使用这个设定,后面接 eth0 等
例如:
route del -net 169.254.0.0 netmask 255.255.0.0 dev eth0
route del -net 10.0.0.0 netmask 255.0.0.0 reject
上面这个动作可以删除掉 169.254.0.0/16 这个网络地址;
请注意,在删除的时候,需要将路由表上面出现的资讯都写入,包括 netmask , dev 等等参数。
route add -host 172.18.32.3 dev eth0 # 目的地址是主机地址
route add -net 172.18.32.0 netmask 255.255.255.0 dev eth0 # 目的地址是网络地址,数据包通过网络接口eth0
route add -net 172.18.32.0 netmask 255.255.255.0 gw 172.18.32.1 # 目的地址是网络地址,数据包通过网关
route add -net 10.0.0.0/8 gw 10.33.149.1 dev eth1
route add -net 10.0.0.0 netmask 255.0.0.0 reject # 拒绝指定路由
通过route add 来增加一个路由!请注意,这个路由必须要能够与你互通。
当出现『SIOCADDRT: Network is unreachable』这个错误时,肯定是由于 gw 后面接的 IP 无法直接与您的本地网络通信 (Gateway 并不在你的网络内)。
增加默认路由的方法!请注意,只要有一个预设路由就够了喔!
route add default gw 192.168.10.30
修改路由表后,重启网络使之生效:
/etc/init.d/network restart
route 命令添加的路由,机器重启或者网卡重启后就没掉了,在linux下设置永久路由的方法:
1、在/etc/rc.local里添加;
2、在/etc/sysconfig/network里添加到末尾;
3、/etc/sysconfig/static-router ;
更网络命令请参考:http://linux.vbird.org/linux_server/0140networkcommand.php