1

我正在使用本机 (C/C++) 库编写应用程序,以创建隧道接口并在通过实际物理接口转发之前检查读/写 pkts。我通过 JNI 连接以创建和管理隧道,如以下文档中所述:https ://developer.android.com/reference/android/net/VpnService 。

当前情况: tun0 接口使用 IP 创建并设置了路由。本机库确实会在读取(tun_fd)时收到 pkt。问题是:write(tun_fd) 成功,但是最终应用程序(例如 ping)没有收到响应。隧道接口上的接口计数器确实显示“RX”递增并且没有下降!

我是否遇到任何基于策略的路由问题?感谢任何指针!如果这不是此问题的正确论坛,请重定向。谢谢!

-- 安卓版本:11

gta7litewifi:/ $ ifconfig tun0 Link encap:UNSPEC inet addr:10.10.20.3 PtP:10.10.20.3 Mask:255.255.255.255 inet6 addr: fe80::24cd:7b38:a0b1:90e7/64 Scope: Link UP POINTOPOINT RUNNING MTU:1500指标:1 RX 数据包:218 错误:0 丢弃:0 超限:0 帧:0 >>>> 无丢弃 将数据写入 tun_fd TX 数据包时 RX 增加:135 错误:0 丢弃:0 超限:0 载波:0 冲突:0 txqueuelen:500 RX 字节:29184 TX 字节:18936

gta7litewifi:/ $ ip route show table 1056 >>>> 1056 是为tun接口创建的表。默认 dev tun0 proto 静态范围链接 10.10.20.3 dev tun0 proto 静态范围链接

gta7litewifi:/ $ ip route get 8.8.8.8 >>> 确保路由指向 tun0 IF 用于传出流量 8.8.8.8 dev tun0 table 1056 src 10.10.20.3 uid 2000 缓存

gta7litewifi:/ $ ip route get 10.10.20.3 local 10.10.20.3 dev lo table local src 10.10.20.3 uid 2000 cache

4

0 回答 0