很少有人来个经验总结,现在我来一个吧,说的不对不好不全,我改!反正不是我一个人的经验。( 本次更新于: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 地址都在变,那么就只能是中转。除此以外的其他情况,就具备建立直连的条件。
上面的软件测试不大准确,仅做参考。
最新评论
By Reinigungsfirma
By Alle Taxidienst Ergebnisse teilen
By Aktuelle Taxi als Favorit speichern
By Punti VIP di GratoWin ti premia con cashback settimanale.
By RTP (Retorno para o jogador) no Fortune Rabbit: 96
By Taxiunternehmen speichern