一、 配置临时路由(重启后路由失效)
- 先来看下路由表:
ip route,route -n,cat /proc/net/route
均可查看路由表
[root@kvm1 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
输出解释:
route -n
: -n 不解析主机名,加快执行速度Destination
:目的网络或主机的IP地址。如果该字段是0.0.0.0,表示默认网关。Gateway
:数据包到达目的网络前所经过的下一跳路由器的IP地址Genmask
:网络掩码,用于确定IP地址中的网络部分和主机部分
0.0.0.0
:作为网络掩码表示默认路由,用于所有不匹配其他路由的目的地。
255.255.255.255
:作为网络掩码表示主机路由,用于精确匹配单个IP地址。Flags
:路由选项的标志,常见的标志有:
U
:路由处于活动状态(Up)
G
:使用网关(Gateway)
H
:目标是一个主机地址,而不是网络地址。Metric
:路由的度量值或成本,用于路由选择。数值越小,优先级越高。Ref
: 路由条目的引用计数,它表示当前路由条目被多少个网络连接或路由规则所引用Use
: 表示该路由条目被使用的次数。这是一个计数器,用于统计特定路由条目被网络层使用来转发数据包的次数。Iface
:数据包将通过的网络接口,例如eth0、wlan0等
-
配置路由
a. 配置去往网关的默认路由
格式:ip route add default via <网关IP>
Metric 小的优先生效[root@route ~]# ip route add default via 192.168.0.2 [root@route ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.2 0.0.0.0 UG 0 0 0 ens160 0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
删除路由:
格式: ip route del defaultb. 配置去往指定接口的默认路由
格式:ip route add default via <网关IP> dev <接口名称>[root@route ~]# ip route add default via 192.168.0.2 dev ens160 [root@route ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.2 0.0.0.0 UG 0 0 0 ens160 0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
删除路由:
格式: ip route delete default via <网关IP> dev <接口名称># ip route delete default via 192.168.0.2 dev ens160
c. 配置去往指定网段的路由
格式:
ip route add <目的网络> via <下一跳IP> dev <接口名称>
或者
ip route add <目的网络> via <下一跳IP>- <目的网络>是你想要到达的网络的IP地址和子网掩码,如192.168.2.0/24。
- <下一跳IP>是数据包到达目的网络前所经过的下一个路由器的IP地址
- <接口名称>是数据包将通过的本地网络接口,如eth0。(如果只有一个接口可以省略)
[root@route ~]# ip route add 192.168.92.0/24 via 192.168.0.129 [root@route ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160 192.168.92.0 192.168.0.129 255.255.255.0 UG 0 0 0 ens160 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
删除路由:
格式:
ip route delete <目的网络> via <下一跳IP> dev <接口名称>
或者
ip route delete <目的网络> via <下一跳IP>d. 配置去往指定主机的路由
格式:
ip route add <目标主机IP> via <下一跳IP> dev <接口名称>
或者
ip route add <目标主机IP> via <下一跳IP>[root@route ~]# ip route add 192.168.1.1 via 192.168.0.2 [root@route ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160 192.168.1.1 192.168.0.2 255.255.255.255 UGH 0 0 0 ens160 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
删除路由:
格式:
ip route add <目标主机IP> via <下一跳IP> dev <接口名称>
或者
ip route add <目标主机IP> via <下一跳IP># ip route delete 192.168.1.1 via 192.168.0.2
二、配置永久路由
a. 配置默认网关
Centos8 使用NetworkManager来管理网络,所以可以使用nmcli来添加永久默认路由
使用DHCP获取的网关作为默认地址是无法删除的!
格式:nmcli connection modify “<网络接口>” +ipv4.routes “0.0.0.0/0 <下一跳地址>”
使用
nmcli con show
查看网络连接名
使用nmcli connection modify "OldName" con-name "NewName"
修改网络连接名(这种方式会保留源配置文件,生成新的文件)
使用nmcli con modify "OldName" connection.id "NewName"
修改网络连接名(这种方式会直接覆盖源文件按)
# nmcli connection modify "ens160" +ipv4.routes "0.0.0.0/0 192.168.0.129"
# nmcli con down ens160 && nmcli con up ens160
配置文件在
/etc/sysconfig/network-scripts
目录下,如下:
添加了一个route-ens160文件,ens160指定接口
[root@route ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.2 0.0.0.0 UG 100 0 0 ens160
default 192.168.0.129 0.0.0.0 UG 100 0 0 ens160
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
使用nmcli 指定接口添加DNS服务器:#
nmcli con mod "ens160" ipv4.dns "8.8.8.8 8.8.4.4"
使用nmcli 指定接口删除DNS服务器:#nmcli con mod ens160 -ipv4.dns "8.8.8.8 8.8.4.4"
以上都需要重启网络接口才能生效:#nmcli con down ens160 && nmcli con up ens160
删除默认路由:
DHCP分配的无法删除!
格式:nmcli connection modify “<网络接口>” -ipv4.routes “0.0.0.0/0 <下一跳地址>”
# nmcli connection modify "ens160" -ipv4.routes "0.0.0.0/0 192.168.0.129"
# nmcli con down ens160 && nmcli con up ens160
b. 添加去往指定网段的路由
格式:nmcli con mod “<网络接口>” +ipv4.routes “目标网段/掩码位 <下一跳地址>”
# nmcli con mod "ens160" +ipv4.routes "192.168.2.0/24 192.168.0.129"
# nmcli con down ens160 && nmcli con up ens160
[root@route ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.2.0 192.168.0.129 255.255.255.0 UG 100 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
查看配置文件: ens160 指定接口名称,不能乱写
删除指定网段路由:
格式:nmcli con mod “<网络接口>” -ipv4.routes “目标网段/掩码位 <下一跳地址>”
[root@route ~]# nmcli con mod "ens160" -ipv4.routes "192.168.2.0/24 192.168.0.129"
[root@route ~]# nmcli con down ens160 && nmcli con up ens160
Connection 'ens160' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
[root@route ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
c. 添加去往主机的路由
格式:nmcli connection modify <网络接口> +ipv4.routes “<目标主机>/32 <下一跳地址>”
[root@route ~]# nmcli connection modify "ens160" +ipv4.routes "192.168.92.100/32 192.168.0.129"
[root@route ~]# nmcli con down ens160 && nmcli con up ens160
Connection 'ens160' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
[root@route ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.92.100 192.168.0.129 255.255.255.255 UGH 100 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
查看一下配置文件
删除指定主机路由:
格式: nmcli connection modify <网络接口> -ipv4.routes “<目标主机>/32 <下一跳地址>”
[root@route ~]# nmcli connection modify "ens160" -ipv4.routes "192.168.92.100/32 192.168.0.129"
[root@route ~]# nmcli con down ens160 && nmcli con up ens160
Connection 'ens160' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/9)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/10)
[root@route ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160
192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
三、扩展
-
在添加路由时,指定Metric 值
Metric 值越小优先级越高
a. 临时添加
使用ip命令:
格式: ip route add <route> via <下一跳地址> metric <metric_value>[root@route ~]# ip route add 192.168.2.0/24 via 192.168.0.129 metric 10 [root@route ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160 192.168.2.0 192.168.0.129 255.255.255.0 UG 10 0 0 ens160 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
删除:
格式: ip route delete <route> via <gateway> metric <metric_value># ip route delete 192.168.2.0/24 via 192.168.0.129 metric 10
b. 永久添加
使用nmcli命令:
格式: nmcli connection modify <网络接口> +ipv4.routes "<route> <下一跳地址> metric "# nmcli connection modify ens160 +ipv4.routes "192.168.2.0/24 192.168.0.129 10" # nmcli con down ens160 && nmcli con up ens160 [root@kvm1 ~]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.0.2 0.0.0.0 UG 100 0 0 ens160 192.168.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens160 192.168.2.0 192.168.0.129 255.255.255.0 UG 10 0 0 ens160 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
删除:
格式: nmcli connection modify <网络接口> -ipv4.routes "<route> <下一跳地址> metric "# nmcli connection modify ens160 -ipv4.routes "192.168.2.0/24 192.168.0.129 10" # nmcli con down ens160 && nmcli con up ens160