#name-service #peer #resolve #host #host-name #plugin #devices

libnss-wiregarden

nss-wiregarden是一个libnss名称服务切换主机插件,通过设备和网络名称解析wiregarden对等节点

1个不稳定版本

0.1.0 2020年8月26日

#5 in #host-name

自定义许可协议LGPL-3.0

11KB
165

nss-wiregarden

nss-wiregarden是一个libnss名称服务切换主机插件,通过设备和网络名称解析wiregarden对等节点。

构建

cargo build --release

安装

Ubuntu的软件包安装即将推出。同时,您可以从本地构建中安装。

运行./install.bash以在当前机器上安装,或者./install-lxd.bash <container>将安装到当前机器上的LXD容器中(适用于测试)。这将安装共享库,以便libnss可以加载它。

nss-wiregarden需要安装libsqlite3。

wiregarden服务添加到/etc/nsswitch.conf。例如

hosts:files dns wiregarden

操作

给定一个wiregarden接口已启动,例如

root@m3:~# wiregarden status
Interface       Network         Address         Port    Peers   Status      
wgn001          civil-manatee   10.160.91.3/24  42501   3       interface_up

Network         Peer            Address         Endpoint                Key                                         
civil-manatee   m3 (this host)  10.160.91.3/24                          3loqTaoObb1cwHMCeiVGiUVLd5S2g8/6HAQVmGQEc1g=
civil-manatee   m4              10.160.91.4/24                          KGhcMQZ/Z3NFHRuotV6JX66a/wHVr92aznKBLLAFJXw=
civil-manatee   m2              10.160.91.2/24                          7kWe4PNriOs3InKODoP4fTWWmCZlckhtPHX259JkNz8=
civil-manatee   m1              10.160.91.1/24  10.149.84.66:51281      sDLG2DwVmnDQik9YuZwqS007+AWfMr0fxPrL6JtlkXc=

使用nss-wiregarden,您可以通过<host>.<network>解析对等节点

root@m3:~# ping m1.civil-manatee
PING m1.civil-manatee (10.160.91.1) 56(84) bytes of data.
64 bytes from m1.civil-manatee (10.160.91.1): icmp_seq=1 ttl=64 time=0.949 ms

安全

NSS插件以只读、受限模式读取/var/lib/wiregarden/db,并查询wiregarden本地数据库以获取接口和对等节点信息。默认情况下,此数据库对所有用户可读,因为它只包含接口信息和状态,不包含机密信息。

因为插件代码可能从任何使用libc解析主机名的进程执行,所以它必须能够抵御本地权限提升类型的安全攻击。选择Rust是因为它出色的运行时安全性特征,但作者还没有彻底审查crate依赖项。

通过wiregarden.io报告安全漏洞。

故障排除

如果插件由于任何原因无法读取数据库或遇到意外错误,它将无法解析名称,但其他主机名称解析器应该可以继续使用正确配置的NSS。要调试wiregarden名称无法解析的原因,请安装库的调试版本,错误信息将打印到stderr。


版权所有 2020 Cmars Technologies LLC。

依赖项

~22MB
~418K SLoC