Pages

Tuesday, 27 October 2015

xtunnel


现在还只实现了 Linux 版,另一个家伙将实现 Mac 版,至于 Windows 版将视用户需求而定。 

依赖的软件包

让我想想,现在的 Linux/XMPP 版大致上需要下面的几个软件包: 
  • python-daemon 
  • xmpppy 
  • dnspython 或者 pydns 
  • python-lockfile 
请大家用各自的包管理器,或者 easy install 进行安装。 

简明使用手册

源码下了之后,进入其中的 xtunnel 子目录,你会看到有两个 python 源文件,其中一个 main.py 应该是可执行的,这个就是我们的主程序啦,使用方法跟 /etc/init.d 下面的那些脚本很类似,不过多了一种运行方式:stand 子命令表示以前台方式运行。 
运行这个程序的时候,你需要具有 root 权限,为了打开并操作 Linux 中的虚拟网卡。当然,这也说明,你的 Linux 内核要把 TUN/TAP 支持给编进去才行。 
另外,该程序需要通过 /etc/xtunnel.conf 文件进行配置,在 examples 子目录中就有一个例子。 
哦,还有一点,就是把你们要用来做这项用途的 Google 账号的聊天历史给禁掉吧。

from https://code.google.com/p/xtunnel/
-------------------

利用 XMPP 协议实现 VPN

假设你有两台内网机,都没有公网地址,你想从一台机器访问另一台机器的服务,这时要怎么办呢?当然很可能是我无知了,就我所知,网上倒是有一些提供这类服务的网站,但都是基于 Windows 的远程桌面的,至于 Linux ,我没找过。
于是那家伙联想到了 IM Bot 这种东西。现在网上有各种各样的 IM Bot ,可以通过与之聊天执行各种各样的自动化任务,那为什么不能让它把发过去的命令交给另一台机器的 Shell 执行,并把结果返回呢?这不就实现了一个简单的 Telnet 了吗?这就是最初的想法了(我没去找现成实现,因为我也该练练手了)。而我刚好才折腾过 OpenVPN ,于是就有了标题所说的这个最终想法。这样的话,就能一下子从只支持一种应用协议到支持几乎所有的应用协议了,而且实现的工作量也同时减到了最低。真是好主意啊,自我夸奖一下 :-)
其实真正解释起来是很简单的想法啦,就是把从虚拟网卡读到的 IP 包,base64 一下,当聊天内容发给对端就万事 OK 。
选择 XMPP 当然不仅是因为它的开放性,最重要的原因就是有一个现成的冤大头给我们利用,就是 Google 啦,而且还有在线的聊天记录供调试用,何乐而不为呢 :-)
实现这个想法的关键就两点,一是 XMPP 协议库,Python 的有好几个;二是对虚拟网卡的读写,Linux 下有现成的虚拟网卡,Windows 也有,不过要另装,而 Python 的标准库就完全能实现对其的读写了。不愧是胶水语言啊。
目前来说,一个还只支持 Linux 的阳春版已经实现出来啦,在这里,欢迎大牛们前去参观。
之后的开发可能会转向 C 也可能不会,就看 Python 在 Windows 下的表现啦(当然也可能是应用户需求)。
from http://glacjay.info/blog/2009-12-19/利用-xmpp-协议实现-vpn.html