Reddit AMA:Jason A.Donenfeld,WireGuard等的创建者。

2020-07-29 21:19:01

我很乐意回答您关于我的任何项目、安全研究,甚至是关于我的计算机和操作系统设置的奇怪的个人问题。

我今天(7月29日)会在这个帖子里寻找问题,可能明天(7月30日)也会。如果读者想在AMA之后参加,我也会帮助mod r/wireGuard。

级别1不同发行版的内核维护对您的工作有何影响,发行版在向后移植最新的安全补丁和一些有限的新功能的同时保持旧内核的存活对Wireguard来说是障碍吗?

第2级处理分发内核一直是一个巨大的祸害,耗费了太多的时间才有意义。我最近尝试了自动化很多内容--滚动到构建状态页面的底部--但即便如此,要使兼容性模块中的compat.h(一个充满恐惧的文件)保持最新,仍需要大量的工作和努力。幸运的是,许多发行版现在都在自己集成这一功能,或者转移到更新的上游/主线内核,这些内核具有开箱即用的WireGuard,并且不需要compat后端模块。我甚至做了一个Greg KH风格的WireGuard后移植到5.4.y,这样发布5.4的各种发行版仍然可以在不使用compat模块的情况下获得集成的WireGuard实现。

这一切的维护都很麻烦,但我也非常肯定,如果WireGuard不像过去几年里在所有发行版中那样容易获得的话,它作为一个项目是不会成功的。IPsec的发展势头一直很强劲,我认为如果没有人使用WireGuard,它很可能就不会成为主流。如果我没有注意维护很多旧内核和发行版内核的后端口(回到3.10!),就没有人能够真正使用它了。

从技术角度看,WireGuard代码库总是针对Linus和DAVEM的树进行编码。然后,compat.h层多填充缺失的函数和更改的API。它经常对预处理器使用非常怪异的技巧。这非常难看,但通过在WireGuard代码中将ifdefs减少到最低限度,这意味着在我提交它之前,它总是为主线做好准备,现在它是主线,它让我更容易地将补丁后端移植到compat repo中。

当我还很年轻的时候,从Gentoo Linux基本上问世开始,我就一直在使用它。我不相信它真的是最明智的选择,但我已经使用它这么多年了,以至于我对它产生了一种疯狂的依恋。我喜欢轻松地将补丁应用到各种系统包的能力,并自定义包依赖项以获得更少的发行版。我也是一名Gentoo开发人员,这意味着当我遇到问题时,我可以更容易地修复它们。而且,所有的汇编都让我的家在冬天暖洋洋的!

但所有的编译有时也是一种令人沮丧的经历。在较小的机器上,我更倾向于运行像Arch这样的东西。或者,有时我只是制作一个最小的不变initramfs,并通过CONFIG_INITRAMFS_SOURCE将其嵌入到自定义内核中,类似于对build.wireguard.com测试套件所做的操作。保持可维护性的关键是将其与Makefile完全组装。它的主要优点是构建时间尽可能短,而且没有我无法控制的攻击面。

作为尝试将WireGuard部署到下游的一部分,我不得不与许多发行版政治和软件包格式以及奇怪的发行版打勾打交道。如果说有什么不同的话,那就是似乎所有的发行版都有自己的怪异之处,有些只是有比另一些更大的疣。

第一级嗨,杰森。我一直在用‘PASS’,为此我想感谢你们!

2级很高兴你喜欢它!PASS一开始只是我用于管理一些文件的个人小bash脚本,我从来没有想过会有这么多人喜欢我那一团糟的shell脚本。

第1级,您希望主流移动操作系统何时能够开箱即用地支持Wireguard?

但是2级!你可以在Android和iOS上安装一个应用程序,它与系统的原生VPN API集成在一起,并且集成得相当紧密。

目前,我的主要笔记本电脑是ThinkP1Gen 2,有8C/16T和64 GB内存。我最终用光了这东西的每一盎司,我经常希望我有更多的力量。我同时运行许多不同的VM,并且不断地进行编译,我在tmpfs等文件中保存了很多大型目录树。而GPU在SDR工作中派上了用场。太糟糕了,它仍然是14纳米的;我曾希望这台笔记本电脑最终是10纳米的,这样我就可以在我的笔记本电脑上编写AVX512代码了。

在那之前,我有一辆P50,在那之前我有一辆W530。这两款都是更坚固的笔记本电脑,但代价是更重。然而,总的来说,P1感觉比那些系列要脆弱得多,有更多奇怪的硬件怪癖;我想知道ThinkPad是不是在走下坡路,或者是怎么回事。但漂亮的键盘和跟踪器让我一直留在这里。

您认为云提供商会突然推出花哨的新服务,在引擎盖下运行Wireguard吗?如果是这样的话,你希望他们会被称为什么呢?

我也只是想说谢谢你的线条和通行证,我还没有使用它们,但我知道它们是很棒的工具,可以在我需要解决问题的时候使用。

第二级,它们大多是上游的,有不同的命名方案,以免激怒政治羽毛。它不像我希望的那样干净,但这是我们现在可以反复剔除的东西。目前的形势对WireGuard来说是相当好的,但总体上并不完全像我想象的那样雄心勃勃,也没有进行重组。但那很好,我们会及时赶到的。

你认为云提供商会突然推出花哨的新服务,在引擎盖下运行Wireguard吗?

据我所知,一些较大的云提供商正在幕后使用WireGuard作为其安全网络产品的一部分。而且看起来在库伯内斯也有很多人在使用它。

级别1是否通过了Unix密码管理器的描述,因为它指的是原理,或者它以前是一个真正的Unix程序?

第2级我认为副标题试图传达的意思是,它只使用了大多数系统上已经存在的标准Unix实用程序--shell脚本、一些文件修改工具等。最终的结果是,您无需安装PASS就可以管理和理解这些工具,因为它只是一个枯燥文件的目录树。

第1级:在实际开发/公开宣布之前,您对wireguard的想法考虑了多长时间?您是否正在考虑开始任何新的OSS项目,或者希望其他人能够开始?

第2级WireGuard最初来自于我之前为数据外泄编写的一些开发后内核代码。然后,当我把这些代码变成WireGuard时,我在它上面坐了好几年,然后才向公众发布任何东西。我不想把新的密码放在那里,除非我相当确定它没有灾难性的缺陷。

在我走上这条路之前,我实际上是在尝试用一些新软件来修复我的电子邮件设置,我仍然想在某个时候回到这个问题上来。我意识到,如果你对密码、内核和奇怪的网络协议之类的东西感兴趣,这听起来可能非常平凡,但可以说,我用计算机做的很多事情都是为了满足自己的愿望。我的电子邮件设置还有很多不尽如人意之处。

我目前坐在一个小的密码项目上,我可能很快就会发布;我们拭目以待。

第一级什么是你从未尝试过,但一直想尝试的?无论是使用一种技术,学习一些语言,去某个地方,还是喝一杯特殊的饮料。你怎么从来没试过呢?

级别1与其说是一个问题,不如说是对您在WireGuard上所做工作的赞赏声明。我在Qubes中大量使用它,在多个VM中运行多个实例,用于不同信任级别的不同连接。它的稳定性、可靠性和性能令人赞叹不已。我的Lineage OS设备上的参考WireGuard应用程序也是如此。

如果你有任何关于WireGuard在野外非常规使用的有趣例子的话?

另外,现在WireGuard已经得到OpenBSD的支持,移植到FreeBSD的工作进展如何?如果能在我的防火墙的pfense中使用WireGuard,那就太棒了。