目录

VPN接入状态下,应用访问内网资源的流量未路由至VPN链路

问题现象

应用请求为外网服务时,请求走VPN网络;应用请求为内网时,请求不走VPN网络。

背景知识

问题定位

1.网络的主要配置信息如下:

名称

IP地址

本地设备IP

192.xxx.x.9

默认网关

192.xxx.x.1

路由1

192.xxx.x.10

路由2

182.xx.xxx.108

虚拟网卡地址

10.x.x.5

2.WireShark条件搜索ip.src == 182.xx.xxx.108 && ip.dst == 10.x.x.5,表示搜索从182.xx.xxx.108路由到10.x.x.5网卡的流量,说明应用的外网请求通过VPN网络转发。

3.WireShark条件搜索ip.src == 192.xxx.x.10 && ip.dst == 10.x.x.5,表示搜索从192.xxx.x.10路由到10.x.x.5网卡的流量,说明应用的内网请求不通过VPN网络转发,直接走内网的路由规则。

分析结论

内网路由优先级默认高于VPN路由导致内网流量不走VPN网络。

修改建议

方案1:避免网段重叠,内网和VPN网段尽量不重叠,比如内网用192.xxx.x.0/24网段,VPN用10.x.x.0/24网段。

方案2:最长前缀匹配,通过设置某个网段的掩码越长路由优先级越高,比如VPN网段为192.xxx.x.10/32的掩码长度32比内网网段192.xxx.x.0/23的掩码长度23大,能够保证前者的路由优先级比后者大。

方案3:配置VpnConfig参数,确保流量路由至VPN链路:

  1. 将isInternal设置为true,启用内置VPN,使流量通过tun网卡转发。
  2. 将isBlocking设置为true,阻止未走VPN的连接。
  3. routes仅保留默认路由0.0.0.0/0,使所有流量均匹配VPN路由规则。

常见FAQ

Q:HarmonyOS系统如何查看设备路由规则?

A:连接设备后,执行hdc shell netstat -r;其中Destination表示下一跳路由。

总结

VPN网络访问问题通常需要使用网络包工具分析TcpDump包进行定位定界;根据数据包日志可以定位网络请求是否经过VPN网络,达到网络问题定位定界能力。