在Linux网络管理中,默认路由是一项至关重要的配置,它扮演着“最后手段网关”的角色,当系统要发送的数据包目标地址不在任何已知的路由表中时,便会将其全部转发至默认路由指定的网关地址,正是这个机制,使得我们的主机能够与互联网或其他外部网络进行通信,本文将详细介绍如何在Linux系统中配置默认路由,涵盖临时与永久两种方法,并提供不同主流发行版的配置示例。
临时配置默认路由
临时配置主要用于测试、调试或临时的网络变更,其特点是立即生效,但在系统重启后会丢失,最常用的工具是命令,它是现代Linux发行版中(如命令)的替代品。
要添加一条默认路由,你需要知道网关的IP地址以及本机要使用的网络接口,命令格式如下:
sudo ip route add default via <网关IP地址> dev <网络接口>
假设你的网关地址是,网络接口是,那么命令就是:
sudo ip route add default via 192.168.1.1 dev ens33
执行后,你可以使用
ip route show
或简写的来查看当前路由表,其中应该会出现一行以开头的记录。
对于一些老旧系统,可能仍在使用命令,其语法为:
sudo route add default gw <网关IP地址>
虽然命令依然可用,但强烈推荐使用功能更强大的命令。
永久配置默认路由
为了让配置在系统重启后依然生效,必须将其写入网络配置文件中,不同Linux发行版的配置文件和方式有所不同。
Debian/Ubuntu 系统 (使用Netplan)
现代的Ubuntu版本(如18.04及以后)和Debian版本倾向于使用Netplan来管理网络配置,其配置文件通常位于
/etc/netplan/
目录下,以
你需要编辑相应的YAML文件,为指定接口配置网关,编辑
/etc/netplan/01-netcfg.yaml
:
network:version: 2ethernets:ens33:dhcp4: noaddresses: [192.168.1.100/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 8.8.4.4]
这里,关键字就指定了IPv4的默认网关,保存文件后,使用以下命令使配置生效:
sudo netplan apply
RHEL/CentOS/Fedora 系统
在这些基于Red Hat的系统中,网络配置文件存放在
/etc/sysconfig/network-scripts/
目录下,通常命名为
ifcfg-<接口名>
。
编辑对应接口的配置文件,例如
ifcfg-ens33
,添加或修改以下行:
BOOTPROTO=staticONBOOT=yesipADDR=192.168.1.100NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=8.8.8.8
参数明确指定了默认路由的网关地址,保存文件后,重启网络服务以应用更改:
sudo systemctl restart NetworkManager
或者使用命令重新加载配置:
sudo nmcli con reloadsudo nmcli con up ens33
验证与排查
配置完成后,验证是必不可少的一步。
相关问答FAQs
Q1: 临时配置的默认路由在重启后为什么会失效?
A: 因为使用
ip route add
等命令时,你只是在内核的内存中动态地修改了路由表,这个修改是实时生效的,但并没有被写入任何持久化的配置文件中,当系统重启时,网络服务会从硬盘上的配置文件(如Netplan的YAML文件或ifcfg脚本)中重新读取网络设置并初始化,这会覆盖掉之前在内存中做的所有临时更改。
Q2: 如果一台服务器有多个网络接口,如何配置优先使用某个接口的默认路由?
A: 在Linux中,可以为路由条目设置一个“度量值”,数值越低,优先级越高,当存在多条默认路由时,系统会选择度量值最小的那条,在添加临时路由时,可以使用参数:
sudo ip route add default via 192.168.1.1 dev ens33 metric 100sudo ip route add default via 10.0.0.1 dev ens37 metric 200
在这个例子中,通过接口的默认路由因其度量值(100)更低而成为首选,在永久配置中,Netplan和NetworkManager的配置文件也支持设置路由度量值,具体语法可参考其官方文档。














发表评论