搜集整理N2N使用中的一些经验

很少有人来个经验总结,现在我来一个吧,说的不对不好不全,我改!反正不是我一个人的经验。

1、与 N2N 相关的一些程序文件请去这里下载(真不知能管多久,我希望是永远^_^)

链接: https://pan.baidu.com/s/1nwuKlvj 密码: 9nfi

2、新版的 N2N v2s 确实不错,强烈推荐。
我认为主要的一点,有人正在更新,你也可以去反馈让他更完善。第二点才是这个版本相对于以前的很容易直连(此时关闭中心节点也不会断开正在进行的通讯),而不是中转。我曾经的实验是,6次同样的方法,原来的v1/2,一次也没有直连,新版v2s是4次成功直连,远距离的电信对电信二级路由器,没有一级的管理权限。第三点就是更稳定。

源码位置:https://github.com/meyerd/n2n (里面的 v2 就是我们说的 v2s)

3、有人说N2N容易断。
我觉得不是这样,这是在休眠。当你一段时间没有通讯时,ping不通了。但是你接着ping,一会儿它是会自动通的。多久?我也没有测试过,我肯定2分钟以内吧。如果你非要随时通,可以试试加一个 ping 对方的任务驻留内存,让它一直进行下去,就不会休眠了。注意新版v2s没有这个问题:我做过一个实验,用4天时间,相隔至少半个小时以上,看能否ping通(中心节点是国外的一个很差的vps,edge一端是群晖,一端是padavan路由器),结果4天中的36次,v2s的ping通率是100%,旧版v1是92~94%,旧版v2是78%。ping的方法就是在windows下直接 ping X.X.X.X,这个ping会有4次反馈,4次都没有反馈算断开,即使有一次被ping通也算是通的。所以稳定性上,新版V2s > V1 > V2。测试详情

4、网上共享的中心节点不稳定怎么办?
是啊,这也是免费的东西的通病,别人没有义务保持他的 N2N 服务器 99.9% 的在线率,所以偶尔中断服务也是可能的。严重者可能断开服务一段时间,甚至是永远断开都有可能。

那么怎么防止这种情况呢?

我的方法是使用域名代替中心节点的 IP 地址,只要提供的端口号一样,那么当某个中心节点断了以后,我们修改域名指向,指向另外一个有效的中心节点,再等一会,我们的n2n通讯就恢复了。注意此时需要加上 -b 参数,这是专门针对域名类型的超级节点的。

另外,我同时运行多个edge客户端,这些客户端可以取名 edge0、edge1、edge2,... ...,甚至于是XYZ,都可以,然后用上 -d 参数,赋予他们不同的网卡名即可。

edge2s -d n2n2s -a 10.10.10.10 -c n2n -k n2n -f -L 192.168.123.1 -l n2n.lucktu.com:10088 -r -b &

最新发现(2018-2-28),针对新版v2s,可以在一次ping之后,间隔3分钟再ping,就变直连了。也可以理解成,中断3分钟的通讯以后,就变直连了。

5、怎么样判断是否是直连?

我认为N2N的边缘节点之间的通讯方式有3种:一是中转,就是边缘节点(edge)上所有的流量都要通过中心节点,速度最慢;二是借道,就是边缘节点之间的通讯借用其他的通道来完成。例如当你在两个边缘节点之间运行了多个edge,那么新版的v2.1会借用速度较快的其他edge通道;三是直连,就是边缘节点之间直接连接通讯,不借助第三方。

那么怎么判断是不是直连?我有一个三角形理论:就是在一个三角形上,任意两边长度之和大于第三边的长度,我们把通讯的两个设备与中心节点看成处于一个三角形的顶点之上,把他们之间的 ping 值看成是三角形的边长。当通讯的两个设备之间的 ping 值,小于他们 ping 中心节点的值之和时,肯定不是不是中转。此时保持连续通讯(例如不停的 ping ),关闭其他的通道,同时也关闭中心节点,如果通讯不受影响,那么就可以判定是直连。如果断了,就是借道。如果两个设备之间的 ping 值大概等于他们 ping 中心节点的值之和,那么可以认为是中转。

当然,在通讯过程中,由于通讯的两端有一个加密、解密的过程,这个过程受两端CPU的性能影响,可以考虑会增加 10ms 的用时。例如中转时,通讯设备之间的 ping 值,会大于彼此 ping 中心节点的值之和 10ms 。

6、怎么增加直连的成功率?

改善通讯的两端的网络结构,见这篇文章: NAT类型科普及一些简单提升NAT类型的方法 。简单的一些方法就是,(如果可能)windows上关闭防火墙,路由器上设置DMZ到某台机器,padavan路由器设置NAT类型为 Full Cone NAT,等等。要用新版的v2s,直连成功率上升很多。

在padavan上,我发现一直不停的ping对方,反而不易直连(貌似为了保持网络的稳定性,它不易调整自己去创造直连),如果ping5次,停30秒,再ping次,再停30秒,再ping5次,再停90秒,然后就可以直连了。为了保持这个直连状态,我在这个90秒以后,驻留了一个ping在内存之中,这样即使中心节点断开,我的直连仍然会处于保持状态。我把下面的脚本加入到这里了: 高级设置--自定义设置--脚本--在WAN上行/下行启动后执行:

### HOLD P2P
  sleep 5;
  ping 10.10.10.10 -c 5;
  sleep 30;
  ping 10.10.10.10 -c 5;
  sleep 30;
  ping 10.10.10.10 -c 5;
  sleep 90;
  ping 10.10.10.10;

最新发现(2018-2-28),针对新版v2s,在一次ping之后,间隔3分钟再次ping,就变直连了。也可以这样说,中断3分钟再次通讯,就变直连了(前提是这样的两端要具有直连的条件)。

7、padavan上面运行edge后不能访问对方

请参考这篇文章:与大家分享自己使用n2n的一些体会 主要加入这样的两句到防火墙里面去。其中XXX是在edge后面带 -d 参数设置的网卡名。

iptables -t nat -A POSTROUTING -j MASQUERADE &
iptables -I INPUT -i XXX -j ACCEPT

8、有关NAT类型方面的一些资料
(1)NAT类型科普及一些简单提升NAT类型的方法
(2)NAT的四种类型及检测
(3)NAT类型测试软件:NatTypeTester

一般经验:如果双方都是对称型 NAT(Symmetric);或者虽然只有一方为对称型NAT,但是其端口变动太大或 IP 地址都在变,那么就只能是中转。除此以外的其他情况,就具备建立直连的条件。

上面的软件测试不大准确,仅做参考。简单粗陋判断,如果一方从ISP处得到的是外网IP地址,即使在内网,不具有路由器的管理权限,也可以建立直连。

9、N2N_V1、V2有什么区别?
v1加密等级低速度快,V2加密等级高速度慢,我们一般用v1。当然,我们推荐你使用新版的v2(为了区别,我们叫它v2s,源码位置:https://github.com/meyerd/n2n),因为它更稳定,更容易直连。

10、我想用新版 v2s,因为它容易直连,但是经过它加密以后速度很慢怎么办?
针对旧版 v2,以及新版 v2s,都可以去掉 -k 参数(当然也包括后面的密码)运行,这样数据不经过加密,速度自然就快了。但是 v1 不行,必须要 -k 参数。

11、怎么设置 supernode 为我所独用?
假设自己使用的 n2n 是这样运行的(以 n2nabc 账号)

edge -d edge0 -c n2nabc -k pwd -a 10.10.10.1 -l ip:10082

那么在 supernode 服务器上增加一条防火墙,监视 10082 端口通过的字符串,只准账号中含有 n2nabc 字符的通过即可。

iptables -I INPUT 1 -p udp --dport 10082 -m string ! --string "n2nabc" --algo bm -j DROP

有新的了再加,。。。


100%(3)

0%(0)

发表评论

*