网络与 IP

网关怎么设置?Linux、Windows 默认网关的查看与修改

网关怎么设置分三步:先查出当前网关,并按 IP 和掩码确认正确的网关地址;再按系统写入,临时改路由表、永久改网卡配置;最后用 ping 和 traceroute 验证。一台机器只保留一个默认网关;在机房里,网关以 IP 交付单为准,推算只用来核对。

作者 顶联产品团队发布于 6 分钟阅读

网关怎么设置,先要知道该填哪个地址。默认网关必须和本机 IP 在同一网段,通常是网段里第一个或最后一个可用地址,机房分配公网 IP 时会在交付单上写明。查当前网关,Linux 用 ip route show default,Windows 用 ipconfig 或 route print -4;修改时,Linux 用 ip route replace default via 网关 立即生效,要重启后仍有效就写进 nmcli、netplan 或网卡配置文件,Windows 在网卡的“Internet 协议版本 4 (TCP/IPv4)”属性里填写,或用 netsh、PowerShell 命令修改。改完用 ping 网关和 traceroute 看第一跳确认。不论 Linux 还是 Windows,一台机器只保留一个默认网关,多块网卡时其余网卡用静态路由。

先查当前网关,再确认应该是多少

网关地址怎么查

系统 命令 看哪里
Linux ip route show default default via 后面的地址,dev 后面是走哪块网卡
Linux(老系统) route -n 目标为 0.0.0.0、Flags 带 UG 的那一行,Gateway 列
Linux(NetworkManager) nmcli dev show eth0 IP4.GATEWAY 一行
Windows ipconfig 对应网卡的“默认网关”
Windows route print -4 网络目标和掩码都是 0.0.0.0 的行,“网关”列;有几行就有几个默认网关
Windows(PowerShell) Get-NetIPConfiguration IPv4DefaultGateway
macOS route -n get default gateway: 一行

家用宽带下,“网关是多少”通常就是路由器的地址,常见 192.168.1.1、192.168.0.1,以 ipconfig 的显示或路由器标签为准。

不知道网关是多少:用 IP 和掩码推算

网关只有一个硬性条件:和本机在同一网段。所以先算出网段的范围,再看候选地址:

  1. 用掩码算出块大小:256 减去掩码最后一个非 255 的字节,例如 /27 的掩码 255.255.255.224,块大小是 32;
  2. 本机地址所在的块就是网段:网络地址是块的起点,广播地址是块的终点;
  3. 网络地址加 1、广播地址减 1,就是两个最常见的网关候选。
分到的地址 掩码 网络地址 广播地址 可用范围 网关候选
203.0.113.70/27 255.255.255.224 .64 .95 .65–.94 .65 或 .94
198.51.100.13/29 255.255.255.248 .8 .15 .9–.14 .9 或 .14
192.0.2.6/30 255.255.255.252 .4 .7 .5–.6 .5,即另一个可用地址
10.20.30.40/24 255.255.255.0 .0 .255 .1–.254 .1 或 .254

以第一行为例:70 落在 64 到 95 这个块里,所以网关只可能在 .65 到 .94 之间,按惯例先试 .65 和 .94。推算出来的只是候选,要用 ARP 确认哪个地址真的有设备应答:

arping -c 3 -I eth0 203.0.113.65    # 收到 Unicast reply 说明这个地址有设备
arping -c 3 -I eth0 203.0.113.94

两个都没有应答,说明二层不通或网关不在惯例位置,这时不要逐个地址去试,直接找网络管理员或机房要交付信息。在机房里随便填一个“看起来像网关”的地址,可能恰好是别的客户的服务器。

Linux 设置默认网关:临时修改与永久生效

临时修改:ip route

ip route show default                            # 改之前先记下旧网关
ip route replace default via 203.0.113.65 dev eth0
ip route get 223.5.5.5                           # 确认去外网走新网关

replace 的意思是有就替换、没有就添加,比 add 更省事:已有默认路由时执行 ip route add default ... 会报 RTNETLINK answers: File exists。要删掉一条多余的默认路由,执行 ip route del default via 旧网关。

ip route 改的是内核路由表,重启或者网络服务重启后就恢复了。远程操作时可以利用这一点:先用 ip route replace 改好并验证,再去改配置文件,配置文件和当前状态一致,就不必为了生效而重启网络。

永久修改:按管理网络的组件选

NetworkManager(RHEL、Rocky、AlmaLinux 等),只改网关不动其他参数:

nmcli -f NAME,DEVICE con show                    # 找到网卡对应的连接名
nmcli con mod "System eth0" ipv4.gateway 203.0.113.65
nmcli dev reapply eth0                           # 把改动应用到网卡,不先断开连接

ipv4.gateway 用于静态地址(ipv4.method manual)的连接;DHCP 方式的连接,网关由 DHCP 服务器下发,要改网关就改服务器上的配置,或者先把连接改成静态地址。要去掉网关,写 ipv4.gateway ""。

netplan(Ubuntu 18.04 及以后),网关写成一条默认路由:

network:
  version: 2
  ethernets:
    eth0:
      addresses: [203.0.113.70/27]
      routes:
        - to: default
          via: 203.0.113.65
netplan try      # 120 秒内不确认就自动回退

老教程里的 gateway4: 203.0.113.65 写法在新版本 netplan 中已经弃用,应用时会给出弃用提示,改成上面的 routes 写法即可;版本较老、不认 to: default 的 netplan,写成 to: 0.0.0.0/0。netplan 规定同一张路由表里 IPv4 默认路由只能定义一次,两种写法不要同时出现。

Debian 的 ifupdown(/etc/network/interfaces),在网卡段落里改 gateway 一行:

auto eth0
iface eth0 inet static
    address 203.0.113.70/27
    gateway 203.0.113.65

RHEL 8、CentOS 7 的 ifcfg 文件,改 /etc/sysconfig/network-scripts/ifcfg-eth0 里的 GATEWAY=203.0.113.65,再执行 nmcli con reload 和 nmcli con up 连接名。

Windows 设置默认网关:网卡属性、netsh 与 PowerShell

图形界面

  1. 运行 ncpa.cpl(Win+R 打开“运行”框),进入“网络连接”;
  2. 在要改的网卡上右键打开“属性”,找到“Internet 协议版本 4 (TCP/IPv4)”,再打开它的属性;
  3. 切换到“使用下面的 IP 地址”,在“默认网关”一栏填新网关;地址、掩码、DNS 没变的不用动;
  4. 点“高级”,在“IP 设置”页的“默认网关”列表里只留一条,其余删除;
  5. 一路点“确定”保存,改动立即生效。

Windows 11 也可以在“设置 → 网络和 Internet → 以太网 → IP 分配 → 编辑”里改为手动并填写网关,结果相同。Windows Server Core 没有图形界面,可以运行 sconfig,在“网络设置”里修改。

命令行

单 IP 的机器,用 netsh 一次写入地址、掩码和网关(网卡名以 ipconfig 里显示的为准):

netsh interface ipv4 set address name="以太网" source=static address=203.0.113.70 mask=255.255.255.224 gateway=203.0.113.65 gwmetric=1

set address 会用这一组参数替换网卡上原有的静态地址,配了附加 IP 的服务器执行后附加地址会丢失。这类机器只改网关,用 PowerShell 删旧建新:

Get-NetRoute -DestinationPrefix 0.0.0.0/0          # 看当前有几条默认路由
Remove-NetRoute -InterfaceAlias "以太网" -DestinationPrefix 0.0.0.0/0 -Confirm:$false
New-NetRoute -InterfaceAlias "以太网" -DestinationPrefix 0.0.0.0/0 -NextHop 203.0.113.65

New-NetRoute 默认同时写入当前路由表和持久配置,重启后仍然有效。改完用 ipconfig 和 route print -4 各看一遍,确认默认路由只剩一条且网关正确。网卡上已经有默认网关时,用 New-NetIPAddress 带 -DefaultGateway 参数会报默认网关已存在的错误,也要先删掉旧的。

还有一个老办法 route -p add 0.0.0.0 mask 0.0.0.0 203.0.113.65。它加的是“永久路由”,在 route print 的“永久路由”部分可见,但不显示在网卡属性里,以后别人从网卡属性改网关时容易漏掉它,变成两个默认网关。设置默认网关优先用网卡属性或上面的 PowerShell 命令。

多网卡只保留一个默认网关

服务器常见的组合是一块公网网卡、一块内网网卡。两块都填了网关,就会出现两条默认路由:Linux 按 metric 选一条,Windows 按“接口跃点数 + 网关跃点数”选一条,另一条不会分担流量。更麻烦的是选择结果会变:Windows 默认按链路速率自动计算跃点数,内网网卡升级到 10G 后,优先级可能反超公网网卡,外网流量突然改从内网出口走,表现为“什么都没改,外网突然断了”。

正确的配置是:

  • 公网网卡填默认网关;
  • 内网网卡网关留空,需要访问的内网网段逐条加静态路由。

Windows 上内网网卡加持久静态路由,if 后面是 route print 开头“接口列表”里内网网卡的编号:

route -p add 10.0.0.0 mask 255.0.0.0 10.10.0.1 metric 10 if 12

Linux 上,临时删掉内网网卡的默认路由,加一条内网路由:

ip route del default via 10.10.0.1 dev eth1
ip route add 10.0.0.0/8 via 10.10.0.1 dev eth1

要长期生效,NetworkManager 的内网连接加上 ipv4.never-default yes,再用 +ipv4.routes "10.0.0.0/8 10.10.0.1" 把内网路由写进连接;netplan 只给内网网卡写一条去往 10.0.0.0/8 的路由,不写默认路由,内网网卡走 DHCP 的,用 dhcp4-overrides 里的 use-routes: false 忽略 DHCP 下发的网关。

机房分配 IP 时网关写错的典型现象

机房交付的 IP 通常是一个小网段,例如 203.0.113.64/27,网关 .65。下面这些错误都很常见,现象各不相同:

写错的方式 表现 怎么确认
网关写成同网段另一个地址,比如 .65 写成 .66 外网全不通;如果 .66 恰好是别人的服务器,ARP 能解析到 MAC,看起来“网关是通的” ip neigh show 203.0.113.66 的 MAC 与同网段其他服务器上看到的网关 MAC 不一致;traceroute -n 第一跳就断
掩码写大,/27 写成 /24 系统不报错,外网基本正常,但访问 203.0.113.0/24 里不属于自己的地址通常不通,比如同段其他客户的机器、机房在这个段里的服务 主机把整个 /24 当成本网段,直接 ARP 而不经网关;ip route get 目标IP 显示没有 via
掩码写小,例如 /27 写成 /30 203.0.113.70/30 的网段只有 .68–.71,网关 .65 落在网段外,默认路由加不上,外网全不通 Linux 加默认路由时报 Nexthop has invalid gateway;Windows 保存时弹出网关与 IP 不在同一网段的警告
换了 IP 段,网关还是旧段的 跨网段全不通,Linux ping 外网报 Network is unreachable ip route 里没有 default
网关做了冗余,却填了某台核心交换机的实地址 平时正常,那台交换机维护或故障时断网,另一台接管后仍然不通 让机房确认虚拟网关地址,改填虚拟地址
附加 IP 段也填了网关 Windows 出现多条默认路由,出口随机变化,部分连接回包走错 route print -4 里 0.0.0.0 不止一行

确认改对之后,按这个顺序验证:ping 网关;ip neigh 或 arp -a 看网关 MAC 已解析;traceroute -n 223.5.5.5(Windows 用 tracert -d)第一跳是网关;最后从外部 ping 或 SSH 本机,确认回程也通。

在管理系统里怎么落地

网关填错,根源常在交付环节:交付单上的网关是手写的,和交换机上的配置对不上。Toplink DCIM 的 IP 地址管理按 CIDR 录入地址段后,自动算出起止地址和掩码,网关可选段内第一个或最后一个地址,并记录该段所在的 VLAN 和网关所在的交换机;给服务器分配地址时,掩码和网关以这条登记为准,不用每次手抄。客户自己改网关把服务器改断了网,也不必等机房值班:在客户自助端打开 VNC 控制台登录系统,按上文的命令把网关改回来即可。

常见问题

改网关需要重启电脑或服务器吗?

不需要。Linux 用 ip route replace 立即生效,nmcli、netplan 应用配置后生效;Windows 在网卡属性里点确定或执行 netsh、PowerShell 命令后立即生效。有维护窗口时可以重启一次,确认重启后读到的配置和当前一致。

默认网关可以留空吗?

可以,留空后这块网卡只能访问本网段,访问其他网段和互联网都不通。多网卡服务器的内网网卡通常就是这样配置,再按需添加到内网其他网段的静态路由。

DHCP 自动获取的网关能改吗?

在本机上改了也会在下次续租时被覆盖。要么把网卡改成静态地址再填网关,要么让管理员在 DHCP 服务器上修改下发的网关(选项 3,Router)。

想看看在你的机房里怎么用?

从一次产品演示开始,梳理你的业务链路。

查看价格
服务热线 400-112-2951

让我们聊聊你的 IDC 业务

扫码添加企业微信,预约产品演示或申请试用。

Toplink 企业微信二维码

长按保存或使用企业微信 / 微信扫描

也可致电
400-112-2951
Telegram
@TopLink88