linux配置默认网关核心是明确外网流量出口:临时用ip route replace default via x dev y立即生效,永久则依发行版选netplan(ubuntu/debian)、nmcli或ifcfg(rhel/centos),严禁多default路由,须验证可达性与路由表唯一性。

Linux 中配置默认网关,核心是告诉系统“发往外网的数据该交给谁”。临时设置用 ip route replace 命令,永久生效则取决于发行版和网络管理工具——不是所有系统都认 GATEWAY= 这种写法,也不能靠改错文件来碰运气。
临时配置:用 ip route 替换,安全又可靠
这是调试和验证的首选方式,立即生效、重启即失,但不会残留重复路由:
- 先确认接口名和状态:
ip -br addr show | grep UP(常见如ens33、enp0s3,不是凭空写eth0) - 确认网关 IP 和该接口在同一子网(例如接口是
192.168.5.10/24,网关就得是192.168.5.x) - 执行替换命令:
sudo ip route replace default via 192.168.1.1 dev ens33 - 验证是否成功:
ip route show | grep default—— 输出应只有一行,且via和dev都正确
Ubuntu/Debian(Netplan)永久配置
Ubuntu 18.04+ 和新版 Debian 默认用 Netplan,/etc/network/interfaces 或 /etc/sysconfig 下的旧写法完全无效:
- 找到配置文件:
/etc/netplan/*.yaml(如01-network-manager-all.yaml) - 在对应网口段下添加(注意缩进必须是两个空格):
gateway4: 192.168.1.1(仅 IPv4)
或更灵活的写法:routes:- to: defaultvia: 192.168.1.1on-link: true - 保存后运行:
sudo netplan apply;报错时加--debug查看具体哪行 YAML 不合法
RHEL/CentOS/Fedora 永久配置
关键第一步是确认 NetworkManager 是否接管网卡,否则直接改配置文件会被忽略:
- 查接管状态:
nmcli d show ens33 | grep GENERAL.STATE,若显示connected,说明 NM 在管 - 若 NM 接管:用
nmcli修改:sudo nmcli c modify "System ens33" ipv4.routes "0.0.0.0/0 192.168.1.1"sudo nmcli c down "System ens33" && sudo nmcli c up "System ens33" - 若不用 NM(
NM_CONTROLLED=no且ONBOOT=yes):
编辑/etc/sysconfig/network-scripts/ifcfg-ens33,添加一行:GATEWAY=192.168.1.1
验证与避坑要点
配完不验证等于没配,几个关键动作不能跳过:
- 检查路由表:
ip route show | grep default—— 必须只有一条,且指向正确网关和接口 - 测试连通性:
ping -c 3 192.168.1.1(网关)和ping -c 3 8.8.8.8(外网) - 确认流量路径:
ip route get 8.8.8.8应返回你刚设的网关和接口 - 严禁手动添加多个
default路由——Linux 只允许一个有效默认网关,多加会导致部分流量发不出去 -
route命令已废弃:不支持 IPv6、无法指定 metric、新版内核行为不可靠,新环境别用











