通过 ssh 隧道转发所有流量

通过 ssh 隧道转发所有流量

我希望有人能理解这一点,我会尽我所能解释。

我正在尝试通过 ssh 隧道将所有流量从 xxx224 上的端口 6999 转发到 xxx218 上的端口 7000。

以下是一些 ASCII 艺术:

|browser|-----|Squid on x.x.x.224|------|ssh tunnel|------<satellite link>-----|Squid on x.x.x.218|-----|www|
         3128                      6999                          7000                                80

当我删除 ssh 隧道时,一切都正常运行。

这个想法是关闭 ssh 隧道上的加密(以节省带宽)并打开最大压缩(以节省更多带宽)。这是因为它是卫星链路。

这是我一直在使用的 ssh 隧道:

ssh -C -f -C -o CompressionLevel=9 -o Cipher=none [email protected] -L 7000:172.16.1.224:6999 -N

问题是,我不知道如何将 xxx224 上的 Squid 数据传送到 ssh 隧道?我是不是做错了?我应该在 xxx218 上创建 ssh 隧道吗?我使用 iptables 阻止 xxx224 上的 squid 读取端口 80,而是从端口 6999 传送数据(即通过 ssh 隧道)。我需要另一条 iptables 规则吗?

非常感谢您的任何评论。

提前谢谢了,


关于 Eduardo Ivanec 的问题,以下是netstat -i any port 7000 -nn来自 xxx218 的一份转储:

14:42:15.386462 IP 172.16.1.224.40006 > 172.16.1.218.7000: Flags [S], seq 2804513708, win 14600, options [mss 1460,sackOK,TS val 86702647 ecr 0,nop,wscale 4], length 0
14:42:15.386690 IP 172.16.1.218.7000 > 172.16.1.224.40006: Flags [R.], seq 0, ack 2804513709, win 0, length 0

更新 2:

当我运行第二条命令时,浏览器中出现以下错误:

ERROR
The requested URL could not be retrieved

The following error was encountered while trying to retrieve the URL: http://109.123.109.205/index.php

Zero Sized Reply

Squid did not receive any data for this request.

Your cache administrator is webmaster.


Generated Fri, 01 Jul 2011 16:06:06 GMT by remote-site (squid/2.7.STABLE9)

远程站点是 172.16.1.224

当我做 tcpdump -i any port 7000 -nn

我得到以下信息:

root@remote-site:~# tcpdump -i any port 7000 -nn  
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes 
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused
channel 2: open failed: connect failed: Connection refused 
channel 2: open failed: connect failed: Connection refused

答案1

如果我理解正确的话,你的隧道定义有问题。你似乎正在使用当前命令行将流量从当前主机(我假设它是 .224)上的端口 7000 转发到 .224 本身上的端口 6999。

尝试一下这个:

ssh -N -g -f -C -o CompressionLevel=9 -o Cipher=none [email protected] -L 6999:172.16.1.218:7000

或者,如果 172.16.1.218:7000 不能直接访问(我猜是的,因为否则你可能会直接连接到它)你可能意味着连接到 172.16.1.218:

ssh -N -g -f -C -o CompressionLevel=9 -o Cipher=none [email protected] -L 6999:localhost:7000

的格式-L<localport>:<remotehost>:<remoteport><remotehost>相对于目标主机,因此在这种情况下localhost应该可以工作。

请注意,我添加了以下内容-g,以防您想从不同于 .224 的机器使用隧道(我假设您在 .224 上运行 ssh)。

相关内容