想要远程登录家里的电脑,路由器?没有公网IP?那就来使用n2n进行内网穿透吧。
n2n是在数据链路层实现的一套P2P协议,包括super node 和 edge node。
具体原理可以参看作者的论文http://www.n2n.org.cn/doc/n2n.pdf。而且最重要的是n2n是开源的,遵循GPL v3协议,可运行于Linux,Windows,Android,甚至是Openwrt之上。下面来记录下我折腾n2n的过程。
- 搭建super node:搭建super node需要公网IP,但好在搭建super node 并不是必须的,我们也可以使用公用的super node,且不用担心使用公用super node 的安全性问题,因为两个edge的通信数据并不经过super node,具体原理参看论文及源码。我提供一个我搭建的super node供大家使用,但不保证永久有效。IP:119.29.114.190 PORT:1463。我搭建super node 的过程如下(环境:Ubuntu server 14.04):
$ sudo apt-get install subversion build-essential libssl-dev
$ git clone https://github.com/meyerd/n2n.git
$ cd n2n/n2n_v2
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
$ supernode -l 1463
然后也可以在super node的服务器上建立 edge node,命令格式如下:$ edge -d [node name] -a [IP] -c [net name] -k [key] -u 1000 -g 1000 -l [supernode IP]:[supernode port]
一个实例:$ sudo su
$ edge -d edge0 -a 10.0.0.1 -c owlNet -k owl -u 1000 -g 1000 -l 119.29.114.190:1463
- 搭建edge node:搭建过程与super node相同,只是最后启动edge node时配置好自己的IP就行(实验环境:Ubuntu桌面版14.04)。
$ sudo su
$ edge -d edge1 -a 10.0.0.10 -c owlNet -k owl -u 1000 -g 1000 -l 119.29.114.190:1463
$ ifconfig
此时在此电脑上应该会看到类似下面的信息edge1 Link encap:以太网 硬件地址 xx:xx:xx:xx:xx:xx
inet 地址:10.0.0.10 广播:10.0.0.255 掩码:255.255.255.0
inet6 地址: xxxx::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1400 跃点数:1
接收数据包:0 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:38 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:1000
接收字节:0 (0.0 B) 发送字节:6463 (6.4 KB)
此时可以在edge所在的电脑上 ping 10.0.0.1 , 测试连通性。
- 搭建其他edge node :方法同上,注意配置不同的ip。然后edge间就可以没羞没躁地穿透层层NAT愉快地玩耍啦。