1. 网关基础概念:网关、位置与核心功能

网关这词,听起来挺唬人的。说白了,它就是网络世界的「守门员」。

我刚开始接触网络时,总觉得网关和路由器是一回事。后来被现实狠狠教育了一次——那次公司网络割接,我直接把网关和路由器的配置混为一谈,结果全网断联两小时。嗯,从那以后我再也不敢小看这个「守门员」了。

1.1 什么是网关

网关(Gateway),本质上是连接两个不同网络的设备。它负责在不同协议、不同架构的网络之间「翻译」和「转发」数据。

你想想看,家里的电脑和公司的服务器,它们不在同一个网段,怎么通信?靠的就是网关。网关是出口,也是入口。

一句话总结:网关是网络与网络之间的「桥梁」,也是数据进出的「检查站」。

我个人习惯把网关分为两类:

  • 三层网关:基于 IP 地址工作,最常见,比如家用路由器的默认网关。
  • 应用层网关:能理解应用协议,比如邮件网关、Web 应用防火墙。

我在项目中遇到过一种情况:客户的内网用的是私有协议,外网是标准 TCP/IP。普通路由器根本过不去,必须上应用层网关做协议转换。那次折腾了整整三天,最后用了一台支持自定义协议解析的网关才搞定。

1.2 网关在网络架构中的位置

网关的位置,其实就一句话:网络的边界上。

不管是企业内网、数据中心,还是云环境,网关永远站在「内」和「外」的交界处。它一边连着信任区域(内网),一边连着非信任区域(外网)。

下面这张图,是我画的一个典型网关位置示意:

网关在网络架构中的位置 内网(信任区域) PC 1 PC 2 服务器 打印机 IP: 192.168.1.0/24 网关 路由/NAT/ACL 外网(非信任区域) Internet 云服务 远程站点 合作伙伴 IP: 公网地址 网关位于内网与外网的交界处,是数据进出的唯一通道 所有跨网络通信都必须经过网关的检查与转发

从图上可以看得很清楚:内网设备想访问外网,必须经过网关。反过来,外网请求进入内网,也得先过网关这一关。

我的经验:网关的位置决定了它的性能要求。我曾经给一家公司做方案,他们把所有流量都经过一台低配网关,结果一到高峰期就卡死。后来换了台企业级网关,问题才解决。记住:网关是瓶颈点,配置不能省。

1.3 网关的核心功能

网关不是光站在那儿就行,它得干活。核心功能有三个:路由、NAT、ACL。我一个个说。

1.3.1 路由(Routing)

路由,就是网关决定数据包「往哪走」的能力。

网关收到一个数据包,会查路由表。路由表里有目标网段和下一跳地址。匹配上了,就转发;匹配不上,就丢弃或者扔给默认路由。

为什么会这样?因为网关不可能知道全世界的所有地址,它只需要知道「谁该往哪送」就行。

举个例子:

# 查看路由表(Linux)
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
10.0.0.0        192.168.1.254   255.0.0.0       UG    100    0        0 eth0

这里有三条路由:

  • 默认路由(0.0.0.0/0):所有未知流量都走 192.168.1.1
  • 直连路由(192.168.1.0/24):本网段直接通信
  • 静态路由(10.0.0.0/8):去 10 网段走 192.168.1.254

我记得有一次排查一个跨网段访问慢的问题,查了半天发现是路由表里有一条错误的静态路由,把流量引到了错误的下一跳。删掉那条路由后,速度立刻恢复正常。路由表这东西,多一条不如少一条,精确定位才是关键。

1.3.2 NAT(网络地址转换)

NAT 是网关最常用的功能之一。它的作用:把内网的私有 IP 转换成公网 IP。

你想想看,IPv4 地址就那么点,全世界设备不够分。怎么办?内网用私有地址(比如 192.168.x.x),出网关时统一换成公网地址。这就是 NAT 的由来。

NAT 有三种常见类型:

类型 说明 典型场景
SNAT 源地址转换,把内网 IP 换成公网 IP 内网上网
DNAT 目的地址转换,把公网 IP 映射到内网服务器 外网访问内网服务
PAT 端口地址转换,多个内网 IP 共享一个公网 IP 家庭宽带、企业出口

我在项目中遇到过一个问题:客户的外网访问内网 Web 服务总是超时。检查后发现,DNAT 配置没错,但网关的防火墙把回程流量拦截了。NAT 是双向的,光配入站不配出站,等于白配。

避坑指南:我曾经因为 NAT 配置顺序搞反,导致整个部门无法访问外部 API。网关处理 NAT 时,先匹配 DNAT,再匹配 SNAT。如果你把 SNAT 规则放在 DNAT 前面,某些场景下流量会被错误转换。记住这个顺序,能省很多排查时间。

1.3.3 ACL(访问控制列表)

ACL 是网关的安全策略。它决定「谁可以访问谁」。

ACL 本质上是一组规则,每条规则包含:

  • 源地址:谁发起的请求
  • 目的地址:要访问谁
  • 端口/协议:用什么方式访问
  • 动作:允许还是拒绝

ACL 的匹配顺序很重要。网关从上到下逐条匹配,匹配到第一条就执行,后面的规则不再检查。

举个例子:

# 标准 ACL 配置示例(类 Cisco 语法)
access-list 100 permit tcp 192.168.1.0 0.0.0.255 any eq 80
access-list 100 deny   tcp any any eq 22
access-list 100 permit ip any any

这条 ACL 的意思是:

  1. 允许 192.168.1.0/24 网段访问任何目标的 80 端口(HTTP)
  2. 拒绝所有 SSH 访问(22 端口)
  3. 允许其他所有流量

注意顺序。如果把第 3 条放在第 1 条前面,那所有流量都会被放行,ACL 就形同虚设了。

核心原则:ACL 的规则顺序 = 优先级。最严格的规则放前面,最宽松的放最后。我曾经见过有人把「deny any any」放在第一条,结果全网断联——所有流量都被拒绝了。

1.4 三个功能的协同关系

路由、NAT、ACL 不是各自为政的。它们协同工作,流程大致如下:

  1. 数据包到达网关
  2. ACL 检查:是否符合安全策略?不符合则丢弃
  3. NAT 处理:如果需要转换地址,进行 SNAT 或 DNAT
  4. 路由查询:查路由表,决定下一跳
  5. 转发出去

这个顺序,不同厂商的设备可能略有差异,但大体如此。我个人习惯在排查问题时,按这个顺序一步步检查,很少漏掉问题。

好了,网关的基础概念就讲到这里。记住三个关键词:路由(往哪走)、NAT(地址转换)、ACL(谁允许谁)。后面的章节,我们会深入每个功能的细节和实战配置。