使用 android VPN 作为 VPN 服务器
Use android VPN as VPN server
Android VPNService 允许您创建 tun 设备,我们可以访问路由到 tun 的数据包到我们的程序。
我正在使用 C/NDK 访问这些数据包。
假设我编写专有协议从远程 vpn 客户端获取数据包并发布到 tun,我是否可以期望这些数据包在 Android 中路由并可能在接口上 natted 并访问 Internet?
例如,我在Android(通过vpn 服务)中创建一条路由,用于10.0.0.0/24 到tun。
我发布源 IP 为 10.0.0.5 的数据包以调整它们是否会遍历内核并通过 Internet 到达目的地。
(或者这些数据包只是简单地返回接口,因为 tun 是默认网关!)
如果他们在正确 natted 后连接到互联网,我可以期待回复 (dst ip 10.0.0.5) 到 tun 界面吗?
还是我应该检查一下?
欢迎提出任何想法/建议。
提前致谢。
好像是NO
这是我所做的。
使用 NDK 在 android 上构建了一个 VPN,使用 VPNService 在 java 上构建了一点点 VPN。
VPN 客户端工作正常。
当我从远程客户端接收数据包并将这些数据包注入隧道(使用正确的路由)时,这些数据包没有到达目标。
目标是我的 linux 盒子,并使用 tcpdump 等待这些数据包到达。
所以将其他地方捕获的数据包注入android 隧道是行不通的。 (当然,在具有 root 访问权限的 Linux 上是微不足道的)
以下是我在将这些数据包注入隧道之前采取的预防措施。
- 确保返回接口的正确路由存在(对于数据包的源 IP)
- 所有数据包的格式都正确(相同的代码适用于 Linux)
- 确保我的应用程序被排除在 VPN 策略之外。
最后,数据包也没有返回隧道。
我可以确认它们被内核删除了。
Android VPNService 允许您创建 tun 设备,我们可以访问路由到 tun 的数据包到我们的程序。
我正在使用 C/NDK 访问这些数据包。
假设我编写专有协议从远程 vpn 客户端获取数据包并发布到 tun,我是否可以期望这些数据包在 Android 中路由并可能在接口上 natted 并访问 Internet?
例如,我在Android(通过vpn 服务)中创建一条路由,用于10.0.0.0/24 到tun。 我发布源 IP 为 10.0.0.5 的数据包以调整它们是否会遍历内核并通过 Internet 到达目的地。 (或者这些数据包只是简单地返回接口,因为 tun 是默认网关!) 如果他们在正确 natted 后连接到互联网,我可以期待回复 (dst ip 10.0.0.5) 到 tun 界面吗?
还是我应该检查一下?
欢迎提出任何想法/建议。
提前致谢。
好像是NO
这是我所做的。
使用 NDK 在 android 上构建了一个 VPN,使用 VPNService 在 java 上构建了一点点 VPN。
VPN 客户端工作正常。
当我从远程客户端接收数据包并将这些数据包注入隧道(使用正确的路由)时,这些数据包没有到达目标。
目标是我的 linux 盒子,并使用 tcpdump 等待这些数据包到达。
所以将其他地方捕获的数据包注入android 隧道是行不通的。 (当然,在具有 root 访问权限的 Linux 上是微不足道的)
以下是我在将这些数据包注入隧道之前采取的预防措施。
- 确保返回接口的正确路由存在(对于数据包的源 IP)
- 所有数据包的格式都正确(相同的代码适用于 Linux)
- 确保我的应用程序被排除在 VPN 策略之外。
最后,数据包也没有返回隧道。
我可以确认它们被内核删除了。