请教 ocserv 的分组隧道配置问题.

47 天前
 kyonn

使用 MorganOnBass/docker-openconnect-ldap: Docker OpenConnect VPN Server 这个 docker 部署了 ocserv 镜像, 测试功能是正常的, 但是一旦开启分组隧道就会有问题. 个人需求是只有 vpn 服务器所在的局域网网段才走 vpn 代理流量, 其余全部走客户端本地的网咯. 其中 vpn 服务器所在的局域网网段不仅指 vpn 创建的虚拟网段, 更重要的是 ocserv 部署前就存在的私网网段.

  1. vpn 服务器所在的局域网网段是 192.168.30.x, 所以配置了 ocserv 的 route=192.168.30.0/24, 内网 dns 为 192.168.30.1. 但是一旦开启这个参数, 就无法通过内网域名访问内网服务了, 只有 192.168.30.x 的内网 ip 访问可行.

  2. 测试过连上 vpn 前后的客户端在百度显示的公网 ip 变化, 增加 route 字段配置前后, 公网 ip 确实从 vpn 服务器所在公网 ip 变成了 客户端自己所在网络的公网 ip, 证明分组确实生效了.

  3. 尝试过将内网域名写入 split-dns 字段, 并指定 dns 字段配置为 192.168.30.1(内网域名在这里可以解析), 但还是不行. 个人对 split-dns 功能的理解: split-dns 指定的域名会走 ocserv 配置的 dns 的地址(dns=xxxx)去解析域名? 不知道这么理解是否正确?

  4. 看到过不用 docker 的 ocserv 教程, 似乎还要增加一些 iptables 规则, 不知道跟这个是否有关系?

894 次点击
所在节点    宽带症候群
10 条回复
cndns
47 天前
分流吗
kyonn
47 天前
@cndns 是的, 只想让访问 vpn 服务器所在局域网网段和内网域名的流量走 vpn, 其他都走客户端的本地网络.
ranaanna
47 天前
1. 123 特别是 3 ,理解全部正确。
2. 4 ,既然 2 和 1 (远端内网能访问),说明 iptables 规则已经正确添加。

所以剩下的问题似乎只有:本地端的 dns 。它不会随着远端服务器配置的“指定的域名走指定的 dns”发生变化,需要自行设置。
kyonn
47 天前
@ranaanna 已经解决, 用的 docker 镜像有问题, 没有正确计算 route 配置项的掩码, 变成了 32 位掩码了, 类似于于

route=192.168.30.0 255.255.255.255

修改后内网域名也能访问了, 不过奇怪的是不设置 split-dns 似乎也能正常工作? 请教下 ocserv 的 dns 解析逻辑是怎么样的? 什么情况下走客户端本地的 dns? 什么情况下走 vpn 流量去解析 dns.
1. 我看配置项中有 tunnel-all-dns , 那应该意味着也有 dns 分流的方案: 比如是 split-dns 指定的域名走 vpn 服务器, 其他走客户端本地网络?
ranaanna
47 天前
@kyonn tunnel-all-dns, split-dns 都是允许全部(或特定)的 dns 请求通过隧道。如果希望 dns 分流,那么就不应该用 tunnel-all-dns 。另外,客户端的 dns 行为,到底是走隧道还是本地网络接口,还是要看操作系统和应用程序,并不是 tunnel-all-dns 就一定屏蔽本地 dns
ranaanna
47 天前
@kyonn @ranaanna 抱歉前面第一句话可能没有说清楚,本来应该是“tunnel-all-dns, split-dns 分别是允许全部的和特定的 dns 请求通过隧道”。
kyonn
47 天前
@ranaanna 服务端的 tunnel-all-dns, split-dns 只是 vpn 服务端允许全部或特定 dns 请求走隧道, 具体客户端要不要把这部分 dns 解析发到 隧道上来是由客户端(比如 andriod anyconnect app) 决定, 是这个意思吗?

我原本以为这部分算是中心配置, 服务端配置后, 客户端一连接上来, 这部分配置就会自动下发到 客户端.
ranaanna
47 天前
@kyonn 理论上当然是 OP 以为的这样,实际上基本上也是这样。但是 split-dns 不是强制 dns 请求不到达其他接口(只是允许或拒绝其到达 vpn 接口),所以像 nslookup, dig 之类的,还是能够返回本地 dns 的结果的
ranaanna
47 天前
@kyonn 或者说 anyconnect 客户端会帮助我们设置系统的 dns ,但是系统不一定接受客户端的设置,应用程序也不一定用系统的 dns 设置
kyonn
47 天前
@ranaanna 了解,thanks

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1029800

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX