@cdmonkey
2016-12-02T17:49:49.000000Z
字数 4191
阅读 1135
命令总结
每一台主机都有自己的路由表,也就是说,你必须要通过自己的路由表将主机的数据包转发到下一个路由器。
Linux系统的route命令用于显示和操作路由表。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。
注意:在命令行下执行route命令来添加路由,不会永久保存,当网卡或者机器重启之后,该路由就失效了。
增加永久路由(重启网络服务和重启系统都会生效)的方法:
/etc/rc.local
中加入相应的route命令来保证该路由设置永久有效。该方法只在开机时加载,当手工重启网络后会失效,但是重启系统后会生效。/etc/sysconfig/static-routes
文件,并写入相应的路由配置语句,示例如下:
[root@WEB-A1 ~]# vim /etc/sysconfig/static-routes
----------------
any net 192.168.9.0/24 dev eth0
any net 172.16.3.0/24 gw 172.17.3.1 dev eth1
#其中『any』是必须的,而且必须位于行首,不能有前置空格,后面的参数就是route add命令所需要的参数。
#并且参数前面的横杠需要去掉,不要出现在配置文件中。
/etc/sysconfig/network-scripts/route-eth0
文件,并写入路由配置语句,示例如下:
[root@WEB-A1 ~]# vim /etc/sysconfig/network-scripts/route-eth0
----------------
192.168.1.0/24 via 192.168.1.1
如果是配置默认路由网关可以再网卡配置里:
[root@WEB-A1 ~]# grep GATEWAY /etc/sysconfig/network-scripts/ifcfg-eth0
GATEWAY=10.0.0.254
命令格式:
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]
常用选项:
Route命令是用于操作基于内核IP路由表,它的主要作用是创建一个静态路由,指定一个主机或一个网络通过一个网络接口,例如eth0
。当使用“add/del”参数时,路由表被修改,如果没有参数,则显示路由表当前的内容。
[root@WEB-A1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.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 1002 0 0 eth0
0.0.0.0 172.16.1.2 0.0.0.0 UG 0 0 0 eth0
#最后一行就是系统的默认网关信息,表示去任何地方(0.0.0.0),都发给网关地址。
#因为是默认网关,所以放在了最后一条。路由也是有顺序的,如果不符合任何一条规则就交给默认网关处理。
路由条目 | 说明 |
---|---|
172.16.1.0 |
第一行表示主机所在网络的地址,若数据传送目标网络是在本局域网内,则可以直接通过eth0 转发数据包。之所以会有这一条目,是因为这台主机的网卡拥有172.16.1.10 这个地址的关系。也就是说,主机上面有几个网络接口存在时,就一定会存在一条与之相对应的路由条目。 |
169.254.0.0 |
上面的路由表中的169.254.0.0 是私有保留地址,一般开启了DHCP服务的设备但是又无法获取到有效地址的,会随机使用此网段的地址。 |
0.0.0.0 |
默认网关路由条目,如果都不满足上面的路由规则,则通过默认网关发送。 |
Gateway为
0.0.0.0
表示数据包不经过网关的而直接送达。
下面这台主机拥有两块网卡:
[root@LVS-A ~]# 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 eth1
172.16.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 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 eth1
路由表的字段信息说明:
字段 | 说明 |
---|---|
Destination |
指定该路由的网络目标。 |
Gateway |
指定网络目标定义的地址集和子网掩码可以到达的前进或下一跃点IP地址。 |
Flags |
为路由标志,标记当前网络节点的状态,另见附表说明。 |
Metric |
路由算法用以确定到达目的地的最佳路径的计量标准。为路由指定一个整数成本值标(1-9999),当在路由表(与转发的数据包目标地址最匹配)的多个路由中进行选择时可以使用。 |
Use |
对此路由的查找。 |
增加及删除路由条目:
[root@WEB-A1 ~]# route add -net 192.168.5.0 netmask 255.255.255.0 dev eth0
#增加一条屏蔽路由:
[root@WEB-A1 ~]# route add -net 192.168.6.0 netmask 255.255.255.0 reject
#查看一下刚刚增加的路由条目,请注意屏蔽路由的路由标志。
[root@WEB-A1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.6.0 - 255.255.255.0 ! 0 - 0 -
192.168.5.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
172.16.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 1002 0 0 eth0
0.0.0.0 172.16.1.2 0.0.0.0 UG 0 0 0 eth0
----------------------
#删除路由条目:
[root@WEB-A1 ~]# route del -net 192.168.5.0 netmask 255.255.255.0
[root@WEB-A1 ~]# route del -net 192.168.6.0 netmask 255.255.255.0
SIOCDELRT: No such process
[root@WEB-A1 ~]# route del -net 192.168.6.0 netmask 255.255.255.0 reject
#在删除路由条目时如果指定的参数不完全,有可能无法执行删除操作。
增加及删除默认网关:
默认网关就是数据包不匹配任何设定的路由规则,最后流经的地址关口!网关按字面意思就是网络的关口,就相当于我们家里房子的门一样,如果外出就要经过房门,数据包也是一样。
[root@WEB-A1 ~]# route del default gw 172.16.1.2
[root@WEB-A1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.16.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 1002 0 0 eth0
#可以看到,最后一条的默认网关已经被删除,现在还要添加回来,要不然无法连接互联网。
[root@WEB-A1 ~]# route add default gw 172.16.1.2 eth0
#其实就相当于下面这条指令:
route add -net 0.0.0.0 netmask 0.0.0.0 gw 172.16.1.2
即去往某一网络或网段的路由。一般多网段之间互相通信,希望建立一条优先路由,而不是通过默认网关时就可以配置网络路由。还是拿房子比喻,你现在不是要出门,而是卧室,卫生间,去卧室就要经过卧室的门,去卫生间也要经过卫生间的门,这里的卧室和卫生间的门就可以认为是去往某一网段的路由,而不是默认路由(即房子的门)。
示例:192.168.1.0网段,网关为192.168.1.1,其中某一台服务器想连入172.16.1.0/24段,该如何添加路由?
route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
# OR:
route add -net 192.168.1.0 netmask 255.255.255.0 dev eth0
实际工作中会有需求,两个不同的内部网络之间互访,而不是出网访问,就是上面例子的情况。
参考资料:http://oldboy.blog.51cto.com/2561410/974194
就是去往某个主机地址如何配置路由。
[root@WEB-A1 ~]# route add -host 192.168.2.13 dev eth1
FIB(Forward Information Base,转发信息库),每个设备中都保存着一个转发信息库,用于存储设备的转发信息,指导设备进行三层转发。从概念上讲类似于路由表或信息库。它维护着一个IP路由表中包含的转发信息的镜象。当网络中的路由或拓朴结构发生了变化时,IP路由表就被更新,而这些变化也反映在FIB中。