HarmonyOS鸿蒙Next中vpn设置了路由,没在路由的流量也被代理到vpn了。

HarmonyOS鸿蒙Next中vpn设置了路由,没在路由的流量也被代理到vpn了。

启动VPN设置了路由信息,并且手写代码读取fd(VPN启动后得到)进行NAT时,发现访问不在路由中的地址也可从fd中读取到,似乎路由没有生效。

路由配置信息:

[
  {
    "interface": "vpn-tun",
    "destination": {
      "address": {
        "address": "10.128.0.0",
        "family": 1
      },
      "prefixLength": 9
    },
    "gateway": {
      "address": ""
    },
    "hasGateway": false,
    "isDefaultRoute": false
  },
  {
    "interface": "vpn-tun",
    "destination": {
      "address": {
        "address": "100.10.10.1",
        "family": 1
      },
      "prefixLength": 32
    },
    "gateway": {
      "address": ""
    },
    "hasGateway": false,
    "isDefaultRoute": false
  }
]

读取fd

this.VpnConnection.create(this.config).then((data) => {
  this.g_tunFd = data;
});

// 循环读取g_tunFd
io.readSync(this.g_tunFd, buffer);
// 解析buffer,读取里面的ip地址和端口,做NAT转换...

访问互联网地址8.218.40.186,结果走了VPN。

  1. 是否支持不在路由中的地址时走正常流量访问?
  2. 如果支持,如何做到?

更多关于HarmonyOS鸿蒙Next中vpn设置了路由,没在路由的流量也被代理到vpn了。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS鸿蒙Next中,VPN设置了路由后,未在路由中的流量也被代理到VPN,可能是由于系统默认将所有流量通过VPN通道传输。检查VPN配置中的路由规则,确保仅指定了需要代理的IP范围或域名。若问题依旧,可能是系统或VPN应用的默认行为,需进一步排查或等待系统更新修复。

更多关于HarmonyOS鸿蒙Next中vpn设置了路由,没在路由的流量也被代理到vpn了。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


根据您描述的情况,在HarmonyOS Next中VPN路由配置可能存在以下问题:

  1. 路由配置中缺少默认路由排除设置。当前配置只指定了10.128.0.0/9和100.10.10.1/32两个目标网络,但没有明确排除其他流量。

  2. 要实现非路由地址走正常流量,建议:

    • 检查VPN配置中是否设置了"excludeRoutes"或"bypass"参数
    • 确认VPN服务是否默认捕获了所有流量(全隧道模式)
    • 尝试在路由配置中明确添加排除规则
  3. 解决方案:

    {
      "excludeRoutes": [
        {
          "address": "0.0.0.0",
          "prefixLength": 0
        }
      ]
    }
    
  4. 如果问题依旧,可能需要检查VPN服务的实现方式,确认是否在底层强制捕获了所有流量包。

回到顶部