Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Proxy 通过环回适配器和SSH代理应用程序_Proxy_Socks - Fatal编程技术网

Proxy 通过环回适配器和SSH代理应用程序

Proxy 通过环回适配器和SSH代理应用程序,proxy,socks,Proxy,Socks,这是部分编程,部分系统管理,所以请原谅,如果你觉得这应该在服务器故障结束 我有一个应用程序是不知道袜子,我们需要通过防火墙使用。我们也不能将应用程序修改为具有SOCKS支持 目前,我们通过将应用程序与主机上的环回适配器对话的IP别名,然后创建到另一台主机的SSH隧道来实现这一点。应用程序使用的IP是硬编码的。我们的SSH连接看起来像: ssh-L 1.2.3.4:9999:1.2.3.4:9999user@somehost 其中1.2.3.x是环回上的别名 因此,应用程序连接到环回上的开放端口,

这是部分编程,部分系统管理,所以请原谅,如果你觉得这应该在服务器故障结束

我有一个应用程序是不知道袜子,我们需要通过防火墙使用。我们也不能将应用程序修改为具有SOCKS支持

目前,我们通过将应用程序与主机上的环回适配器对话的IP别名,然后创建到另一台主机的SSH隧道来实现这一点。应用程序使用的IP是硬编码的。我们的SSH连接看起来像:

ssh-L 1.2.3.4:9999:1.2.3.4:9999user@somehost

其中1.2.3.x是环回上的别名

因此,应用程序连接到环回上的开放端口,该端口被发送到SSH主机和真正的1.2.3.4

它可以工作,但问题是这个应用程序连接到相当多的IP(50+),因此我们最终得到50个ssh连接

我们曾尝试使用几种“代理”应用程序,如TSock和其他应用程序,但都有很多问题(该应用程序在OS X上运行,tsocks即使有补丁也不能很好地工作)

我们的想法是编写一个守护进程,监听指定端口上的所有接口,然后从应用程序获取传入的数据包,刮取数据包信息(dst IP、端口、负载),重新创建数据包,并通过单个SSH SOCKS连接(SSH-D 1080)对其进行代理user@somehost ). 这样,我们只有1个SSH连接,所有端口都通过该连接进行代理

我的问题是——这可行吗?这里有我遗漏的东西吗?我一直在梳理pfctl、ipfw、iptables文档,但我看不到任何选项可以通过这些文档来完成,而且这似乎不是最难编写的代码。它将根据原始目的地IP和端口重新创建数据包,连接到本地SOCKs代理并重新发送数据包,就像它是原始应用程序一样,但现在支持SOCKs

如果我错过了一些别人已经知道的东西,请告诉我。我对socket编程或SOCKs不太了解,但这似乎不是一个太大的项目,需要解决,但如果我咬得太多,我希望得到一些意见


谢谢

如果您的应用程序可以添加SOCKS客户端支持,您可以简单地
ssh-D lock\u SOCKS\u port remote\u machine
,这将打开本地*lock\u SOCKS\u port*作为本地主机上的SOCKS服务器,然后它可以连接到远程机器可以访问的任何主机

示例:假设您使用的是未加密的不受信任wifi网络。您只需启动
ssh-d1082home
,然后将web浏览器配置为使用localhost:1080作为SOCKS服务器。当然,您需要一个支持SOCKS的客户端。所有流量都将显示为来自您的网关,并且对窥探wifi的人来说,连接将是不透明的

您还可以打开单个
ssh
客户端,其中包含无限数量的
LocalForward
请求,这些请求将在单个ssh会话的顶部进行隧道传输


此外,您可以使用ssh的
ControlMaster
ControlPath
选项将ssh连接添加到已建立的ssh连接。

如果您的应用程序可以添加SOCKS客户端支持,您只需
ssh-D锁定SOCKS\u端口远程\u机器即可,这将打开本地*lock_socks_port*,作为本地主机上的socks服务器,然后可以连接到远程计算机可访问的任何主机

示例:假设您使用的是未加密的不受信任wifi网络。您只需启动
ssh-d1082home
,然后将web浏览器配置为使用localhost:1080作为SOCKS服务器。当然,您需要一个支持SOCKS的客户端。所有流量都将显示为来自您的网关,并且对窥探wifi的人来说,连接将是不透明的

您还可以打开单个
ssh
客户端,其中包含无限数量的
LocalForward
请求,这些请求将在单个ssh会话的顶部进行隧道传输


此外,您可以使用ssh的
ControlMaster
ControlPath
选项将ssh连接添加到已建立的ssh连接。

我将查看ControlMaster和ControlPath选项-我们无法修改应用程序,因此没有机会向其添加SOCKS支持。为了更好地代表我们的问题,我对原始问题做了一些修改。我将查看ControlMaster和ControlPath选项-我们无法修改应用程序,因此没有机会向其添加SOCKS支持。为了更好地代表我们的问题,我稍微修改了原始问题。