Gateway 是什么?网络网关完整教程
Gateway(网关)是网络通信中负责「跨网段转发数据包」的关键设备。当你的电脑要连上互联网,或是与不同子网的设备通信,数据包都必须先经过 Gateway。本文用白话讲解 Gateway 的定义、运作原理、查看与设置方式,并示范常见问题排查。
更多网络基础概念,请参考 IP、Subnet Mask、Gateway 完整教程。
什么是 Gateway?
Gateway 的定义
Gateway(网关,也称为默认网关,Default Gateway)是一台在不同网络之间转发数据包的设备,通常就是你家里或公司的路由器(Router)。
用生活中的例子来比喻:假设你住在北京,要寄一封信给上海的朋友。你不会直接跑去上海投递,而是先把信投进附近的邮筒(Gateway),再由邮局系统(互联网路由)一站一站地把信送到目的地。Gateway 扮演的就是这个「第一个邮筒」的角色——你只需要知道它在哪里,剩下的路由工作交给它处理。
Default Gateway(默认网关)
在实际设置中,我们通常设置的是 Default Gateway(默认网关)。它的意思是:当设备的路由表中找不到更精确的路由规则时,就把数据包送到这个默认的 Gateway,由它决定下一步怎么走。
家用环境中,Default Gateway 几乎都是你的 Wi-Fi 路由器,常见 IP 为:
192.168.1.1(最常见)192.168.0.110.0.0.1
你可以把 Default Gateway 理解成你的网络「出口」:所有要离开你的局域网的流量,都要先经过它。
Gateway 的运作原理
数据包转发的决策步骤
当你的电脑(假设 IP 为 192.168.1.100/24)要发送一个数据包到目标 IP,以下是系统的判断流程:
步骤 1:判断目标是否在同一个网段
电脑会用自己的 Subnet Mask(255.255.255.0)对自己的 IP 和目标 IP 各做一次 AND 位运算:
自己的网络地址:
192.168.1.100 AND 255.255.255.0 = 192.168.1.0
目标 IP 142.250.185.78 的网络地址:
142.250.185.78 AND 255.255.255.0 = 142.250.185.0
两个结果不同 → 不在同一个网段
步骤 2:同网段 — 直接 ARP 查询
如果目标 IP 和自己在同一个网段(例如目标是 192.168.1.200),电脑会发送 ARP(Address Resolution Protocol)广播,询问「谁的 IP 是 192.168.1.200?请告诉我你的 MAC Address」,然后直接在局域网内传送。
步骤 3:不同网段 — 送往 Gateway
如果目标不在同一个网段,电脑查询路由表,找到 Default Gateway(192.168.1.1),用 ARP 查出路由器的 MAC Address,然后把数据包的目标 MAC Address 填成路由器的 MAC,将数据包送给路由器。
步骤 4:Gateway 查询路由表继续转发
路由器收到数据包后,查询自己的路由表,决定下一个 hop(跳点)是哪里,再往前传。这个过程在互联网上会重复多次,直到数据包抵达目的地。
路由表(Routing Table)
路由表是每台设备(包含路由器和一般电脑)都有的一份清单,记录了「要到达某个网段,应该往哪个方向送」。
# Linux 查看路由表
ip route show
# 典型输出
default via 192.168.1.1 dev eth0 proto dhcp src 192.168.1.100 metric 100
# ↑ default = 所有找不到精确路由的数据包,都送到 192.168.1.1(Gateway)
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.100
# ↑ 目标是 192.168.1.0/24 网段的数据包,直接从 eth0 接口送出(不需要 Gateway)
路由表的匹配规则是最长前缀匹配(Longest Prefix Match):越精确的路由规则优先级越高,只有在所有规则都不符合时,才会落到 default 那条(也就是送往 Gateway)。
如何查看你的 Gateway
Linux(使用 ip route)
# 方法一:查看完整路由表
ip route show
# 方法二:只看默认路由(Gateway)
ip route show default
# 输出示例
# default via 192.168.1.1 dev eth0
# 方法三:旧版命令(部分系统仍支持)
route -n
# 输出示例
# Destination Gateway Genmask Flags Metric Ref Use Iface
# 0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 eth0
# 192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
# Destination 为 0.0.0.0(代表 default),Gateway 列就是 192.168.1.1
macOS(使用 netstat -nr)
# 查看路由表,-n 不解析主机名称,-r 显示路由
netstat -nr
# 或者只看 IPv4 默认路由
netstat -nr | grep default
# 输出示例
# default 192.168.1.1 UGScg en0
# 第二列 192.168.1.1 就是 Gateway
# macOS 也可以用
route get default
# 输出示例
# route to: default
# destination: default
# mask: default
# gateway: 192.168.1.1 ← 这就是 Gateway
# interface: en0
Windows(使用 ipconfig)
# 查看网络设置,包含 Gateway
ipconfig
# 输出示例
# 无线局域网适配器 WLAN:
# 连接特定的 DNS 后缀 . . . . . .:
# IPv4 地址 . . . . . . . . . . : 192.168.1.100
# 子网掩码 . . . . . . . . . . : 255.255.255.0
# 默认网关 . . . . . . . . . . . : 192.168.1.1
# ↑ 「默认网关」就是 Gateway
如何设置 Gateway
临时设置(重启后失效)
这种方式适合临时测试,重启或重新启动网络服务后设置就会消失。
# 添加默认路由(设置 Gateway)
sudo ip route add default via 192.168.1.1 dev eth0
# 如果已有默认路由,需要先删除再添加
sudo ip route del default
sudo ip route add default via 192.168.1.1 dev eth0
# 验证
ip route show default
永久设置(Ubuntu,使用 Netplan)
Ubuntu 18.04 以后使用 Netplan 管理网络设置,设置为永久生效。
# 找到 Netplan 配置文件
ls /etc/netplan/
# 通常是 01-netcfg.yaml 或 00-installer-config.yaml
# 编辑配置文件
sudo nano /etc/netplan/01-netcfg.yaml
设置静态 IP 和 Gateway 的示例:
network:
version: 2
ethernets:
eth0:
dhcp4: false # 关闭自动获取 IP
addresses:
- 192.168.1.100/24 # 静态 IP(CIDR 格式)
routes:
- to: default
via: 192.168.1.1 # 设置 Gateway
nameservers:
addresses:
- 8.8.8.8 # DNS 服务器
# 应用设置(立即生效)
sudo netplan apply
# 验证
ip route show
永久设置(CentOS/RHEL,使用 nmcli)
# 查看当前连接名称
nmcli connection show
# 设置 Gateway
nmcli connection modify eth0 ipv4.gateway 192.168.1.1
# 重新连接应用设置
nmcli connection up eth0
# 验证
ip route show
Gateway 需要搭配 Subnet Mask 使用,详见 Subnet Mask 是什么?。
Gateway 常见问题排查
问题 1:无法连上互联网
当你无法上网时,先确认 Gateway 是否可达:
# 步骤 1:先确认自己有 IP 地址
ip addr show
# 步骤 2:查看 Gateway IP
ip route show default
# 记下 via 后面的 IP(例如 192.168.1.1)
# 步骤 3:ping Gateway,确认局域网通信正常
ping -c 4 192.168.1.1
# 如果有回应:Gateway 可达,问题可能在 Gateway 以外(ISP 或 DNS)
# 如果没有回应:Gateway 不可达,问题在局域网层面
问题 2:ping Gateway 没有回应
# 确认自己的 IP 和 Gateway 在同一个网段
ip addr show eth0
# 例如 IP 是 192.168.1.100/24,那 Gateway 应该是 192.168.1.x
# 确认路由表正确
ip route show
# 如果 Gateway 设置错误,重新设置
sudo ip route del default
sudo ip route add default via 192.168.1.1 # 替换成正确的 Gateway IP
问题 3:使用 traceroute 追踪数据包路径
traceroute 可以显示数据包从你的电脑出发,每经过一个路由器(hop)的 IP 和延迟:
# Linux/macOS
traceroute google.com
# Windows
tracert google.com
# 输出示例(简化)
# traceroute to google.com (142.250.185.78), 30 hops max
# 1 192.168.1.1 (192.168.1.1) 2.345 ms ← 第一跳就是你的 Gateway
# 2 10.20.30.1 (10.20.30.1) 15.234 ms ← ISP 的路由器
# 3 ...
# 10 142.250.185.78 30.123 ms ← 目标服务器
第一个 hop 通常就是你的 Gateway(家用路由器)。如果第一跳就超时(* * *),代表 Gateway 有问题。
问题 4:「No route to host」错误
这个错误通常代表路由表中没有可以到达目标 IP 的路由:
# 查看路由表确认有 default 路由
ip route show
# 如果没有 default 路由,添加它
sudo ip route add default via 192.168.1.1
# 确认 Gateway 本身可达
ping -c 2 192.168.1.1
常见问题(FAQ)
Q1: 路由器和 Gateway 是同一件事吗?
在家用环境中,两者通常指的是同一台设备。路由器(Router)是设备名称,Gateway(网关)是功能描述。你家的路由器同时承担了 Gateway(对外连接的出口)、DHCP 服务器(分配 IP 给局域网设备)、DNS 转发等多种功能。在企业网络中,Gateway 可能是独立的防火墙设备,和一般的路由器分开。
Q2: 为什么需要 Default Gateway?直接连互联网不行吗?
你的电脑连接的是局域网(LAN),局域网使用的是私有 IP(如 192.168.1.100),这个 IP 在互联网上是无效的。Default Gateway(路由器)负责:
- 把你的私有 IP 通过 NAT 转换成公有 IP
- 在你的数据包和互联网之间做桥接
- 管理进出的流量(防火墙功能)
如果没有设置 Default Gateway,你的电脑就像一个没有出口的房间,只能和同一个房间(同一个网段)里的设备通信。
Q3: 可以设置多个 Gateway 吗?
可以,但需要搭配路由规则(Policy Routing)管理。一般情况下,一台设备只设置一个 Default Gateway(默认所有流量走这条)。如果有多条网络连接(例如同时接了两个 ISP),可以通过路由表设置不同目标网段走不同的 Gateway,或是使用 ip rule 设置更进阶的策略路由。这在企业或服务器环境中较常见,家用环境几乎不需要。