商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > Linux系统修改默认网关 立即生效与永久生效方法

Linux系统修改默认网关 立即生效与永久生效方法

  发布于2026-05-22 阅读(0)

扫一扫,手机访问

修改默认网关,听起来是个基础操作,但一步不慎,可能导致整个服务器网络中断。关键在于理解两个核心:一是修改前必须确认新网关的可用性,二是要分清临时生效与永久生效的区别。很多配置不生效的“玄学”问题,往往就出在这两个环节上。

Linux系统修改默认网关 立即生效与永久生效方法

默认网关改错会导致全网中断,必须先确认新网关可达、且与本机在同一子网;临时命令立即生效但重启即丢,永久配置不生效往往是因为配置文件语法错误或服务未重载。

临时修改:ip route add default via(立即生效但不持久)

当需要快速切换网络出口时,临时修改是最直接的方法。这里推荐使用 ip route 命令,它比传统的 route 命令输出更结构化,也更为可靠。不过,执行前有个好习惯:先用 ping -c 3 <新网关IP> 快速验证一下网关是否可达。

  • 添加默认网关:假设网关是 192.168.1.1,出口网卡是 eth0,命令如下:
    sudo ip route add default via 192.168.1.1 dev eth0
  • 处理路由冲突:如果系统已存在默认路由,执行上述命令会提示 RTNETLINK answers: File exists。这时需要先删除旧路由,再添加新的:
    sudo ip route del default
    sudo ip route add default via 192.168.1.1 dev eth0
  • 验证结果:使用 ip route show | grep default 查看,输出类似 default via 192.168.1.1 dev eth0 即表示成功。

需要注意的是,这个命令只负责将路由规则写入内核表,它不会去检查这个网关是否真的能帮你转发数据包。如果网关本身不可达,后续的 curlping 8.8.8.8 等操作会超时,但命令本身并不会报错。

永久生效配置方法

让配置在重启后依然有效,就需要修改系统级的网络配置文件。不同发行版的配置方式差异很大,这也是最容易出错的地方。

Ubuntu 18.04+:/etc/netplan/*.yaml

Netplan 是现代 Ubuntu 系统的默认网络配置工具。它的配置文件是 YAML 格式,对缩进和空格极其敏感,一个不留神就会导致 netplan apply 失败,而且错误提示可能不够明确。

  • 编辑配置文件:例如 sudo nano /etc/netplan/01-network-manager-all.yaml
  • 配置要点:在对应网卡下,使用 gateway4 设置 IPv4 默认网关(注意一个接口只能有一个默认网关)。如果需要添加其他静态路由,则使用 routes 字段。示例如下:
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: false
      addresses: [192.168.1.100/24]
      gateway4: 192.168.1.1
      routes:
        - to: 10.0.0.0/24
          via: 192.168.1.2
  • 应用配置:保存后,建议先运行 sudo netplan try,这个命令会给你120秒的测试时间,如果网络不通可以自动回滚。确认无误后,再执行 sudo netplan apply 使其永久生效。
  • 一个常见坑:不要同时使用 gateway4 和在 routes 里设置 to: 0.0.0.0/0 的默认路由,Netplan 不允许两者共存,否则会报 Invalid value for 'routes' 错误。

CentOS/RHEL 7/8:/etc/sysconfig/network-scripts/ifcfg-eth0

Red Hat 系列的传统发行版通常使用 ifcfg 文件。这里有个关键点:如果网卡配置为 DHCP 自动获取(即 BOOTPROTO=dhcp),那么手动设置的 GATEWAY 字段是无效的

  • 编辑配置文件:例如 sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0
  • 确保静态配置:必须将 BOOTPROTO 设置为 staticnone,然后添加网关信息:
BOOTPROTO=static
GATEWAY=192.168.1.1
DEFROUTE=yes
  • 理解 DEFROUTEDEFROUTE=yes 表示这个接口承担默认路由。如果系统有多块网卡,只想让 eth0 作为默认出口,那么其他接口的配置里必须明确设为 DEFROUTE=no
  • 重启网络服务:修改后,需要重启网络服务使其生效,例如 sudo systemctl restart NetworkManager,或者使用接口重启命令 sudo ifdown eth0 && sudo ifup eth0
  • 另一个坑GATEWAY 的值必须是 IP 地址,如果写成了主机名或域名(如 gateway.local),会导致网络服务启动失败。

通用方法:nmcli 修改 NetworkManager 连接

对于由 NetworkManager 管理网络的环境(大多数桌面版和部分服务器),直接修改 ifcfg 文件可能会被覆盖。使用 nmcli 命令行工具是更安全、更“官方”的永久修改方式。

  • 查找连接名:首先用 nmcli connection show 查看当前的网络连接名称,通常是 “Wired connection 1” 之类的描述。
  • 设置网关并关闭 DHCP:依次执行以下命令,先设置网关,再将 IPv4 获取方式改为手动(否则网关设置可能被 DHCP 下发的信息覆盖):
    sudo nmcli connection modify “Wired connection 1” ipv4.gateway 192.168.1.1
    sudo nmcli connection modify “Wired connection 1” ipv4.method manual
  • 激活配置:最后,重新激活这个连接以使改动生效:
    sudo nmcli connection down “Wired connection 1” && sudo nmcli connection up “Wired connection 1”
  • 注意 DHCP 干扰:NetworkManager 默认不会忽略 DHCP 服务器下发的路由(ipv4.ignore-auto-routes 默认为 no)。如果 DHCP 服务器分配了网关,它可能会覆盖你的手动设置。在复杂网络环境中,可能需要将此参数设为 yes

说到底,无论采用哪种永久配置方式,有一个前提总是成立的:你必须确保新网关的 IP 地址与你服务器的 IP 地址在同一个子网内,并且物理链路是通的。很多“配置明明成功了,但就是上不了网”的情况,根源往往不在 Linux 这头,而在于网关设备本身——可能是它的路由转发功能没开,也可能是防火墙策略拦截了必要的协议。排查问题时,别忘了从整个链路的视角去看。

本文转载于:https://www.php.cn/faq/2408110.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注