http tunnel 原理 及 穿透防火墙方法-1
tunnel 很多文章解释为 "隧道", "通道".
这里所谓的 tunnel 是指一种绕过防火墙端口屏蔽的通讯方式, 可以有效地解决防火墙对端口的屏蔽作用.
原理:
防火墙两端的数据包封装在防火墙所允许通过的数据包类型或是端口上,然后穿过防火墙与对端通讯,当封装的数据包到达目的地时,再将数据包还原,并将还原后的数据包交送到相应的服务进程上。
举例如下:
A 主机系统在防火墙之后,受防火墙保护。防火墙配置的访问控制原则是只允许80端口的数据进出,屏蔽了其他的所有端口. B主机系统在防火墙之外,是开放的。 现在假设需要从 A 系统Telnet到B系统上去,怎么办?
使用正常的Telnet肯定是不可能了,但我们知道可用的只有80端口,那么这个时候使用http Tunnel,就是一个好的办法。思路如下: 在A 机器上运行一个 Tunnel 的Client端,让它侦听本机的一个不被使用的任意指定端口(Port>1024 and port < 65535),如1234. 同时将来自1234端口上的数据导向到远端(B机)的80端口上(注意,是80端口,防火墙允许通过),然后在B机上运行一个tunnel Server,同样在80端口上监听,然后把 80 端口上接收到的数据 (数据由 tunnel client传来)转到本机的 Telnet 服务端口23,这样就ok了。
根据刚才的设置, 数据流程大概是:
[telnet.exe:任意端口] ---> [tunnel client.exe:1234] ---->[Firewall]---->[tunnel server.exe:80]---->[telnet Server.exe:23]
说明:
telnet.exe 和 tunnel client.exe 是在同一个机器上的.
tunnel server.exe 和 telnet Server.exe 是在同一台机器上的.
按照流程图:
telnet.exe: 把发送的数据转向到 tunnel client.exe 的 1234 端口
tunnel client.exe 把数据发送给 tunnuel server.exe:80 ( 这次连接外网机器的80端口了, 防火墙应该是没有异议吧 )
Friewall 只允许 80 端口的数据进出.
tunnel server.exe 负责把接收到的数据转发给 telnet 的服务进程, 并可以接收 telnet 服务进程的数据
telnet Server.exe 把要发送的数据转给 tunnel server.exe,由它把数据经 80 端口发给 tunnel client.exe.

本文介绍 HTTP Tunnel 的工作原理及如何利用其穿透防火墙的方法。通过将受阻塞端口的数据封装到防火墙允许通过的 HTTP 协议中,实现内部网络与外部网络之间的通信。
1692

被折叠的 条评论
为什么被折叠?



