【发布时间】:2009-03-30 08:43:05
【问题描述】:
什么是隧道(ssh 隧道和 ppp 隧道)?我在 google 中搜索过,但令人困惑.. 谁能提供一些关于这个隧道主题的好材料?
【问题讨论】:
标签: networking
什么是隧道(ssh 隧道和 ppp 隧道)?我在 google 中搜索过,但令人困惑.. 谁能提供一些关于这个隧道主题的好材料?
【问题讨论】:
标签: networking
嗯,基本上你有 3 台机器:
基本隧道是 A 的端口 X 上的任何通信都被 B 转发到 C 的端口 Y。 IE。而不是 A → C 你有 A → B → C。所以对于机器 C 来说,通信似乎来自 B,而不是 A。如果 C 的防火墙不允许来自 A 的连接(例如区域受限),则很有用。例如:
ssh -L8080:www.example.com:80 your.server
从你的机器访问localhost:8080实际上是从your.server访问www.example.com:80。
其他类型的隧道是:
您在服务器 B 上打开端口 X,该端口上的任何通信都会转发到本地计算机 A 上的端口 Y。如果您在 NAT/防火墙后面,这很有用。例如:
ssh -R8080:192.168.1.1:80 your.server
访问your.server:8080 的任何人实际上都是在您的本地网络中访问192.168.1.1:80。
【讨论】:
隧道不是直接通过网络发送数据包,而是通过encapsulation 在另一个(通常是加密的)连接中发送。在 SSH 隧道的情况下,TCP/IP 数据包在 SSH 连接内发送到另一台主机,然后由该主机决定如何处理这些数据包(通常转发到内部网络)。
维基百科article about Tunnelling 很有帮助,但要更好地理解它,您应该对封装和OSI model 的工作原理有一个基本的了解。
【讨论】:
就我的理解而言,SSH 隧道是一种使用远程计算机互联网连接的方式,就像代理一样。
基本上,您在基本计算机上有一个网络连接,并且您使用该连接通过 SSH 隧道连接到远程计算机。现在,网络流量不再直接流向您的计算机,而是首先通过远程计算机。您的计算机会认为所有网络流量都来自一个连接(远程计算机),而不是像往常一样来自多个连接。
【讨论】:
什么是隧道(ssh 隧道和 PPP 隧道)?我在谷歌上搜索过,但很混乱.. 谁能提供一些关于这个隧道主题的好材料?
要了解什么是隧道,您首先需要了解数据包封装。
数据包可以封装在另一个包中以发送到另一个协议或 OSI 级别。比如你到这个网站的连接是一个HTTP请求,它会被翻译成TCP连接,然后TCP数据包会被封装在IP数据包中,以此类推。
它无处不在。 再例如,当您从智能手机浏览时,您的 HTTP 请求被封装到 IP 包中,并且它们被封装在 WiFi 802.11 帧中。 就像俄罗斯娃娃一样,一个人在另一个人里面,而且可以有很多其他人。
您可以查看here 的 SSH 隧道示例,以及如何使用它来代理从本地 PC 到远程服务器的流量。
了解什么是封装的最好方法是先阅读一些有关 OSI 模型的内容。
【讨论】: