我有一个运行OpenVPN的服务器,一个OpenVPN客户端B(一个有根的Android手机)和第三方C(笔记本电脑,平板电脑等)连接到B.
B可以使用VPN通过A访问Internet; C可以使用没有VPN的有线连接通过B访问互联网。
但是,当B上的VPN处于活动状态时,我无法在C上从Internet加载信息。
A似乎logging类似的stream量入站和出站时,B或C尝试加载网页,但是,设备B上的VPN报告没有入站stream量当连接源于C.
我应该在哪里寻找被丢弃的数据包,以及我应该使用哪些ip规则来确保它们通过VPN传递回本地networkingB < – > C?
(我显然会张贴任何进一步的信息是需要的。)
更多信息
没有VPN:
root@android:/ # ip route default via [B's External Gateway] dev rmnet0 [B's External Subnet] dev rmnet0 proto kernel scope link src [B's External IP] [B's External Gateway] dev rmnet0 scope link 192.168.43.0/24 dev wlan0 proto kernel scope link src 192.168.43.1
使用VPN:
root@android:/ # ip route 0.0.0.0/1 dev tun0 scope link default via [B's External Gateway] dev rmnet0 [B's External Subnet] dev rmnet0 proto kernel scope link src [B's External IP] [B's External Gateway] dev rmnet0 scope link [External address of A] dev tun0 scope link 128.0.0.0/1 dev tun0 scope link 172.16.0.0/24 dev tun0 scope link 172.16.0.8/30 dev tun0 proto kernel scope link src 172.16.0.10 192.168.43.0/24 dev wlan0 proto kernel scope link src 192.168.43.1 192.168.168.0/24 dev tun0 scope link
嗯,通过在B(电话)上运行以下内容来修复它:
iptables -t nat -A POSTROUTING -s 192.168.43.0/255.255.255.0 -o tun0 -j MASQUERADE iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 192.168.43.0/255.255.255.0 -j ACCEPT iptables -A FORWARD -j REJECT --reject-with icmp-port-unreachable
这几乎对应于VPN服务器通常的基本设置; 我遇到了问题,因为我对哪个networking是哪个接口感到困惑,哪个接口是哪个,然后当我有这些时,我意识到我仍然在C上设置了错误的网关。