首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 汽车 游戏 社会热点 开源推荐 医疗健康 归档 标签 关于

每个人都应该建立自己的网络堆栈

摘要

This article is currently an experimental machine translation and may contain errors. If anything is unclear, please refer to the original Chinese version. I am continuously working to improve the tra...

the and network stack this one Linux for DN42 DNet
2026-08-30 1 阅读 约7分钟阅读 uneven9434
分享:
字号:
本文目前是实验性机器翻译,可能包含错误。如有不明之处,请参阅中文原文。我正在不断努力改进翻译。这是“ISP@Home”系列的一个侧面条目,其中事物已正式进入模因领域。如果某些概念或背景感觉解释不充分,您可能需要先查看本系列之前的帖子。前言 想象一下这样的场景:有一天,一位神秘人物(或者可能是法学硕士)在主流 Linux 内核的网络堆栈中发现了一个 RCE 漏洞。考虑到 Linux 的使用范围如此广泛,这一缺陷将立即使整个互联网处于崩溃的边缘——每台联网主机都面临巨大的风险。这实在是太中心化了。所以我相信,在一个真正去中心化的网络中,每个人都应该实现自己独特的网络堆栈并使用它来访问互联网。这样,即使一个实现存在错误或漏洞,也不会导致整个网络瘫痪。好吧,我不能再板着脸了。事实上,当我在南京大学学习计算机网络时,我突然有一种想要编写自己的网络堆栈来娱乐的冲动。由于在 DN42 中没有发现足够的混乱,我决定更进一步,将我的自定义堆栈部署到 DN42 上,甚至有一天甚至部署到 IANA 上,提供实际的服务。 DNet 我当时确实写过一些关于这个项目(DNet)的博客文章,虽然我没有坚持很长时间:https://github.com/lyc8503/DNet-core 当时,它或多或少实现了以下目标: 在 Linux 上创建 TAP 设备并发送/接收以太网帧 解析以太网帧并处理 ARP 查找和响应 解析 IPv4 数据包并响应 ICMP 回显请求 发送和接收 UDP 数据包 最近,在废弃了四年之后,我再次拿起这个项目,修补了一些错误,并拼凑了一个几乎无法运行的 DNS 服务器,作为我的 DN42 域 42420167.xyz 的权威 DNS。现在,如果您从任何连接互联网的计算机运行 dig TXT sgp1.dn42.42420167.xyz,您将获得由我手工制作的网络堆栈直接提供的 DNS 响应: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #挖掘 TXT sgp1.dn42.42420167.xyz ; <<>> DiG 9.18.39-0ubuntu0.24.04.5-Ubuntu <<>> TXT sgp1.dn42.42420167.xyz ;;全局选项:+cmd ;;得到答案:;; ->>HEADER<<- 操作码:QUERY,状态:NOERROR,id:21546 ;;标志:qr rd ra;查询:1,答案:7,权限:0,附加:1 ;;选择伪节:; EDNS:版本:0,标志:; UDP:1232;;问题部分:;sgp1.dn42.42420167.xyz。在 TXT 中;;答案部分:sgp1.dn42.42420167.xyz。 20 IN TXT“IPv6 LLA:fe80 :: 167”sgp1.dn42.42420167.xyz。 20 TXT“公钥:8BKrEUrqba9mCzYHqWD2uTNtvrcYcKAls3vBQrY6dxE =”sgp1.dn42.42420167.xyz。 20 IN TXT“MP-BGP:已启用”sgp1.dn42.42420167.xyz。 20 IN TXT“扩展下一跳:已启用”sgp1.dn42.42420167.xyz。 20 IN TXT“Looking Glass:http://sgp1.dn42.42420167.xyz:5000/”sgp1.dn42.42420167.xyz。 20 IN TXT“ASN:4242420167”sgp1.dn42.42420167.xyz。 20 IN TXT "端点:sgp1.dn42.42420167.xyz:2xxxx(xxxx 是您的 ASN 的最后 4 位数字)" ;;查询时间:11 毫秒;;服务器:223.5.5.5#53(223.5.5.5) (UDP) ;;时间:2026 年 6 月 13 日星期六 22:22:39 CST ;; MSG SIZE rcvd: 397 如果您在 DN42 内,则可以通过 IP 172.20.42.224 直接向此堆栈发送任何内容,例如: ping 172.20.42.224 在我的上一篇博客文章中,我将所有 VPS 实例迁移到 NixOS,该实例使用纯 vivi 编码构建。但由于我实际上并不了解 Nix,它很快就变成了难以维护的混乱,在部署过程中随机崩溃。经过短暂的犹豫,我决定清除所有内容并返回 Debian。这次,我使用 pyinfra(基于 Python 的基础设施工具):lyc8503/infra 。在 Debian 上,我使用 Docker Compose 管理所有 DN42 服务(请参阅此处)。这使我能够使用 Docker 的网络命名空间隔离服务——每个容器都在“干净”的环境中启动,避免了重复部署造成的配置漂移的常见混乱。后记 好吧,就这样了——这篇文章的结束就像它开始时一样突然。只是快速展示我最新的巨魔项目,这次没有深入研究代码。最近,我感觉DN42的参与者太少了。网络流量大多只是 ICMP 和 BGP,没有运行真正的应用程序,没有太多空间进行新的恶作剧。除非后面有新的灵感,否则DN42系列大概就到此为止了~
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱