zfl9 / ss-tproxy

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

在tun2socks模式下 Push 节点信息会报错 #19

Closed cuteSakuraHime closed 6 years ago

cuteSakuraHime commented 6 years ago

在使用 tun2socks 模式下,Shadowsocks-mu-py拉取json报错 JSON ValueError: Expecting property name: line 1 column 2 (char 1)

而访问其他被墙网站都是正常的,请问这个是什么原因?

zfl9 commented 6 years ago

我感觉这和 tun2socks 模式没什么关系,你看看这个?https://stackoverflow.com/questions/25707558/json-valueerror-expecting-property-name-line-1-column-2-char-1

cuteSakuraHime commented 6 years ago

我把节点的IP加入到iptables规则里面就不报错了,但是目前发现tun2socks模式(非TCP Only)那个好像UDP还是过不去。 我用的是NetCat做的测试 HK(目标机器)

nc -ul 100

SZ(ss-tproxy)

nc -u x.x.x.x 100

输入内容对端获取不到并且Connection refused

zfl9 commented 6 years ago

开了 udp relay 没?ss/ssr ?

cuteSakuraHime commented 6 years ago

HK服务器上安装的是 shadowsocks-libev 模式是 "mode":"tcp_and_udp"

深圳服务器上使用ss-tproxy start启动没有报错,

ss-local Log file 部分如下

 2018-09-24 03:39:40 INFO: initializing ciphers... aes-256-cfb
 2018-09-24 03:39:40 INFO: listening at 127.0.0.1:1080
 2018-09-24 03:39:40 INFO: udprelay enabled
 2018-09-24 03:39:40 INFO: running from root user
zfl9 commented 6 years ago

你使用 tcp 模式会有问题吗?或者你有没检查 vps 上的 ss-libev 对应的 udp 端口是否已打开?

cuteSakuraHime commented 6 years ago
netstat -apnu | grep 8443
udp        0      0 0.0.0.0:8443            0.0.0.0:*                           20925/ss-server     

这是HK服务器上SS运行状态,我修改成tcp模式试试看

zfl9 commented 6 years ago

还有,不是很建议使用 tun2socks 模式(除非是 socks5 代理),如果是 v2ray、ss/ssr,还是建议使用对应的专属模式,速度快一些。

cuteSakuraHime commented 6 years ago

但是如果不使用Tun2socks的话不就没办法转发UDP了吗?目前我用的是基本都是tproxy_chnroute模式但是它不支持UDP的转发?

zfl9 commented 6 years ago

你是本机(ss-tproxy运行的主机)需要 UDP 转发?如果是,那就只能使用 tun2socks 了。如果只是内网主机需要 UDP 转发,那么也不是非 tun2socks 模式不可。

cuteSakuraHime commented 6 years ago

我的深圳服务器是对公网的,在开了ss-tproxy后还开了shadowsocks-mu-py来提供SS服务。

昨天使用的是tproxy_chnroute模式,但是用netcat测试去海外的UDP流量并不能通

cuteSakuraHime commented 6 years ago

我在电脑上使用的是SS-TAP来将SS转为全局VPN,想代理UDP流量打游戏。

zfl9 commented 6 years ago

你用 tproxy 也不能代理 UDP(内网)?不会吧,我自己试过的,完全可以代理啊。

zfl9 commented 6 years ago

你在本地使用 UDP 转发的时候,vps 上观察的到 ss-server 的对应 UDP relay log 吗?

cuteSakuraHime commented 6 years ago

image 这是直接尝试UDP发送到HK机器上,可以发现能够连通。

而通过SS-TAP连接深圳服务器,在做同样测试,则直接connection refused

cuteSakuraHime commented 6 years ago

ss-server的我没观察过,我现在去看下

zfl9 commented 6 years ago

或者更直接,你在 vps 上 tcpdump 抓一下对应 udp 端口是否收的到包。

cuteSakuraHime commented 6 years ago

我刚发现一个很有意思的事情

为了测试是不是我的深圳服务器到香港UDP连通有问题,我开了 wireguard 然后发现虽然ping (ICMP流量)没有丢包,但是进了wireguard隧道后的流量会直接丢弃90%。 tproxy_chnroute是直接把UDP流量塞到对端的SS端口吗?还是会把UDP流量塞在TCP里面出去? 如果是直接UDP出去的话,我大概知道问题了,是网络运营商那边针对UDP流量丢弃处理的策略导致的。

cuteSakuraHime commented 6 years ago

image 我发现是可以通的,但是有丢包,截图中有一个123就没有发送到香港服务器上,应该是我这边ISP的问题了。

zfl9 commented 6 years ago

当然是走 UDP 出去的了,如果 UDP 走 TCP 出去就是 UDP Over TCP 了。那估计就是 UDP 丢包问题了。

cuteSakuraHime commented 6 years ago

是的,那基本可以确定是香港ISP那边对UDP进行的恶意丢包。其实国内也有一些运营商对境外UDP恶意丢包的现象,如果我希望使用UDP Over TCP需要怎么操作,或者会带来什么弊端吗?

zfl9 commented 6 years ago

这个 UDP Over TCP 使用 ss-tproxy 实现不了,需要底层的代理软件支持才行(但我不知道如何配置,而且我只看到 C# 客户端有 UDP Over TCP 选项,其他客户端不知道如何实现)。实在想要使用 UDP Over TCP 可以使用 v2ray。因为它好像默认就是这个模式。

cuteSakuraHime commented 6 years ago

了解,我刚想到可能可以使用openvpn的 over socks5功能,我先试试看去。

zfl9 commented 6 years ago

ok。

cuteSakuraHime commented 6 years ago

感谢大佬耐心解答