如何将所有互联网流量重定向到 SSH 隧道?

如何将所有互联网流量重定向到 SSH 隧道?

首先,我不是计算机专家,我对网络及其相关知识略知一二。我只是一名普通的计算机用户。所以问题是,我使用以下命令在我的 Linux 机器上设置了 ssh 隧道:

 ssh -o "ProxyCommand /usr/bin/corkscrew 127.0.0.1 3339 SERVERIP 443"
 MYUSERNAME@SEVERIP -vND 1080

我如何才能通过该 ssh 隧道重定向我的所有互联网流量?这样当我浏览谷歌/脸书或任何其他网站时,我的 IP 将被检测到,而SEVERIP不是我的真实 IP 地址?这与使用 openvpn 连接不同,在 openvpn 连接中,您只需连接到您的 openvpn 帐户就可以了,使用 ssh 隧道,我必须设置socks 127.0.0.1:1080我想要避免的所有应用程序。

答案1

一种方法是创建.desktop文件。您可以google-chrome-stable通过在终端窗口中输入以下内容将其复制到桌面:

cp /usr/share/applications/google-chrome.desktop /home/username/Desktop

使用您喜欢的编辑器打开该google-chrome.desktop文件,然后更改以下行:

Exec=/usr/bin/google-chrome-stable %U

到:

Exec=/usr/bin/google-chrome-stable --proxy-server="socks://127.0.0.1:1080"

您可能还想将文件开头附近的这一行.desktop从:

Name=Google Chrome

Name=Google Chrome (Tunnel)

保存文件并退出。然后使文件可执行,以便可以运行:

sudo chmod +x /home/username/Desktop/google-chrome.desktop

任何时候您想通过隧道连接,只需启动该隧道即可。

答案2

如果您想让所有应用程序的流量都通过 SOCKS 代理服务器tsocks就可以了。

tsocks 是一个允许透明 SOCKS 代理的库。它包装了正常的 connect() 函数。当尝试连接时,它会查阅配置文件(在配置时定义,但默认为 /etc/tsocks.conf)并确定指定的 IP 地址是否是本地的。如果不是,则库会将连接重定向到配置文件中指定的 SOCKS 服务器。然后,它与 SOCKS 服务器协商该连接并将连接传回调用程序。

DNS 问题

tsocks 通常无法通过 SOCKS 服务器发送 DNS 查询,因为 SOCKS V4 运行在 TCP 上,而 DNS 通常使用 UDP。但是,版本 1.5 及更高版本提供了一种强制 DNS 查找使用 TCP 的方法,从而使它们可代理。此选项只能在编译时启用,请查阅 INSTALL 文件以获取更多信息。

如果您只想隧道传输浏览器流量,您应该能够在浏览器设置中配置 SOCKS 代理。

相关内容