route命令使用
一、显示路由表
route -n
[root@dev-master ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.16.71.1 0.0.0.0 UG 100 0 0 ens160 10.2.8.128 172.16.71.201 255.255.255.192 UG 0 0 0 ens160 10.2.9.0 172.16.71.202 255.255.255.192 UG 0 0 0 ens160 10.2.19.0 0.0.0.0 255.255.255.192 U 0 0 0 docker0 10.2.21.128 172.16.71.203 255.255.255.192 UG 0 0 0 ens160 172.16.71.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
route
[root@dev-master ~]# route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface default gateway 0.0.0.0 UG 100 0 0 ens160 10.2.8.128 tiller.chinaclo 255.255.255.192 UG 0 0 0 ens160 10.2.9.0 172.16.71.202 255.255.255.192 UG 0 0 0 ens160 10.2.19.0 0.0.0.0 255.255.255.192 U 0 0 0 docker0 10.2.21.128 172.16.71.203 255.255.255.192 UG 0 0 0 ens160 172.16.71.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
从以上可以看出加了-n参数,显示的信息都变成了ip地址
1、Destination 目标主机或网络
2、Gatewar 网关,如果没有就显示*号
3、Genmask 子网掩码
4、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):这个路由将不会被接受(用来抵挡不安全的网域!)
- A (installed by addrconf)
5、路由距离,到达指定网络所需的中转数(linux 内核中没有使用)
6、Ref 路由项引用次数(linux 内核中没有使用)
7、Use 此路由项被路由软件查找的次数
8、Iface 该路由表项对应的输出接口
第一条记录:
0.0.0.0 172.16.71.1 0.0.0.0 UG 100 0 0 ens160
这是默认路由:上面的目标主机和子网掩码都是0.0.0.0,表示去任何地方(0.0.0.0),都发给172.16.71.1
再看一条记录:
10.2.19.0 0.0.0.0 255.255.255.192 U 0 0 0 docker0
上面中,网关是0.0.0.0,网关为0.0.0.0的网络通常是直连到网络设备上的。因为到自己的直连设备上是不需要网关的,所以0.0.0.0的网关地址是正常的。
二、配置静态路由
格式为:route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
- add : 添加一条路由规则
- del : 删除一条路由规则
- -net : 目的地址是一个网络
- -host : 目的地址是一个主机
- target : 目的网络或主机
- netmask : 目的地址的网络掩码
- gw : 路由数据包通过的网关
- dev : 为路由指定的网络接口
添加到主机的路由
# route add -host 192.168.1.2 dev eth0 # route add -host 10.20.30.148 gw 10.20.30.40 #添加到10.20.30.148的路由
添加到网络的路由
# route add -net 10.20.30.40 netmask 255.255.255.248 eth0 #添加10.20.30.40的路由 # route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 #添加10.20.30.48的路由 # route add -net 192.168.1.0/24 eth1
添加默认路由
# route add default gw 192.168.1.1
删除路由
# route del -host 192.168.1.2 dev eth0:0 # route del -host 10.20.30.148 gw 10.20.30.40 # route del -net 10.20.30.40 netmask 255.255.255.248 eth0 # route del -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 # route del -net 192.168.1.0/24 eth1 # route del default gw 192.168.1.1
在 CentOS 中默认的内核配置已经包含了路由功能,但默认并没有在系统启动时启用此功能。开启 Linux 的路由功能可以通过调整内核的网络参数来实现。要配置和调整内核参数可以使用 sysctl 命令。例如:要开启 Linux 内核的数据包转发功能可以使用如下的命令。
# sysctl -w net.ipv4.ip_forward=1
这样设置之后,当前系统就能实现包转发,但下次启动计算机时将失效。为了使在下次启动计算机时仍然有效,需要将下面的行写入配置文件/etc/sysctl.conf。
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 1
用户还可以使用如下的命令查看当前系统是否支持包转发。
# sysctl net.ipv4.ip_forward