yggdrasil配置和使用
官方文档
public peers
给ygg提供原生域名的区块链域名系统alfis
ygghowto(俄文材料)
这玩意是我真的想要的东西,解决该死的设备无法互联的方案,有时我并不需要强匿名不是吗
而且他原生考虑到了移动端,光在这一点上就薄纱一众e2e/p2p连接工具了
原理
这是go写的,是的,又是go,但是至少他支持了移动端
yggdrasil利用0200::/7这一段在ipv6规范中被IETF不建议使用的地址段来编址,通过已有的ipv6支持(原生支持几乎所有网络工具和服务!),添加一个“不应该存在的ipv6地址”,来实现地址系统。但是他并不需要你真的有ipv6,它可以帮你实现ipv6-in-ipv4或者ipv6-in-ipv6。
0200::/7也就是从0200::到
03FF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF
其中300::/64用于子网
如何路由
yggdrasil的连接是树状的,通过节点之间相互连接,允许对一个节点到另一个节点通过已有的树状连接结构进行路由,并在已有的树状线路中寻找到最优的路线。这当中不会发生一般DHT设计中的节点分享(但是局域网下的节点会相互连接),所以不会有意外的远程连接。设计上他也没有考虑设备之间“创建出”直连的情况有点极端了。也就是说,他是e2e的。
所以,你可以非常方便的构成一个独立的网络,设计上,yggdrasil应该是一个mesh工具,而不是暗网工具。
如何产生地址
设置时会产生一个公私钥对,你的地址将由你的公钥产生和决定,所有e2e连接都将是加密的。
配置
有通用的需要进行的配置,无论哪个端你都会需要的
在linux下,你需要手动生成一个默认配置文件yggdrasil -genconf > /etc/yggdrasil.conf
如果你用这个HJSON格式的话,列表直接换行写就行,不需要考虑引号和逗号
配置项
peers
如你所见,我们需要形成树状网络,我们并不是“无服务器”结构的。
所以你需要在设置中的peers下添加一个列表,指向你向连接的节点。
如果你并不是想建立一个私有的网络,我们有一个公共节点列表
正如这个页面告诉你的,只要选取靠近你的节点,不要选取和你有高延迟的节点,不要添加大量节点,把同一个地址的节点的不同协议加几次对你不会有帮助
IfName
如果你需要自定义一个TUN名字的话,可以在这里设置,可能的协议如下
Listen
如果你要配置一个tree,那么你需要自己的root peer,你可以在这里进行设置
tcp://[::]:1234
(TCP)tls://[::]:1234
(TCP+TLS)quic://[::]:1234
(QUIC+TLS)unix:///path/to/sock.sock
(UNIX)ws://[::]:444
(WebSockets, Yggdrasil 0.5.7 or later only)
同时你也可以使用password=PASSWORD
url参数来限制连接
其他的配置
自己去看官方文档吧,我觉得我用不上他们(
linux
向本地添加子网地址
注意下面添加的子网地址并不是真正的子网地址,请使用你自己的子网地址
这里使用NetworkManager进行管理,如果你使用其他方法,可以查阅ygghowto(俄文材料)
1 | sudo nmcli connection add con-name ygg-loopback type loopback |
请确认版本
一些发行版的源当中版本会比较旧,因为yggdrasil是在高强度更新的,请保证他是最新的
win下
yggdrasil并没有对win做很好的支持,但也能用
请确保你的9001端口没有被占用
yggdrasil似乎并不支持修改这个api port,如果你的电脑上跑着一些程序占用着这个端口,请把他删掉或者切换他的端口,否则你会卡在安装界面
tun
tun是会自动安装的,但是奇怪的是他会自动安装一个ipv4协议给这个接口(虽然应该并不影响实际使用),但是只有服务运行的时候存在这个tun,一旦服务关闭,你在虚拟网卡当中进行的所有配置都会消失。
dns问题
目前官方没有支持在配置中添加ygg的虚拟网卡的dns设置支持,这里提供一个方法:
假定你的网卡名称是Yggdrasil,假定你已经正常安装了Yggdrasil
保存以下内容到ygg.xml
文件,(这是一个计划运行的配置),如果你要设置dns,请在当中的"Set-DNSClientServerAddress 'Yggdrasil' –ServerAddresses ('324:71e:281a:9ed3::53', '302:7991::53')"
处修改(你看得出来里面有两个dns地址对吧)
1 | <?xml version="1.0" encoding="UTF-16"?> |
打开C:\Windows\System32\taskschd.msc
,点击导入,导入你刚刚下到的xml文件,确认即可。
此后,每次ygg服务运行时都会运行一段脚本来向Yggdrasil虚拟网卡添加dns服务器如果你好奇原理的话,我也不理解win的计划任务 ; )