浏览器可以,但无法通过 Shadowsocks 服务器直接访问互联网

浏览器可以,但无法通过 Shadowsocks 服务器直接访问互联网

好吧,这看起来很简单,但经过大量的搜索后我无法让它发挥作用。我有 Ubuntu 14.04。

config.json文件包含我朋友运行 Shadowsocks 的服务器的配置:

{
    "server":"ip address",
    "server_port":23,
    "local_port":1234,
    "password":"password",
    "timeout":600,
    "method":"aes-256-cfb"
}

我这样做sslocal -c config.json并成功连接到服务器。

例如,现在我可以google-chrome使用以下命令使其工作:google-chrome --proxy-server="socks5://127.0.0.1:1234" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE localhost"

问题是我怎样才能使整个互联网连接首先通过该服务器。这样每个应用程序都可以默认使用它。您可以简单地激活和停用某些东西。

我尝试过但失败的事情:

使用tsocks->https://askubuntu.com/questions/532375/launch-program-through-shadowsocks

使用iptablessudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:1234->http://adminsgoodies.com/configuring-ubuntu-for-global-socks5-proxy/

使用系统设置 -> 网络 -> 网络代理以及dconf-tools排除主机 ->https://askubuntu.com/questions/70245/how-do-i-make-the-system-wide-proxy-settings-bypass-the-proxy-for-local-addresse

答案1

没有通用的隧道方法每一个通过 SOCKS 代理的 Internet 流量。然而,有相当多的协议有特定的方法——但不是全部。据我所知,SOCKS5 支持 TCP 和 UDP 流量,但不支持 ICMP。因此,例如,您不能通过ping此类代理使用传统服务。

以下是代理客户端列表(其中大多数支持 SOCKS5):关联

我亲自在 Linux 上尝试过 Dante 和 proxychains(原始版本,而不是 -ng 后继版本)的客户端部分,并且两者都对我有用(proxychains 被证明更稳定一些)。两者都通过将来自应用程序的套接字 API 请求重定向到自己的库来工作(因此它们必须为应用程序设置 LD_PRELOAD 环境变量)。当应用程序使用 setuid 二进制文件作为 LD_PRELOAD 并且 setuid 功能在安全方面不兼容时,这可能会造成问题。此外,并非每个与网络相关的 API 函数都会重定向,因此一些奇怪的应用程序可能会遇到问题(例如:当应用程序想要获取网络接口和 IP 地址的列表时)。

这些 LD_PRELOAD 类型的代理客户端通常不设计为在系统级别工作,您应该更改启动应用程序的方式(通过在应用程序前面加上代理客户端前缀)。理论上,您可以为整个系统或登录会话设置 LD_PRELOAD 环境变量,它甚至可能适用于某些情况,但是,您可能会遇到微妙的问题。此外,您无法在不重新启动应用程序的情况下轻松打开或关闭重定向。

答案2

openvpn 是最容易路由所有内容的,您可以通过袜子代理连接到 openvpn 服务器

修改 openvpn 脚本,通过添加以下两行通过ocks端口1234进行连接:

 socks-proxy localhost 1234
 socks-proxy-retry

如果 openvpn 协议像在一些更具压迫性的国家那样被阻止,这可能会很有用。一般来说,socks 代理是按应用程序设置的。上述解决方案需要一个openvpn服务器和一个shadowsocks服务器。

相关内容