IPSec隧道下跨办公区员工子网与异地服务器子网的路由配置咨询
看起来你现在遇到的问题是IPSec隧道已经能打通两个办公区的服务器子网,但员工子网只能访问本地服务器,没法跨到异地的服务器子网对吧?我来给你梳理几个核心的排查和解决方向:
问题背景梳理
我们需要实现的路由路径:
- Office 1员工子网 → Office 1服务器子网 → IPSec隧道 → Office 2服务器子网
- Office 2员工子网 → Office 2服务器子网 → IPSec隧道 → Office 1服务器子网
当前状态:两个办公区的服务器子网已能通过IPSec隧道正常通信,但员工子网仅能访问本地服务器子网,无法访问异地服务器子网。
Office 1路由器路由表(
x.x.x.x为Office 1路由器公网IP/IPSec端点):1 0.0.0.0 0.0.0.0 x.x.x.x WAN 0 2 X.X.X.X 255.255.255.0 0.0.0.0 WAN 0 3 10.10.1.0 255.255.255.0 0.0.0.0 office_srv2 0 4 192.168.1.0 255.255.255.0 0.0.0.0 office_wrk2 0
排查与解决步骤
1. 更新IPSec隧道的流量选择器/加密域
目前你的IPSec隧道应该只配置了服务器子网之间的流量配对,员工子网的流量根本没被纳入隧道加密范围。你需要在两端的IPSec网关(路由器)上做修改:
- 在Office 1路由器上,修改IPSec策略的流量选择器,添加
192.168.1.0/24(Office1员工子网) ↔ 10.10.1.0/24(Office2服务器子网)的配对规则 - 在Office 2路由器上,同理添加
[Office2员工子网网段] ↔ [Office1服务器子网网段]的配对规则
划重点:IPSec策略必须是双向对称的,两端的规则要完全匹配,否则流量不会被隧道承载。
2. 配置正确的静态路由
从你给出的Office1路由表来看,10.10.1.0/24 的路由指向了 office_srv2 接口,但这可能只是针对本地服务器子网的路由。你需要确保员工子网到异地服务器子网的流量能被引导到IPSec隧道:
- 如果是基于路由的IPSec(Route-Based):在Office1路由器上添加一条静态路由,将
10.10.1.0/24的下一跳指向IPSec隧道的虚拟接口(比如ipsec0这类),而不是物理服务器接口;同理在Office2路由器上添加对应路由 - 如果是基于策略的IPSec(Policy-Based):确保策略路由规则已经包含员工子网到异地服务器子网的流量,强制这些流量走WAN口的IPSec端点
另外,对于Office2员工子网到Office1服务器子网的路径,要确认Office2路由器上存在指向Office1服务器子网的路由,且该路由的下一跳是IPSec隧道方向(毕竟你已经确认员工能通本地服务器子网,所以本地转发没问题)。
3. 检查NAT排除规则
很多时候这类问题是因为路由器对员工子网的流量做了SNAT转换,导致异地服务器无法识别私网IP。你需要在两端路由器的NAT配置中,排除员工子网与异地服务器子网之间的流量,不让它们被转换成公网IP。比如在Office1路由器上,添加NAT豁免规则:192.168.1.0/24 → 10.10.1.0/24 不做NAT。
4. 验证防火墙规则
最后检查两端路由器的防火墙策略,确保允许员工子网和异地服务器子网之间的双向流量通过IPSec隧道。比如先允许ICMP(用于测试连通性),再根据业务需求开放TCP/UDP端口。
测试建议
完成上述配置后,你可以在Office1员工子网的设备上ping Office2服务器子网的IP,同时在Office1路由器上抓包,确认流量是否被送入IPSec隧道;如果ping不通,再检查异地路由器的日志,看是否有IPSec协商失败或者流量被丢弃的记录。
备注:内容来源于stack exchange,提问作者Drew

