最新消息:

实验一个 ICMP Tunnel(转)

网络协议 大步 1477浏览 0评论

Ps:看到这个倒是很新奇,网上有免费试用的vps,可以考虑试试,icmp运输的作用


来源:http://www.douban.com/note/153932873/

各式各样的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通信,有兴趣的同学可以继续实验。

转载请注明:大步's Blog » 实验一个 ICMP Tunnel(转)

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
SiteMap