搜集整理N2N使用中的一些经验(会不断更新)

很少有人来个经验总结,现在我来一个吧,说的不对不好不全,我改!反正不是我一个人的经验。( 本次更新于:2023-2-17)

1、与 N2N 相关的一些主程序文件请去这里下载

链接: https://github.com/lucktu/n2n (这是我收集整理的,根据源码编译出来的主程序。如果里面没有,或者不好用,或者你善于编译,请根据源码自己编译吧)

2、N2N 的 V1、V2、V2s、V3 有什么区别?
v1、v2、v3 都是官方开发的,v2s 是一个德国网友根据官方旧版 v2 修改的。综合来看,推荐你使用 v2,除了局域网内不易建立直连以外,其他方面都比 v2s 强。其次推荐使用 v2s。v3 还在不断升级折腾中。
V1   https://github.com/meyerd/n2n/tree/master/n2n_v1 (这个德国网友根据官方原版 v1 小改过的)
V2   https://github.com/ntop/n2n/tree/2.8-stable(发布过 v2.0、v2.1、V2.3、v2.4、v2.5 等版本,代表不同阶段,都是 v2,但 v2.9 不是 v2,而是 v3 的幼年)
V2s  https://github.com/meyerd/n2n/tree/master/n2n_v2 (版本号是 v2.1,为了与官方的 v2.1 及 v2 相区别,我们给它取的别名是 v2s)
V3   https://github.com/ntop/n2n (还在升级折腾中,可以尝试)

3、windows 下我能 ping 通别人,别人却 ping 不通我?
能 ping 通别人,说明你 windows 下的 n2n 工作正常并成功加入了网络,只是因为 windows 拒绝了来自别人的 ping 请求而已,试试关闭防火墙吧。

4、有人说N2N容易断(这一段信息停留在 2019-10-24)。
我觉得不是这样,这是在休眠。当你一段时间没有通讯时,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。测试详情

5、网上共享的中心节点不稳定怎么办?
是啊,这也是免费的东西的通病,别人没有义务保持他的 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 &

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

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

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

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

这个三角形理论判断直连的方法,可以参考本站 这篇文章 里面的数据。

对于官方最新版本 v2 和 v3,如果保持运行输出界面,如果是直连,会显示 p2p 字样。

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

(A)硬件1:建立起来的 n2n 网络最好要比较稳定、流畅,不能是断断续续的,以及很差的网络(例如长城宽带与移动、广电之间)。免多拨、多线路负载均衡等;
(B)硬件2:运行 n2n 的设备最好在最上级的网络中,尽量不要在很多级路由及网关以后的设备上来运行它。
(C)硬件3:尽量用网线连接,无线(wifi)不容易直连;
(D)软硬1:如果你对网络有很高的控制权,那么在运行 edge 时,加 -p XXX 指定一个固定的通讯端口,然后在路由器上(如果有多级路由,需要逐级)设置 XXX 的UDP端口转发到本机。对路由器里面的防火墙进行设置,让它对下级设备宽泛一些,以及打开upnp功能等。如果你的网络有外网IP,那么它下面的机器就可以与所有的机器直连,这是最厉害的一着;
(E)软件1:用新版的 v2 和 v3(v1和v2s不推荐),在网络比较优良的那一端运行时加上 -E 参数(例如有外网IP的电信、联通网络等,当然都加上也没有错);v2s 运行时加上“-L x.x.x.x”(一样,重点在网络环境较好的一端加。或者真实内网 IP 地址用 auto 代替),也能增加直连几率;v3 增加了一个 “-e x.x.x.x” 参数来代替 v2s 的 L 参数。
(F)软件2:针对windows,修改本地网络为“专用”而不是“公用”网络(在“网络配置文件”下面;特别是 windows10,更需要如此设置)。

做完以上设置,那么在理论上,只要通讯的两端不都是 NAT4 网络,就可以创建直连。要想速度更快,除了变成直连以外,尽量用 A4/A5 的加密方式,尽量用 v2/v3。

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

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

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

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

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

上面的软件测试不大准确,仅做参考。


85.48%(53)

14.52%(9)
1 2下一页

发表评论

*