如何链接SOCKS代理?


10

前言:我要寻找的是显式指令,格式与上述相同。也就是说,类似于运行:“…在计算机A上运行命令X,然后在计算机B上运行命令Y…”

我的笔记本电脑(计算机A)到计算机B有一个正常工作的袜子代理:

[A]$ ssh -ND 8888 B

我可以将Firefox设置为在A的本地端口上使用SOCKS代理8888,然后在A上浏览。到目前为止,一切都很好。

但是我在机器B和C之间也有一个袜子代理:

[B]$ ssh -ND 8157 C

因此,我可以像在C上一样在B上浏览,将B的Firefox袜子代理设置为8157

有没有办法链接两个代理,以便我能够在使用与C的连接时在本地(在A上)使用Firefox?

也就是说,以某种方式将所有Firefox的请求从A一直转发到C。A和C无法直接看到对方,但是我到处都有完整的root SSH访问权限。所有机器都是Debian。

请注意,我希望转发一个端口类似的端口80,但我希望有一个完全链SOCK代理


您不应该只-L 8888:B:8157对[A] 做吗?
bdecaf 2014年

@bdecaf除了给定的命令?代替?FireFox设置没有更改吗?
user124114 2014年

仅用于[A]。正如您所描述的。
bdecaf 2014年

ssh -L 8888:B:8157失败,需要一个主机名参数。您能否给出更完整的端到端答案?如果有效,我会接受。
user124114 2014年

B真的是您的机器名称吗?
bdecaf 2014年

Answers:


12

刚刚确认这适用于某些VM:

[A]$ ssh -tt -v -L8888:localhost:8157 user@B ssh -t -D 8157 user@C

A中,您将打开从本地8888到B 上8157的端口转发隧道-L8888:localhost:8157。与B建立连接后,将ssh -t -D 8157 user@C运行remote命令,该命令通过C提供您的SOCKS代理。从我阅读的内容来看,尽管我仍然必须弄清楚为什么,但似乎需要'-t'。

注意,这是第一台主机上的一个命令,它从A-> BB-> C两次调用ssh 。您还可以将其分解为单独的命令,如下所述。

奖励:用于链接三个代理...

A->B->C->D->Internet

[hostA]$ ssh -2 -C -D 55557 -L 55556:127.0.0.1:55556 -L 55555:127.0.0.1:55555 user@B
[hostB]$ ssh -2 -C -D 55556 -L 55555:127.0.0.1:55555 user@C
[hostC]$ ssh -2 -C -D 55555 user@D

请注意,对于每个跃点,-L在链中的先前主机上需要一个附加的匹配转发器。

参考文献:


逐行转换:-1.从主机B在57上向动态端口转发,从B暴露端口56,从B暴露端口55。-2.从主机C,暴露,在主机56端口转发动态端口。来自C的端口55-3.从主机D在端口55上转发动态端口-最终结果是每个主机通过SSH在每个步骤中提供了一个Socks代理。口57至55将在B,C和D包含具有端点代理
雷福斯

您有免费的ssh代理吗?我还没找到
庆典

4

glallen利用SSH的出色答案将完成这项工作。但是,完成此操作的正确方法是使用该proxychains程序。ProxyChains是一个功能强大的工具,可让您轻松地同时利用多个代理服务器。例如,黑客用于在进行互联网攻击时隐藏其身份-通过将世界各地的一堆代理链接在一起,几乎没有任何法医调查人员能够一直追踪到他们的流量。并不是说您是一个恶意黑客-它可以在许多不同的用例中使用。;)

默认情况下,ProxyChains已安装在某些Linux发行版(例如Kali Linux)上。例如,在Ubuntu / Debian上,您可以通过执行以下操作轻松安装它:

  • sudo apt-get install proxychains

Proxychains在处寻找配置文件/etc/proxychains.conf。安装完成后,备份现有的Proxychains配置文件(如果存在)并创建一个新的:

  • mv /etc/proxychains.conf /etc/proxychains-backup.conf
  • nano /etc/proxychains.conf

现在,粘贴我为您编写的此示例配置:

strict_chain

proxy_dns

tcp_read_time_out 15000
tcp_connect_time_out 8000

[ProxyList]
socks4          192.168.1.1     8888
socks4          192.168.1.2     8157
socks4          192.168.1.3     6969

在此示例中,192.168.1.1是第一SOCKS代理服务器的IP地址,8888是第一SOCKS代理正在侦听的端口,192.168.1.2是第二SOCKS代理服务器的IP地址,8157是第二SOCKS代理侦听的端口,等等。

现在,通过proxychains firefox从命令行启动Firefox来利用代理链。(确保先关闭Firefox。)现在,每当Firefox建立传出连接时,代理链程序都会封装流量,以便通过该配置文件中指定的所有服务器代理流量。需要明确的是,在Firefox偏好设置中,您不应指定任何代理服务器-代理链将处理所有幕后工作。

请注意,出于故障排除的目的,您可能应该先尝试一次使用1个代理使其工作,然后再尝试全部3个;;)

参考文献:

  • 官方proxychains网站(最新版本为3.1,于2006年发布):http ://proxychains.sourceforge.net
  • 的网站proxychains-ng(原始代理链的一个分支,实际上到2015年仍在维护):https : //github.com/rofl0r/proxychains-ng

代理链也可以为您设置代理吗?或只是帮助您连接到现有代理?
glallen 2015年

代理链将仅连接到现有的代理服务器。
詹姆斯

如果是这种情况,那么我不同意“正确的方法...”一词,因为问题是专门讨论设置代理以在多台计算机上链接,而不仅仅是将firefox定向到现有代理。也许-“一旦代理就位,一种替代方法”将很有用,而并不意味着使用纯ssh是不适当的。好的其他背景信息。谢谢。编辑,您将获得我的支持。
glallen 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.