如何强制所有 Linux 应用程序使用 SOCKS 代理

yaz*_*yed 3 networking linux proxy

使用 Linux,我需要一种方法将接口 enp2s0 的所有网络流量路由到 SOCKS4 192.168.1.2:1080(或任何与此相关的 SOCKS 代理)——类似于 Windows 中的 Proxifier。在 Chrome 或 Firefox 中手动设置时,代理工作正常。

操作系统:Linux Mint 19.1

我尝试过的事情:

  • 我在网络设置中手动设置了代理,但就像我没有设置一样;Chrome 仍然直接连接。这是一个屏幕截图:

  • Proxychains 运行良好,但我必须从终端单独手动启动每个应用程序。

我不知道如何使用 redsocks 或 iptables(还)。

我希望有一个类似于 Linux 的 Proxifier 的 GUI,但是基于终端 (CLI) 的解决方案是可以的。

yaz*_*yed 5

对于不耐烦的人,请执行以下操作;假设代理是example.com:7777并且它是socks5(稍后用你自己的改变它)

  • 首先安装redsocks sudo apt-get install redsocks

, 在任何地方创建一个空文件并将其命名为 redsocks.conf (或其他),我会假设它在这里/etc/redsocks.conf(用你自己的更改)。

  • 编辑您创建的文件 (redsocks.conf) 如下
base {
 log_debug = on;
 log_info = on;
 log = "stderr";
 daemon = off;
 redirector = iptables;
}

redsocks {
    local_ip = 127.0.0.1;
    local_port = 12345;

    ip = example.com;
    port = 7777;
    type = socks5;
      // known types: socks4, socks5, http-connect, http-relay

    // login = username;
    // password = password;
        }
Run Code Online (Sandbox Code Playgroud)

example.com 7777使用您的代理进行更改,(请注意,您可以使用local_port除 之外的任何其他12345端口,这是我们将设置 iptable 规则以将流量重定向到的本地端口,因此,如果您使用另一个,请确保在下面的后续步骤中使用它)

-- 现在使用配置文件目标运行 redsocks,如下所示

sudo redsocks -c /etc/redsocks.conf
Run Code Online (Sandbox Code Playgroud)

更改您的 redsocks.conf 的目的地(如果您得到“绑定:地址已在使用中”尝试killall redsocks)您还可以检查 redsocks 是否绑定到本地端口 12345netstat -tulpn

-- 现在 redsocks 正在运行并准备就绪,让我们更改 iptables 规则以使用 redsocks。这应该根据您的需要进行定制,但如果您想通过代理重定向所有 HTTP 和 HTTPS 数据包。定义以下规则。

sudo iptables -t nat -N REDSOCKS

sudo iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
sudo iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN

sudo iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 12345

sudo iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS

sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDSOCKS
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDSOCKS
Run Code Online (Sandbox Code Playgroud)

现在您的 http 和 https 流量应该通过 example.com:7777

如果您希望您的 iptables 重置,请使用:

iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
Run Code Online (Sandbox Code Playgroud)

附加提示:如果您的 iphone 或 android 上有 vpn,则无论操作系统是什么,您都可以在您的 PC 上免费使用它。只需连接手机 vpn 应用程序,并建立一个袜子代理服务器(在 android 中,您可以使用“服务器终极”应用程序),然后在您的电脑中使用代理,如上所述,现在您的所有电脑流量都通过您的手机 vpn 路由。整洁的。