Shadowsocks代理未将全部流量导向VPS,部分请求绕过代理问题求助
兄弟,我之前也碰到过几乎一模一样的情况!先帮你梳理几个大概率的问题点和排查方向,你可以一步步试:
终端工具没继承系统代理:Ubuntu图形界面的代理设置通常只对GUI应用生效,像
wget这种终端命令行工具默认不会自动走系统代理。你可以先在终端里手动设置代理环境变量试试:export http_proxy=socks5://127.0.0.1:1090 export https_proxy=socks5://127.0.0.1:1090再跑
wget google.com,然后看Wireshark的目标IP是不是你的VPS。如果正常了,说明就是这个问题,把这两行加到~/.bashrc或者~/.zshrc里就能让终端永久继承代理了。代理类型不匹配:看你的Shadowsocks本地配置是SOCKS5代理,但Ubuntu系统代理设置里如果选错了类型(比如选了HTTP/HTTPS代理),就会导致部分流量绕开。一定要确认系统代理设置里选的是SOCKS5,地址填
127.0.0.1,端口填1090,和你Shadowsocks配置里的local_port对应上。DNS解析泄漏/直连:你用
wget google.com时,可能本地先直接解析出了google.com的IP,然后直接连了这个IP,根本没走代理。可以试试强制wget走SOCKS5:wget --socks5=127.0.0.1:1090 google.com如果这样就正常了,那你得把DNS也改成通过Shadowsocks代理解析,避免DNS泄漏导致直连。比如可以在Shadowsocks客户端里开启强制DNS代理的选项,或者配置本地DNS服务器通过SOCKS5转发请求。
服务器端Docker容器配置检查:你用的是shadowsocks-libev的Docker容器,要确认容器的403端口已经正确映射到VPS的403端口了,容器的网络模式如果是桥接的话,端口映射命令要写对(比如
-p 403:403)。如果端口没映射对,本地部分请求可能因为连不上SS服务而 fallback 到直连。
另外,你可以再检查下Shadowsocks本地客户端是不是正常运行,用netstat -tulpn | grep 1090看看1090端口有没有被监听,确保客户端没挂掉。
备注:内容来源于stack exchange,提问作者mazda3301

