使用n2n做内网穿透
1. n2n的原理
supernode节点做起始通信功能,待edge节点连通后,所有的数据可以不用经过supernode,所以保密性很好。
2. 使用此方法进行内网穿透与端口反射的优劣对比
a. 端口反射需要将端口暴露在公网上,不安全,n2n安全性更好,开源的XXN
b. n2n一次设置之后就可以完全访问内网机器的所有公开端口,不用每个端口进行设置
c. 但此方法也有一点安全问题,比方在supernode如果被控制,hack是不是就可以得到GroupName了?甚至key,然后就可以登陆该局域网进行内网渗透了,所以对于安全性要求高的地方,supernode应该自己掌控,且在edge匹配时,设置一个强有力的密码
3. n2n的下载与编译
a. 下载地址:https://github.com/meyerd/n2n.git,linux下编译so easy,win下编译会有点困难,原因似乎是作者很久没有维护的原因,最新的cmake不能匹配n2n的源码
b. Linux下编译过程简述:cmake,make,make install。两个有用的文件是edge,与supernode,可以把supernode放到vps上
c. win下编译(win10+VS2017),安装最新版本cmake(写入环境变量),使用minGW安装器,安装mingw32-base, mingw32-gcc-g++, msys-base,然后运行C:\MinGW\msys\1.0\msys.bat,进入n2n_V2,与linux一样,运行:
cmake -G "Visual Studio 15" --build ./ ../
然后,可以再build目录下看到n2n.sln,就可以用VS2017编译了。
d.下载n2nguien.exe并安装,然后在其安装目录下用VS2017编译的edge.exe替换edge2.exe,因为这个才是n2n_V2版本对应的edge。剩下就是配置工作了
4. supernode的配置
在vps上,无需sudo权限,就可以运行,supernode -l 8000,就是监听8000端口用来配对,注意该端口似乎不可以低于1024?否则连接不上,可能跟vps防火墙策略有关系。supernode就配置完了
5. Linux下edge的配置
sudo edge -a 10.0.0.255 -c username -k password -u user -g group -M 1200 -l vpsip:8000 -m xx:02:xx:xx:xx:c6
参数含义可以通过edge --help查看,其中-u, -g,是在启动edge后可以降权运行,-M 是设置MTU值,推荐≤1300,-m是指定虚拟网卡的mac,这里强烈建议设置。
6. win下edge的配置
win下配置跟linux一样的参数,只是在命令行下可以查看是否可以顺利连接到supernode,如果在命令行下启动后出现“Rx REGISTER_SUPER_ACK.....",则表示可以连接,然后再gui工具下启动,就可以了
7.这样就可以做内网穿透了,可以ping一下看看,顺利的话,是连通的。