1、使用route -n命令查看Linux内核路由表
$route -n
说明:
Destination -- 目标网段或主机
Gateway -- 网关,*表示目标是本主机所属的网络,不需要路由
Genmask -- 掩码
Flags -- 标记
U:路由是活动的
H:目标是一个主机
G:路由指向网关
R:恢复动态路由产生的表项
D:由路由的后台程序动态地安装
M:由路由的后台程序修改
!:拒绝路由
Metric -- 路由距离,到达指定网络需要的中转数
Ref -- 路由项应用次数
Use -- 此路由项被路由软件查找的次数
Iface -- 该路由表项对应的输出接口
2、三种路由类型说明
a)主机路由
主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H。如下:
Destination Gateway Genmask Flags Metric Ref Use Iface ----------- ------- ------- ----- ------ --- --- ----- 10.0.0.10 192.168.1.1 255.255.255.255 UH 0 0 0 eth0
b)网络路由
网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。如下:
Destination Gateway Genmask Flags Metric Ref Use Iface ----------- ------- ------- ----- ----- --- --- ----- 192.19.12 192.168.1.1 255.255.255.0 UN 0 0 0 eth0
c)默认路由
当主机不能在路由表中查找到目标主机的IP地址或网络路由时,数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。如下:
Destination Gateway Genmask Flags Metric Ref Use Iface ----------- ------- ------- ----- ------ --- --- ----- default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
3、配置路由route的命令
设置和查看路由表都可以用 route 命令,设置内核路由表的命令格式是:
route [add|del] [-net|-host] target [netmask Nm] [gw Gw] [[dev] If]
说明:
add 添加一条路由规则
del 删除一条路由规则
-net 目的地址是一个网络
-host 目的地址是一个主机
target 目的网络或主机
netmask 目的地址的网络掩码
gw 路由数据包通过的网关
dev 为路由指定的网络接口
4、route命令使用举例
添加到主机的路由 # route add -host 192.168.1.2 dev eth0:0 # route add -host 10.20.30.148 gw 10.20.30.40 添加到网络的路由 # route add -net 10.20.30.40 netmask 255.255.255.248 eth0 # route add -net 10.20.30.48 netmask 255.255.255.248 gw 10.20.30.41 # 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 //route del default 删除所有的默认路由 添加一条默认路由 # route add default gw 10.0.0.1 //默认只在内存中生效 开机自启动可以追加到/etc/rc.local文件里 # echo "route add default gw 10.0.0.1" >>/etc/rc.local 添加一条静态路由 # route add -net 192.168.2.0/24 gw 192.168.2.254 要永久生效的话要这样做: # echo "any net 192.168.2.0/24 gw 192.168.2.254" >>/etc/sysconfig/static-routes 添加到一台主机的静态路由 # route add -host 192.168.2.2 gw 192.168.2.254 要永久生效的话要这样做: # echo "any host 192.168.2.2 gw 192.168.2.254 " >>/etc/sysconfig/static-routes 注:Linux 默认没有这个文件 ,得手动创建一个
5、设置包转发
在Linux中默认的内核配置已经包含了路由功能,但默认并没有在系统启动时启用此功能;
开启Linux的路由功能可以通过调整内核的网络参数来实现,方法如下:
临时开启路由功能: # echo 1 > /proc/sys/net/ipv4/ip_forward 或者 # sysctl -w net.ipv4.ip_forward=1 永久开启路由功能 # vim /etc/sysctl.conf net.ipv4.ip_forward = 1 # sysctl -p
6、静态路由配置
添加静态路由到路由表的语法如下:
ip route [destination_network] [mask] [next-hop_address] administrative_distance]
说明:
ip route 用于创建静态路由的命令。
Destination_network 需要发布到路由表中的网段。
Mask 在这一网络上使用的子网掩码。
Next-hop_address 下一跳路由器的地址。
administrative_distance 默认时,静态路由有一个取值为1 的管理性距离。在这个命令的尾部添加管理权来修改这个默认值。