zfl9 / ss-tproxy

ss/v2ray/xray/trojan/hysteria/naive/socks5 透明代理
GNU Affero General Public License v3.0
2.23k stars 433 forks source link

Will this tool support trans-proxy a network behind a openvpn? #269

Closed wnpllrzodiac closed 4 months ago

wnpllrzodiac commented 4 months ago

for example: I use OpenVPN app to connect my android device with a linux server at home.

android -> 4g/5g network ->(openvpn protocol) -> linux server(installed ss-tproxy) -> internet

run command curl some.blocked.com on linux server will be good.

My question is: Can android device access google.com via openvpn(I meant I want to use ss-tproxy as a proxy to access some network resources)

linux server ip addr is 192.168.1.5 (router is 192.168.1.1) and VPN gateway is 192.168.8.1 so my android device VPN ip addr is 192.168.8.5 (for example)

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether ff:7f:ff:69:ff:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.5/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0

6: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 100
    link/none
    inet 192.168.8.1 peer 192.168.8.2/32 scope global tun0
zfl9 commented 4 months ago

你需要在android这边添加路由规则,将目标流量导向openvpn的虚拟网络接口(最终流量将前往openvpn服务器,即ss-tproxy所在主机)

你可能还需要设置android上的dns,将dns指向openvpn服务端的ip(192.168.8.1),避免dns污染等问题。

完成该步骤后,应该不需要做其他额外工作/配置,因为其原理与 常规局域网内使用ss-tproxy作为代理网关(局域网主机将网关和dns指向ss-tproxy主机) 是一样的。

wnpllrzodiac commented 4 months ago

我现在连接上 vpn server以后,可以访问192.168.1.x 网段的机器,以及百度。只是访问某些网站有问题,不能做到像 linux机器上访问自由 你的意思,在 android设备上访问网页的流量并没有进过 openvpn从serve访问,而是从手机端直接出外网?感觉和 vpn 设计思路不符合啊

zfl9 commented 4 months ago

你这个现象应该是dns没设置好,被污染了,把dns指向ss-tproxy主机(vpn网卡的的那个ip,192.168.8.1)应该就OK了

zfl9 commented 4 months ago

vpn就是将多个位于不同网络的主机连起来,就像是真实的局域网那样连接起来,没什么特别之处。

说白了,一个主机连上vpn后,不过就是在这台主机上多了一个 网络接口(网卡)。该主机传出的流量要发往谁(哪个网络接口),都是通过路由规则决定的。

dns也是一样的,主机配置的dns是什么ip,就会根据路由规则,将其发往正确的目的地。在我们这里,ss-tproxy主机就是正确的目的地,因为它有防污染的dns服务(chinadns-ng)。


你要理解一个正常的网络访问是什么流程,才知道如何实现你的目的:

wnpllrzodiac commented 4 months ago

你这个现象应该是dns没设置好,被污染了,把dns指向ss-tproxy主机(vpn网卡的的那个ip,192.168.8.1)应该就OK了

你的意思手机连上VPN以后, 用dig google.com 返回的是错误的ip,所以即使通过192.16.8.x 的网段出口访问网络也不行了? 4g 下,未连 vpn: ping google.com 46.82.174.69 4g+vpn: ping google.com 46.82.174.69
这个IP看起来是不对的,是个德国ip

zfl9 commented 4 months ago

是的,你这个dns没有走ss-tproxy的chinadns-ng,所以解析拿到的ip不对

wnpllrzodiac commented 4 months ago

设置了下参数,dns似乎对了。手机上不好调试。感觉我要用台linux当客户端测试。 不知道别人有没有这样用的。

zfl9 commented 4 months ago

有类似用法的,手机上确实不好调试,如果能运行 Termux 的话,可能调试起来好一些。

wnpllrzodiac commented 4 months ago

可以了。iptables 需要配置下