实验一个 ICMP Tunnel
各式各样的Tunnel其实充满了乐趣
今天下午忙里偷闲玩了玩 ICMP Tunnel
这个Tunnel是什么意思呢? 就是说,在一个”封闭”网络中,所有端口都封了,但只要你能Ping出去,你就能通过这个Ping发出的ICMP包上网了。
顾名思义,其实就是把TCP/IP Suite 上层的包放到ICMP包里面,利用ICMP echo request 和 echo reply 来达到通信的目的
已经有一位大侠做到了,并且写了个很好用的工具来实现这个tunnel.
PingTunnel
可以来捣鼓一下这个ptunnel.
前提:
1. 有一台可以有root权限的服务器 (暂时叫 S)
2. 本地最好是类UNIX系统,或者装了winpcap的windows. (因为ptunnel依赖libpcap)
=========
1. 先登录到 S, 在上面安装 pingtunnel. (make 即可)
直接运行 sudo ./ptunnel
2. 在本地也装, 假设S的地址是 5.5.5.5, 本地listen端口是8000
运行: ./ptunnel -p 5.5.5.5 -lp 8000 -da 127.0.0.1 -dp 22
(这命令就是说在本地起一个ptunnel, 监听8000端口, 监听来干嘛呢? 就是tunnel给在5.5.5.5上的ptunnel服务器端, 服务器端干什么呢? 就是连接到S自己的22端口 )
所以这里已经在本地跑了一个ptunnel实例,来连接到S的22端口
3. 再 ssh -p 8000 localhost
(连接到刚刚建立的那个ptunnel,其效果就是ssh连接到了5.5.5.5上)
这时就可以用ssh服务了
那如果想要上网呢?
可以这样 ssh -p 8000 -ND 9999 localhost
这样就用ssh建了一个SOCKS代理,该代理通向5.5.5.5。是一个在ICMP Tunnel上的SSH Tunnel.
然后设置浏览器的代理为 SOCK5 , 地址是 localhost, 端口为9999. 就可以上网了。
这样,我们就在一个只能Ping的“封闭”网络中实现了上网需求。
==========
当然,用ICMP Tunnel理论上可以进行任何TCP通信,有兴趣的同学可以继续实验。
来源:http://www.douban.com/note/153932873/
以前看过类似的。
这样 Ping / Pong 包的身材会暴涨的。GFW 会不会作出响应呢?
目前可能没有
icmp能携带的消息实在太少了,用icmp tunnel进行简单的通信倒是可以
我非常喜欢博主的博客。每天都会有好几篇文章。虽然有一些技术性比较强的看不懂。不过总体而言对我帮助挺多的。