捕获并将传出流量从给定的ip:port重定向到目标ip:port

时间:2013-10-10 11:34:57

标签: windows-7 tcp ssh-tunnel

在Windows 7上,我在我需要访问的本地127.0.0.1:34567地址上运行了SSH隧道,因此我可以借助SSH代理访问12.34.56.78:8080,因为我无法直接访问该IP (由于不在白名单上)。

我的基本简单目标就是在Windows上,每当我从任何地方(例如我的浏览器)请求12.34.56.78:8080时,我希望请求转而透明地转移到127.0.0.1:34567,我希望一个软件解决方案,而不是硬件解决方案,如果可能的话。我认为这是Linux中通常用iptables实现的,但我正在寻找可以在windows上使用的东西。

有谁知道这是怎么回事?如果我需要使用任何外部Windows程序,那很好,但我更喜欢它是免费的。

编辑:请不要向我展示反向隧道解决方案。我的目标是请求我阻止的相同ip:端口,但是能够通过我现有的SSH隧道成功访问该ip:端口。反向隧道涉及请求不同的ip:端口,这不是我正在寻找的(如果我想向不同的ip:端口发出请求,我已经有了一个前向隧道)。

示例方案:假设您有一个C编译的.exe文件,其无法访问的源代码被硬编码为SOAP webservices请求12.34.56.78:8000 。问题是,您的IP被阻止来自该IP:端口,但是您可以访问未被210.212.239.117:8080阻止的SSH服务器,并且还为该SSH服务器设置了SSH隧道以访问该IP :port ...但你的.exe有原始的ip:端口硬编码,所以你不能告诉它请求SSH隧道ip:端口,因为它不可能改变要请求的ip:端口以任何方式由于它被硬编码!您必须将计算机上的210.212.239.117:8080请求以某种方式转移到操作系统级别的SSH隧道。那你怎么做到的呢?

编辑2:我也不是在寻找路由表(我认为)。我不想修改我的请求到达目标ip:port的路由;我实际上想让所请求的IP和端口自己默默地改变。我想要实现类似hosts文件的东西,除了不是将主机名解析为ips,我想要ip:ports重新解析到不同的ip:ports。

Bounty:很抱歉,我的这个stackoverflow问题看起来像Offtopic并且不能提供赏金,所以对于那些投入额外工作并且可能获得赏金的人来说很抱歉!

3 个答案:

答案 0 :(得分:1)

我还没有找到可用的可执行文件,但WFPSampler似乎很有希望。它使用新的Windows Filtering Platform API(自Windows Vista以来可用)来处理数据包。

要将其用于重定向传出数据包,请查看Q&A section,有很多示例。

答案 1 :(得分:0)

您可以使用反向shell。它可以镜像远程端口。使用ssh连接-R选项。例如ssh -R xxxx:localhost:xxxx user:pass@www.server.com。看看这个:http://www.debianadmin.com/howto-use-ssh-local-and-remote-port-forwarding.html

答案 2 :(得分:0)

查看BarbaTunnel:http://barbatunnel.codeplex.com/

TCP-Redirect模式可能正是您所需要的。