网关是什么意思?默认网关的作用与网关地址怎么确定
网关(英文 gateway)是一个网段通往其他网段的出口。主机发现目标不在本网段时,就把数据包交给网关,由它转发出去;主机上配置的“默认网关”,就是默认路由 0.0.0.0/0 的下一跳。网关地址必须和主机在同一网段,按惯例取网段里第一个或最后一个可用地址,具体以网络管理员或机房分配的为准。
网关是什么意思?简单说,网关就是一个网段通往其他网段的出口。同一网段里的设备可以直接通信,要访问别的网段或者互联网,数据包必须先交给网关,由它转发出去。网关通常不是一台单独的设备,而是路由器、三层交换机或防火墙上与你处于同一网段的那个接口,比如你的电脑是 192.168.1.23/24,网关常见的是 192.168.1.1。电脑、服务器上填写的“默认网关”,意思是:凡是不知道该怎么走的目标,一律交给这个地址,在路由表里它就是默认路由 0.0.0.0/0 的下一跳。
网关是什么:一个网段通往外面的出口
网关的英文是 gateway,默认网关是 default gateway。早期的 TCP/IP 文档就把路由器叫作 gateway,例如 1987 年的 RFC 1009 标题就是“Requirements for Internet Gateways”(互联网网关的要求),后来的标准才统一改称 router。所以在 IP 网络里说“网关”,指的就是承担路由转发的那个设备接口。
网关的作用可以归结为三点:
- 转发跨网段的流量:本网段以外的目标,都由网关按自己的路由表送往下一跳;
- 划定网段的边界:广播、ARP 请求到网关为止,不会扩散到别的网段;
- 在边界上做控制:很多网关同时承担 NAT、访问控制、限速等功能,家用路由器把内网地址转换成公网地址,就发生在网关上。
“网关是什么设备”这个问题,答案是:网关是一个角色,不是某种固定的设备。下面这些都可以当网关:
| 场景 | 充当网关的设备 | 网关地址配在哪里 |
|---|---|---|
| 家庭、小办公室 | 家用路由器、光猫 | 路由器的 LAN 口地址,常见 192.168.1.1 |
| 企业园区、机房 | 三层交换机 | 每个 VLAN 的三层接口:华为叫 Vlanif,H3C 叫 Vlan-interface,思科叫 SVI |
| 机房出口、分支互联 | 路由器 | 物理接口或子接口 |
| 安全边界 | 防火墙 | 内网侧接口 |
| 虚拟化、容器环境 | 开启转发的 Linux 主机、虚拟路由器 | 网桥或虚拟接口,例如 Docker 默认网桥的 172.17.0.1 |
生活里还会听到协议网关、API 网关、支付网关、物联网网关,那些是“在两个系统之间转换和转发”的引申用法,和这里说的 IP 网关不是一回事。
为什么跨网段必须经过网关
主机发包之前,先用自己的 IP 和掩码判断目标在不在同一网段。在同一网段,就用 ARP 广播问出对方的 MAC,直接把帧发给对方;不在同一网段,ARP 广播传不过去,主机就改为问网关的 MAC,把帧交给网关。
以电脑 192.168.1.23/24 访问 198.51.100.20 为例,过程是这样的:
- 电脑算出 198.51.100.20 不在 192.168.1.0/24 里,查路由表,只有默认路由能匹配,下一跳是 192.168.1.1;
- 电脑用 ARP 问出 192.168.1.1 的 MAC,把数据包封装成以太网帧:目的 MAC 是网关的,目的 IP 仍然是 198.51.100.20;
- 网关收下这个帧,拆掉二层头,按自己的路由表找到下一跳,把 TTL 减 1,重新封装后从出口发出;
- 后面的每一台路由器重复第 3 步,直到送达目标所在的网段。
同一个数据包,在网关前后长这样:
| 字段 | 电脑 → 网关这一段 | 网关 → 下一跳这一段 |
|---|---|---|
| 源 MAC | 电脑网卡的 MAC | 网关出口接口的 MAC |
| 目的 MAC | 网关内网接口的 MAC | 下一跳设备的 MAC |
| 源 IP | 192.168.1.23 | 不变;家用路由器做 NAT 时换成它 WAN 口的地址 |
| 目的 IP | 198.51.100.20 | 不变 |
| TTL | 例如 64(Linux 的默认初始值) | 减 1,变成 63 |
可以看出,IP 地址标明的是终点,MAC 地址只管这一跳;网关正是在每一跳之间“换信封”的那个角色。
没有配置网关会怎样?同网段的机器照样能互通,跨网段的一律不通。Linux 上 ping 外网会直接报 connect: Network is unreachable,因为路由表里根本找不到能匹配的路由。
网关地址怎么确定:第一个还是最后一个可用 IP
网关地址只需要满足一个硬性条件:和主机在同一网段,并且与网关设备接口上实际配置的地址一致。至于取哪个地址,靠的是惯例:
- 第一个可用地址最常见,例如 192.168.1.0/24 的网关取 192.168.1.1;
- 最后一个可用地址也有不少人用,例如 /24 取 .254;
- 机房分配公网 IP 时,交付单上会写明网关,照抄即可,不要自己猜。猜错了不但上不了网,还可能和别人的地址冲突。
在机房里,网关地址会直接影响客户能用几个 IP。以分给客户的 203.0.113.8/29 为例,一共 8 个地址:
| 地址 | 单网关时的用途 | 网关做 VRRP 冗余时的用途 |
|---|---|---|
| 203.0.113.8 | 网络地址,不可用 | 网络地址,不可用 |
| 203.0.113.9 | 网关 | 虚拟网关地址,服务器填这个 |
| 203.0.113.10 | 客户可用 | 主核心交换机的接口地址 |
| 203.0.113.11 | 客户可用 | 备核心交换机的接口地址 |
| 203.0.113.12–14 | 客户可用 | 客户可用 |
| 203.0.113.15 | 广播地址,不可用 | 广播地址,不可用 |
| 客户可用合计 | 5 个 | 3 个 |
同样一个 /29,网关做了双机冗余后,客户可用地址从 5 个变成 3 个。所以报价和分配 IP 时,要先弄清网关的部署方式。
配置时如果网关不在本网段,系统会拦住你:Windows 保存时会提示默认网关不在 IP 地址和子网掩码定义的网段上;Linux 执行 ip route add default via 会报 Error: Nexthop has invalid gateway。遇到这种提示,先检查掩码是不是写错了。少数服务商会有意给出不在本网段的网关,需要先加一条指向网关的直连路由,netplan 里则在路由上写 on-link: true,按服务商的文档操作即可。
怎么查看默认网关:ip route 与 route print
Linux 上看默认网关和它的 MAC:
ip route show default # 默认路由,via 后面就是网关
ip route get 198.51.100.20 # 访问某个目标时实际用哪个网关、哪块网卡、哪个源地址
ip neigh show 203.0.113.9 # 网关的 MAC,状态应为 REACHABLE 或 STALE
default via 203.0.113.9 dev eth0 proto static metric 100
198.51.100.20 via 203.0.113.9 dev eth0 src 203.0.113.12 uid 0
cache
203.0.113.9 dev eth0 lladdr 00:00:5e:00:01:01 REACHABLE
最后一行的 MAC 以 00:00:5e:00:01 开头,说明这个网关是 VRRP 虚拟网关,最后一个字节 01 是 VRRP 组号,后文会讲。
Windows 上有三种看法:
ipconfig # “默认网关”一行
route print -4 # 活动路由里网络目标为 0.0.0.0 的那一行
Get-NetRoute -DestinationPrefix 0.0.0.0/0 # PowerShell,NextHop 列就是网关
route print -4 输出里,网络目标和网络掩码都是 0.0.0.0 的那一行就是默认路由,“网关”列是网关地址,“跃点数”列决定有多条默认路由时优先用哪条。用 tracert -d 198.51.100.20(Linux 用 traceroute -n)看第一跳,显示的也是网关。
机房里的网关:三层交换机 VLANIF、路由器与 VRRP
在机房里,服务器的网关通常落在两个地方:
- 核心或汇聚层的三层交换机:每个 VLAN 建一个三层接口,配上这个网段的网关地址。一个 VLAN 对应一个网段、一个网关,这是最常见的做法。
- 出口路由器或防火墙:公网地址段直接由上联路由器做网关,或者需要在网关上做 NAT、安全策略时由防火墙承担。
网关一旦故障,整个网段都会断网,所以机房的网关一般做冗余,常用的协议是 VRRP(思科设备上还常见私有的 HSRP)。两台核心交换机共享一个虚拟网关地址,平时由优先级高的主设备应答这个地址的 ARP,主设备故障时,备设备在秒级接管。服务器上只填虚拟地址,切换过程中不用改任何配置。华为交换机上的配置示例:
# 核心交换机 A(优先级 120,作为主)
interface Vlanif100
ip address 203.0.113.10 255.255.255.248
vrrp vrid 1 virtual-ip 203.0.113.9
vrrp vrid 1 priority 120
# 核心交换机 B(默认优先级 100,作为备)
interface Vlanif100
ip address 203.0.113.11 255.255.255.248
vrrp vrid 1 virtual-ip 203.0.113.9
配置完用 display vrrp brief 查看哪台是 Master。IPv4 的 VRRP 虚拟 MAC 固定以 00-00-5E-00-01 开头,最后一个字节就是 VRID,所以服务器上看到网关 MAC 是 00:00:5e:00:01:01,就知道它对应 VRID 1。
网关相关的故障,可以按下表从现象倒推原因:
| 现象 | 常见原因 | 检查方法 |
|---|---|---|
| 同网段互通,跨网段全都不通 | 没配默认网关,或网关地址填错 | ip route show default 看网关是否正确 |
ip neigh 里网关状态是 FAILED 或 INCOMPLETE |
二层不通:端口 VLAN 划错、链路断、网关接口没起来 | 在交换机上核对端口 VLAN 和三层接口状态 |
| ping 网关不通,访问外网却正常 | 网关禁 ping 或对 ICMP 限速 | 看 ARP 能否解析网关 MAC,不以 ping 为准 |
| 网关的 MAC 时不时变成别的值 | 有人把自己的 IP 配成了网关地址,或者存在 ARP 欺骗 | arping -I eth0 -c 3 203.0.113.9,收到多个不同 MAC 的应答就有冲突 |
| 时通时断,换网卡就好 | 多网卡都配了默认网关,回程走错了网卡 | 只保留一条默认路由,其余用静态路由 |
在管理系统里怎么落地
网关配错,多半不是不会配,而是一个网段的网关、掩码、VLAN 分散记录在交付单、装机模板和交换机配置里,几处对不上。Toplink DCIM 的 IP 地址管理按 CIDR 录入地址段,自动算出起止地址和子网掩码,网关可以选段内第一个或最后一个地址;每个段同时登记所在的 VLAN、网关挂在哪台支持路由的交换机上,以及两个 DNS 地址。给服务器分配 IP 时从这个段里取址,装机配置和交付单都照这条记录填写网关和掩码,几处就不会各说各的。服务器换网段时,在交换机管理里直接修改端口 VLAN,再按新网段的记录更新服务器的地址和网关,VLAN 与网段就不会错位。
常见问题
家用路由器的网关地址就是它的管理后台地址吗?
多数家用路由器是同一个,比如 192.168.1.1,在浏览器里输入就能打开管理页面。这只是家用设备的习惯:机房和企业网里的网关是三层交换机或路由器的接口,设备一般通过单独的管理地址维护,不对客户开放。
网关和 DNS 有什么区别?
网关负责转发数据包,DNS 负责把域名解析成 IP,家用路由器常常兼做两件事,所以容易混在一起。DNS 填错时 ping IP 能通、访问域名不通;网关填错时连外网 IP 都不通。
IPv6 的网关需要手工配置吗?
通常不用。路由器会定期发送路由通告(RA),主机据此自动设置默认网关,所以 IPv6 路由表里的网关常常是 fe80:: 开头的链路本地地址。机房服务器手工配置静态 IPv6 时,也可以填机房给的全局地址作为网关。
一台电脑能配两个默认网关吗?
能配,但同一时刻一般只按跃点数(metric)用优先级高的那一条,另一条不会自动分担流量。所以多配一个默认网关既不能叠加带宽,也不等于出口冗余,冗余要在网关一侧做。