← 返回题目列表

VPN 路由和策略是怎么生效的?为什么连上 VPN 还是访问不了内网?

高频 中等 第 12 / 27 题 更新于 2026/08/01
VPN路由策略路由回程路由安全策略

简化版

连上 VPN 只代表隧道或控制面建立成功,不代表业务流量一定能通。真正访问内网还要满足:客户端路由把目标网段送进 VPN、VPN 网关有到目标的路由、防火墙策略放行、目标服务器有回程路由、NAT 和 ACL 不冲突、DNS 能解析到正确地址。排查要从客户端路由表、网关路由、抓包和双向回包逐层看。

详细版

VPN 访问失败常见链路:

Client -> VPN 虚拟网卡 -> VPN 网关 -> 内网路由/防火墙 -> 目标服务
   ^                                                        |
   |------------------------ 回程路由 -----------------------|

任意一段不通都会表现为“VPN 已连接但访问不了”。比如客户端没有 10.0.0.0/8 的 VPN 路由,请求根本没进隧道;网关能收到请求但防火墙没放行;目标服务器回包走了默认网关而不是 VPN 回程;或者内网网段和本地家庭网段冲突。

面试回答要把路由、策略、DNS、NAT、回程、MTU 分开。不要只说“检查防火墙”,因为 VPN 问题经常是多层配置共同造成的。

完整版教学

一、VPN 连接成功不等于数据面成功

VPN 通常有控制面和数据面。控制面负责认证、密钥协商、隧道建立;数据面负责真正转发业务包。客户端显示 connected,说明控制面大概率成功,但数据面还要看路由、策略和回包。

控制面: 登录、证书、密钥协商、隧道建立
数据面: IP 包进隧道、网关转发、目标响应、回包回来

很多排障误区是看到客户端连接成功就认为 VPN 没问题。实际可能只是隧道建立了,业务网段没有下发,或者网关没有允许该用户组访问目标资源。

VPN 排障先分控制面和数据面:能连上只是第一步,能双向转发才算业务可用。

二、客户端路由决定流量是否进隧道

客户端访问一个 IP 时,会查本机路由表。分流 VPN 通常只下发内网网段路由;全隧道会下发默认路由。如果目标网段没有匹配到 VPN 虚拟网卡,流量就会走本地网关,VPN 当然看不到。

目标 10.20.1.5
路由表:
10.20.0.0/16 -> VPN
0.0.0.0/0    -> 家庭路由器
结果: 进 VPN

如果公司只下发了 10.10.0.0/16,而你访问 10.20.1.5,请求不会进隧道。排查第一步就是看客户端路由表,而不是直接改服务端。

三、网关路由决定包能否到目标网段

VPN 网关收到客户端包后,还要知道如何到达目标内网。如果目标在另一个 VLAN、云 VPC 或分支网络,网关路由表必须有下一跳。否则包到网关就停住了,或者被发到错误出口。

VPN Client 10.250.0.10 -> 目标 10.30.1.20
VPN Gateway 路由:
10.30.0.0/16 -> Core Router

站点到站点 VPN 中,路由型 VPN 还可能通过 BGP 学习远端网段。BGP 没起来、路由被过滤、优先级不对,都会导致隧道在但流量不通。

四、防火墙策略和用户组授权也会拦截

现代 VPN 不一定是“连上就全网通”。网关可能按用户组、源地址池、目标网段、端口协议做访问控制。研发组可以访问 Git,财务组可以访问 ERP,外包组只能访问堡垒机。路由正确但策略拒绝,会表现为超时或连接被拒绝。

检查项示例
源地址池10.250.0.0/24
用户组dev, finance
目标网段10.30.0.0/16
端口协议TCP 443、22、3306

排查时要确认命中的安全策略是哪条。很多防火墙有策略命中日志,这是定位“路由通但被拦”的关键证据。

五、回程路由是最容易漏的一半

请求包能到目标服务器,不代表响应能回来。目标服务器或它的默认网关必须知道客户端 VPN 地址池如何返回。如果回包走了普通公网出口或其他内网路径,客户端就收不到。

请求: 10.250.0.10 -> 10.30.1.20 走 VPN 网关
响应: 10.30.1.20 -> 10.250.0.10 若不知道回 VPN,就丢失

解决方式有两类:给内网核心路由添加到 VPN 地址池的回程路由,或者在 VPN 网关做源 NAT,把客户端地址转换成内网已知地址。源 NAT 简单,但会丢失真实客户端 IP,审计和细粒度控制会受影响。

六、DNS 错误会让你访问错目标

很多人以为访问不了是路由问题,实际是域名解析到公网地址、旧地址或本地 DNS 解析失败。VPN 场景里要确认内网域名走企业 DNS,公网域名走本地或可信 DNS,避免 split DNS 配置错误。

git.company.local -> 应解析为 10.30.1.20
如果解析为公网旧 IP 或 NXDOMAIN,路由再正确也没用

排查方法是同时查域名和 IP。先直接访问目标 IP 判断网络路径,再用 nslookupdig 判断 DNS 是否正确。这样能把 DNS 和网络转发分开。

七、NAT 和网段冲突会制造隐蔽问题

如果用户本地网段和企业内网重叠,例如都是 192.168.1.0/24,客户端路由可能优先认为目标在本地局域网,根本不会送进 VPN。Site-to-Site 两端网段重叠时,路由也无法区分远端和本地。

常见解决方案:

问题方案
远程用户本地网段冲突企业使用不常见网段、下发更具体路由
两站点网段重叠双向 NAT、重新规划网段
需要隐藏真实网段VPN 网关做 NAT 映射

网段规划越早做好,VPN 后期问题越少。

八、常见误区与追问

  • 误区:VPN 显示 connected 就说明网络一定通。 connected 多数只代表控制面成功,数据面还要看路由和策略。
  • 误区:访问不了一定是防火墙。 也可能是客户端路由、网关路由、回程路由、DNS、NAT 或 MTU。
  • 误区:只抓客户端包就够了。 需要在客户端、VPN 网关、目标侧分别确认请求和响应是否经过。
  • 误区:源 NAT 总是最佳方案。 它能解决回程,但会隐藏真实客户端 IP,影响审计和权限控制。
  • 追问:如何快速判断是否是回程问题? 在目标侧抓包看是否收到请求并发出响应,再看响应是否回到 VPN 网关。
  • 追问:为什么 IP 能访问但域名不能? 多半是 DNS 或 split DNS 配置问题,域名未走内网 DNS 或解析结果错误。
  • 追问:策略路由在 VPN 中有什么用? 可以按源用户、目标网段、应用或出口选择不同路径,而不只依赖普通目的路由。

九、加强记忆

VPN 路由排障按“客户端路由进不进、网关路由到不到、策略放不放、目标回不回、DNS 对不对、NAT 冲不冲”来记。连接成功只是控制面,业务访问要看双向数据面。能把请求路径和回程路径都画出来,VPN 问题就不再玄学。