正如我的标题所示,我想在 Linux 中设置代理。我使用的客户端是 Mac OS X Lion。我想我理解了理论,但我一直遇到障碍。
我开始使用设置代理服务器 ubuntu linux教程在这里。我已经找到了一台备用电脑,并在其上安装了 ubuntu 12。根据文章,我必须从如何使用 ssh 进行隧道通信文章。
在 ubuntu 中,我确保我有 ssh 服务器,所以我执行了 apt-get install ssh。
然后,是时候将路由器上的端口转发到单个机器了。我假设单个机器是我的 ubuntu 机器,它将充当 ssh 服务器。我的路由器是 Cisco Linksys E3000。
当我尝试设置端口转发时,我遇到了这文章。下面这个让我很困惑:
输入您的应用程序名称。有关应用程序可能使用的端口列表,请参阅下面的来源和引文部分。
看来我必须知道他们使用哪个应用程序和哪个端口来访问互联网?例如,如果我在 OSX 中使用终端,我需要指定“终端”作为应用程序并知道它使用哪个端口?我需要对 Chrome、Firefox、App Store、暗黑破坏神 3 等重复这一操作吗?
这是通过代理传输互联网流量以便绕过防火墙的标准方式吗?
我如何设置我的代理,以便所有互联网连接都通过我的 ubuntu 服务器并将其传送回我的客户端(Mac OSX)。
如果有人感兴趣的话,我想这样做是因为当我使用 heroku 进行 Web 应用程序部署时,我在工作场所、旅行时等不断遇到防火墙...
谢谢!!!
答案1
使用 SSH 隧道:路由器上的端口和端口转发:
使用 ssh 隧道作为代理需要在默认 socks5 端口 ( ) 上设置本地代理1080
。然后,所有应用程序都会将其 Web 流量发送到该端口,然后通过加密的 ssh 隧道发送到您的服务器,再发送到互联网。
您的路由器需要转发端口的唯一应用程序是 ssh 客户端/服务器 - 将端口上的所有传入 TCP 请求路由22
到本地网络上服务器的 IP 地址。
下面的图片说明了这一点:
让我们看一下用于创建 SSH 隧道的命令,以了解它是如何工作的。
ssh -ND 1080 [email protected] -p 22
上述命令用于创建从客户端到服务器的隧道。set -D 1080
将在本地端口设置 socks5 代理1080
以供应用程序使用。这一切都在您的本地计算机上进行。1080
无需使用路由器将端口路由到任何地方。
user
是您在服务器上的用户名。 11.11.11.111
是您的服务器的 IP 地址。 -p 22
是 ssh 客户端尝试连接到您的 ssh 服务器时使用的端口(端口22
是默认的,因此如果您没有更改默认设置,则实际上不需要将其包含-p 22
在命令中,我只是为了解释目的而添加它)。 这是您需要确保路由器转发到服务器的端口。 如果您选择不使用默认 ssh 端口(22
),您还需要配置您的 ssh 服务器来监听不同的端口。
要使应用程序使用此隧道...
您只需修改其代理设置(或使用全局代理——我不熟悉 OS X 如何做到这一点)即可在localhost:1080
或 处使用 socks5 代理127.0.0.1:1080
。例如,这是使用 Firefox 执行此操作的方法:
使用菜单前往Edit:Preferences:Advanced:Network:(connection)Settings
在 OS X 上设置全局代理
我没有使用 OS X,但 OP 确认这有效(见评论)。您可以尝试安装这OS X 的 GUI 工具,导航到服务器System Preferences -> Network -> Advanced... -> Proxies
并输入服务器和端口。127.0.0.1
1080
希望这可以帮助。
答案2
如果您想要传输所有流量,则需要使用 VPN。我推荐使用 OpenVPN,它非常容易安装,并且可以在 OS X 和 Linux 上运行。
已经有很好的文档https://help.ubuntu.com/community/OpenVPN。
另一个解决方案是查看 tor,或使用 ssh -w,但这要求您更改每个应用程序的设置以使用代理。
如果您在工作中遇到麻烦,我认为您应该联系您的系统管理员,如果出于业务原因,他肯定可以打开防火墙。