Hacker News 中文摘要

RSS订阅

构建我自己的网络协议栈 -- Building my own network stack

本文介绍了作者在DN42项目中自建网络栈的实践,强调去中心化的重要性:如果所有人都依赖单一实现,一个漏洞就能瘫痪整个互联网。作者认为每个人都应拥有独特的网络栈,以增强整体安全性。

正文

好的,这是根据您的要求,对原文进行的中文重述,保留了核心细节,并删减了与主题无关或过于个人化的内容。


标题:运营自己的ISP(DN42):每个人都该搭建自己的互联网

核心观点: 作者认为,当前互联网的底层实现过于集中化。为了追求真正的去中心化,每个人都应该实现自己独特的网络协议栈,这样单一漏洞就不会导致整个网络瘫痪。出于这种理念和兴趣,作者在DN42网络中部署了自己编写的网络协议栈。

项目实践(DNet): 作者曾开发过一个名为DNet的网络协议栈项目,并在近期重新拾起。该项目已实现以下功能: 1. 在Linux上创建TAP设备,收发以太网帧。 2. 解析以太网帧,处理ARP请求与响应。 3. 解析IPv4数据包,响应ICMP回显请求(Ping)。 4. 收发UDP数据包。

最新成果: 作者在DNet协议栈上搭建了一个简易的DNS服务器,并作为其DN42域名的权威DNS。现在,任何联网设备都可以通过dig命令查询该域名的TXT记录,并得到由这个自研网络协议栈直接返回的DNS响应。此外,DN42网络内的用户可以直接通过IP地址172.20.42.224与该协议栈通信(例如执行Ping命令)。

基础设施调整: 作者曾将所有VPS迁移至NixOS,但因不熟悉Nix导致系统难以维护。因此,他决定将所有服务器回退到Debian系统,并使用基于Python的pyinfra工具进行基础设施管理。在Debian上,他使用Docker Compose来隔离所有DN42服务,每个容器运行在独立的网络命名空间中,避免了配置混乱的问题。

结语: 作者认为DN42网络目前参与者太少,流量主要是ICMP和BGP,缺乏真正的应用,限制了更多有趣的玩法。除非未来有新的灵感,否则关于DN42的系列文章可能就此告一段落。

评论

根据评论内容,总结如下:

主要观点一:自行构建网络栈是宝贵的学习体验
- 多位评论者强调亲手实现网络栈能加深对底层协议的理解,并带来乐趣。
- 关键引用:
- "Everyone should build their own... Otherwise it is hard to appreciate how much effort it goes into things that we take for granted."(作者 pdp)
- "This kind of project is so much fun and a great learning exercise... we really would benefit from a wider understanding of network protocols."(作者 mlhpdx)

主要观点二:生产环境中不建议自行构建,存在安全与复杂性风险
- 多数评论者认为,自行实现网络栈在安全性和可靠性上远不及成熟方案(如Linux TCP/IP栈),且易引入漏洞。
- 关键引用:
- "I would seriously recommend against building your own network stack for production use... Whatever you can do in reasonable amount of time is probably not that good compared to existing alternatives."(作者 Ekaros)
- "Looks at frankly staggering number of CVEs... 'Please don't'"(作者 PunchyHamster)

主要观点三:安全优势与风险并存,需权衡利弊
- 部分评论者指出,使用专有、非公开的栈可降低被攻击面,但协议层漏洞(如TCP/IP本身)无法通过替换实现解决。
- 关键引用:
- "There is a security advantage in not using popular technology stacks... If your stack is proprietary and bespoke... it's much harder to find vulnerabilities."(作者 znnajdla)
- "The real nightmare scenario is not just finding a vulnerability in the Linux network stack but finding vulnerabilities at the protocol level in TCP/IP itself or HTTP."(作者 znnajdla)

其他观点
- 有评论者预测未来代码将更多按需生成(JIT),以提升安全性(作者 dromologist)。
- 有评论者以历史案例(如香蕉单一栽培)类比技术单一化风险(作者 andai)。

平衡性总结:评论呈现明显分歧——一方强调学习价值与潜在安全优势,另一方则警告生产环境中的复杂性与漏洞风险。多数评论认可自行构建作为教育工具的价值,但反对用于实际部署。