n2n 内网穿透折腾记

n2n 内网穿透折腾记

想要远程登录家里的电脑,路由器?没有公网IP?那就来使用n2n进行内网穿透吧。

n2n是在数据链路层实现的一套P2P协议,包括super node 和 edge node。

具体原理可以参看作者的论文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愉快地玩耍啦。
编辑于 2017-02-21

文章被以下专栏收录