Linux 路由表详解及 route 命令详解
  # route 表
通过 route 命令查看 Linux 内核的路由表:
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 eth0
10.0.0.10       10.139.128.1    255.255.255.255 UGH   0      0        0 eth0
10.139.128.0    0.0.0.0         255.255.224.0   U     0      0        0 eth0
link-local      0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-0ab63c131848
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-bccbfb788da0
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-7485db25f958
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.139.128.1    0.0.0.0         UG    0      0        0 eth0
10.0.0.10       10.139.128.1    255.255.255.255 UGH   0      0        0 eth0
10.139.128.0    0.0.0.0         255.255.224.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-0ab63c131848
172.19.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-bccbfb788da0
172.20.0.0      0.0.0.0         255.255.0.0     U     0      0        0 br-7485db25f958
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
各列字段说明:
| 列 | 含义 | 
|---|---|
| Destination | 目标网络或目标主机。Destination 为 default(0.0.0.0)时,表示这个是默认网关,所有数据都发到这个网关(这里是 10.139.128.1) | 
| Gateway | 网关地址,0.0.0.0 表示当前记录对应的 Destination 跟本机在同一个网段,通信时不需要经过网关 | 
| Genmask | Destination 字段的网络掩码,Destination 是主机时需要设置为 255.255.255.255,是默认路由时会设置为 0.0.0.0 | 
| Flags | 标记,含义参考表格后面的解释 | 
| Metric | 路由距离,到达指定网络所需的中转数,是大型局域网和广域网设置所必需的 (不在Linux内核中使用。) | 
| Ref | 路由项引用次数 (不在Linux内核中使用。) | 
| Use | 此路由项被路由软件查找的次数 | 
| Iface | 网卡名字,例如 eth0 | 
Flags 含义:
- U 路由是活动的
 - H 目标是个主机
 - G 需要经过网关
 - R 恢复动态路由产生的表项
 - D 由路由的后台程序动态地安装
 - M 由路由的后台程序修改
 - ! 拒绝路由
 
# 主机路由
路由表中指向单个 IP 地址或主机名的路由记录,其 Flags 字段为 H。下面示例中,对于 10.0.0.10 这个主机,通过网关 10.139.128.1 网关路由:
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.10       10.139.128.1    255.255.255.255 UGH   0      0        0 eth0
...
 1
2
3
4
5
2
3
4
5
# 网络路由
主机可以到达的网络。下面示例中,对于 10.0.0.0/24 这个网络,通过网关 10.139.128.1 网关路由:
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        10.139.128.1    255.255.255.0   UG    0      0        0 eth0
 1
2
3
4
2
3
4
# 默认路由
当目标主机的 IP 地址或网络不在路由表中时,数据包就被发送到默认路由(默认网关)上。默认路由的 Destination 是 default 或 0.0.0.0。
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    0      0        0 eth0
 1
2
3
4
2
3
4
route 命令可以显示或设置 Linux 内核中的路由表,主要是静态路由。
对于局域网中的 Linux 主机,要想访问 Internet,需要将局域网的网关 IP 地址设置为这个主机的默认路由。在命令行中通过 route 命令添加的路由在网卡重启或机器重启后失效。可以在 /etc/rc.local 中添加 route 命令来保证路由设置永久有效。
选项:
-A:设置地址类型-C:打印 Linux 内核的路由缓存-v:显示详细信息-n:不执行 DNS 反向查找,直接显示数字形式的 IP 地址-e:netstat 格式显示路由表-net:到一个网络的路由表-host:到一个主机的路由表
参数:
- add:增加路由记录
 - del:删除路由记录
 - target:目的网络或目的主机
 - gw:设置默认网关
 - mss:设置TCP的最大区块长度(MSS),单位MB
 - window:指定通过路由表的TCP连接的TCP窗口大小
 - dev:路由记录所表示的网络接口
 
# 添加路由 add
#添加到主机的路由
route add –host 192.168.168.110 dev eth0
route add –host 192.168.168.119 gw 192.168.168.1
#添加到网络的路由
route add –net IP netmask MASK eth0
route add –net IP netmask MASK gw IP
route add –net IP/24 eth1
#添加默认网关
route add default gw IP
#删除路由
route del –host 192.168.168.110 dev eth0
 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
可以添加一条可用路由,或添加一条要屏蔽的路由。
# 添加路由
# 添加主机路由
添加主机路由时,需要指定网络 ID 和主机 ID,此时需要设置 netmask 255.255.255.255:
[root@VM_139_74_centos ~]
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.10       10.139.128.1    255.255.255.255 UGH   0      0        0 eth0
...
 1
2
3
4
5
6
2
3
4
5
6
# 添加网络路由
添加网络路由时,只需指定网络 ID,通过 netmask 设置掩码长度:
[root@VM_139_74_centos ~]
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        10.139.128.1    255.255.255.0   UG    0      0        0 eth0
...
 1
2
3
4
5
6
2
3
4
5
6
# 添加添加同一个局域网的主机
不指定 gw 选项时,添加的路由记录不使用网关:
[root@VM_139_74_centos ~]
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
224.0.0.0       0.0.0.0         240.0.0.0       U     0      0        0 eth0
...
 1
2
3
4
5
6
2
3
4
5
6
# 屏蔽路由
[root@VM_139_74_centos ~]
[root@VM_139_74_centos ~]
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
224.0.0.0       -               240.0.0.0       !     0      -        0 -
...
 1
2
3
4
5
6
2
3
4
5
6
# 删除路由记录
跟添加路由类似,可以删除一条可用路由,或删除一条屏蔽的路由。
# 删除可用路由
route del -net 224.0.0.0 netmask 240.0.0.0
 1
# 删除屏蔽的路由
route del -net 224.0.0.0 netmask 240.0.0.0 reject
 1
# 删除和添加设置默认网关
添加或删除默认网关时,Linux 会自动检查网关的可用性:
[root@VM_139_74_centos ~]
SIOCADDRT: Network is unreachable
[root@VM_139_74_centos ~]
SIOCDELRT: No such process
 1
2
3
4
2
3
4
上次更新: 2023/10/10, 14:48:21