用树莓派搭建你自己的拨号ISP
摘要
关于使用树莓派模拟拨号ISP的指南,通过Wi-Fi连接复古Mac电脑,并模拟拨号速度。
<p>去年,我阿姨让我把她那台<a href="https://everymac.com/systems/apple/ibook/specs/ibook.html">原版Tangerine iBook G3 clamshell</a>加入我的老Mac收藏<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>。</p>
<figure class="insert-image"><img src="https://www.jeffgeerling.com/blog/2026/build-your-own-dial-up-isp-with-a-raspberry-pi/pi-isp-ibook-hero.jpeg"
alt="iBook G3通过WiFi以拨号上网方式浏览复古网页" width="700" height="auto">
</figure>
<p>它配备了一张AirPort卡——苹果推出的售价99美元的附加组件,开启了Wi-Fi时代。iBook G3是第一款内置Wi-Fi天线的消费级笔记本电脑,也是迄今为止让电脑接入802.11无线网络最便宜的方式。</p>
查看缓存全文
缓存时间: 2026/05/16 03:36
# 用树莓派搭建你自己的拨号 ISP
来源:https://www.jeffgeerling.com/blog/2026/build-your-own-dial-up-isp-with-a-raspberry-pi/
去年,我的阿姨让我把她那台原版Tangerine iBook G3 贝壳机(https://everymac.com/systems/apple/ibook/specs/ibook.html)加入我的老Mac收藏(https://www.jeffgeerling.com/blog/2026/build-your-own-dial-up-isp-with-a-raspberry-pi/#fn:1)¹。
[图片] iBook G3 通过 WiFi 无线网络访问拨号互联网,浏览复古网页
它配备了一张 AirPort 卡——这是苹果公司推出的、售价 99 美元的附加组件,开启了 Wi-Fi 时代。iBook G3 是第一款内置 Wi-Fi 天线的消费级笔记本电脑,也是*迄今*最便宜的(https://www.eetimes.com/the-secret-success-of-steve-jobs-wireless-internet/)让计算机接入 802.11 无线网络的方式。
我在今天的视频(嵌入在下方)中更详细地介绍了苹果 AirPort 和 iBook G3 的历史,但我一直想做的一件事是在本地模拟一个拨号 ISP。
还有什么比通过 Wi-Fi 来实现更好的方式呢?等等,*啥*?
我们今天所熟知的 Wi-Fi 通常路由光纤或有线互联网连接,带宽以兆比特甚至*千兆比特*为单位。
但 1999 年(AirPort 发布时)的 Wi-Fi 最高速度只有 11 Mbps。在现实条件下,实际速度还要减半。
[图片] 苹果 AirPort 基站,缺少了苹果标志性的叶子
很难找到一片完整的苹果叶子的 AirPort 基站。
AirPort 基站配备了一个 10base-T 以太网口(供少数拥有宽带的用户使用),以及一个 56K 拨号调制解调器。1999 年,大多数使用无线网络的人仍然在使用 AOL 或其他拨号 ISP。
我多年前买过一个二手的第一代 AirPort 基站,用于一个从未实现的无关项目,所以我决定在今年的#MARCHintosh(https://marchintosh.com/)挑战自己,看看是否能用自己的树莓派运行一个本地拨号 ISP——然后让拨号速度与 802.11b Wi-Fi 合二为一!
## 硬件
POTS(普通老式电话系统)模拟起来很棘手。你不能简单地把一个调制解调器插到另一个上。因此,除了用于“树莓派 ISP”的调制解调器外,我还需要一个电话线路模拟器。
[图片] Pi ISP 硬件 - 树莓派、StarTech.com 56K 调制解调器、Viking DLE-200B
> 旁注:我也可以自己搭建一个小型 PBX(https://en.wikipedia.org/wiki/Business_telephone_system),使用一些 VoIP 硬件,但这是为了将来的项目……我已有计划 :)
我选择了以下硬件来搭建我的 ISP:
- 单板计算机 (40 美元):树莓派 3、4 或 5(https://www.jeffgeerling.com/blog/2026/build-your-own-dial-up-isp-with-a-raspberry-pi/#fn:2)²
- 电话线路模拟器 (120 美元):Viking DLE-200B 双向线路模拟器(https://amzn.to/3NnJETN)
- 调制解调器 (45 美元):StarTech.com 56K USB 拨号调制解调器(https://amzn.to/3NJMeTZ)
你可能还需要几根电话线来连接所有设备。将 USB 调制解调器插入单板计算机,然后用一根电话线连接调制解调器和电话线路模拟器。
然后将另一台计算机(我这里用的是 iBook G3)连接到电话线路模拟器的另一个电话插孔。
我将拨动开关 #3 拨到“UP”位置以降低音频音量,因为这样调制解调器可以达到稍好的速度。
使用此设置,假设你没有更改 DLE-200B 上的其他默认设置,任何调制解调器摘机都会使另一条线路振铃若干次(直到远端接听或忽略该呼叫)。
[图片] Pi ISP 硬件 - 包括老式电话
如果你想像我一样搞点花样,可以加入一个贝尔式电话(https://amzn.to/4vabe7V)(如上图所示)。将“线路”插孔插入电话线路模拟器,将“数据”插孔插入树莓派的调制解调器。
使用此设置,每当计算机呼叫 ISP 时,任何振铃都会在电话上发出响亮、*物理*的铃声,然后 ISP 调制解调器才会接听(对调试很有用!)。
## 软件
在树莓派上,我们将使用两个 Linux 工具:`mgetty` 和 PPP:
- `mgetty`(“调制解调器获取 tty”)将处理通过调制解调器的呼叫,并与远程调制解调器进行协商。连接建立后,它会将连接移交给 PPP。
- PPP(点对点协议)将验证远程计算机,然后配置两个计算机之间的网络桥接,使远程计算机表现得就像在本地网络上一样。
我不会在这里深入所有细节,而是引导你查看我的 Pi ISP 项目(https://github.com/geerlingguy/pi-isp),其中包含一个为你配置一切的 Ansible playbook。
在该存储库中,我还推荐了两个其他资源,我从中学到了很多关于 Linux 下拨号过程的知识:
- Doge Microsystems 的拨号服务器 Wiki(https://dogemicrosystems.ca/wiki/Dial_up_server)
- Webmin 的 PPP 拨入服务器文档(https://webmin.com/docs/modules/ppp-dialin-server/)
如果你克隆我的 `pi-isp` 项目,然后在你的树莓派(或任何运行 Debian 的计算机)上运行 Ansible playbook,它应该会自动开始侦听线路上的振铃——假设你已连接调制解调器。
如果你从另一个调制解调器拨入(不需要电话号码,如果你像我一样使用 DTE-200B——只需等待振铃),你可以用 `sudo journalctl -fu mgetty` 监控 PPP 守护进程的连接协商:
```
Mar 26 15:32:35 dialpi pppd[15926]: PAM Account OK for dial
Mar 26 15:32:35 dialpi pppd[15926]: pam_unix(ppp:session): session opened for user dial(uid=1001) by (uid=0)
Mar 26 15:32:35 dialpi pppd[15926]: PAM Session opened for user dial
Mar 26 15:32:35 dialpi pppd[15926]: user dial logged in on tty ttyACM0 intf ppp0
Mar 26 15:32:35 dialpi pppd[15926]: PAP peer authentication succeeded for dial
Mar 26 15:32:35 dialpi pppd[15926]: Peer dial authenticated with PAP
```
你甚至可以停止 `mgetty` 并运行 `minicom -D /dev/ttyACM0` 来手动与调制解调器交互,使用 AT 命令(https://en.wikipedia.org/wiki/Hayes_AT_command_set),例如用 `ATA` 来接听呼叫。
## 33.6 kbps 的互联网
但我在*大多数*情况下都能以 33.6K 的速度建立连接;有时它只是不能正确同步,这可以通过在 `init-chat` 中使用 `AT+MS` 命令调整允许的最高速度来解决(我的 Ansible playbook 配置中有一个便利的设置)。
[TODO: 图片]
这是你在 POTS 上能达到的最高速度——要达到 56K,你必须使用数字线路,即使那样……The Serial Port 一直在使用顶级的复古电话系统设备搭建数字 ISP(https://www.youtube.com/watch?v=GQ0KTtMQ_8s),他们也很难突破 44K!
你可能会在 28.8K 或更低的速度下获得更稳定的连接。
但 33.6K 应该足以重温 90 年代末的拨号体验了:
[图片] 速度:2.8 KB/秒
而且,天哪,2.8 KB/秒……我现在想起了那些时候,我会等到睡觉时间,从我的计算机拨号,然后触发某个共享软件的下载让它整夜运行。白天太冒险了(https://www.jeffgeerling.com/blog/2026/build-your-own-dial-up-isp-with-a-raspberry-pi/#fn:3)³,因为有人(通常是我妹妹)会拿起电话给朋友打电话。大多数下载在中断后都无法优雅地恢复!
[图片] 调制解调器连接时拿起电话
在调制解调器连接到互联网时拿起电话是一个冒险的举动。
在旧计算机上,几乎所有现代网站(包括你现在正在阅读的这个)都无法加载。旧版浏览器如 Internet Explorer 或 Netscape Communicator 没有最新的 TLS 证书——更不用说使用它们所需的加密支持了。
但我的 Pi ISP 有一个秘密武器:Macproxy Classic(https://github.com/rdmark/macproxy_classic)。这是一个本地的“代理”服务器,位于旧计算机和现代互联网之间,将网站翻译成复古计算机可以处理的更基本的结构。
该代理去掉了现代 CSS、JavaScript 和 HTML 标签,并输出旧浏览器和较慢计算机可以渲染的内容。
我只是在 Internet Explorer 5 中打开了代理支持:
[图片]
现在我可以在一台 1999 年的 iBook 上浏览我自己的网站,运行着 Internet Explorer 5:
[图片]
但我们只是通过直接的拨号连接浏览互联网,iBook 被拴在电话线路模拟器上。这很有趣,但*更*有趣的是实现*完全无线*。
## 无线拨号
我想我这次冒险的部分理由是花费超过 200 美元翻新这款 iBook 的电池,让它恢复到最初的 6 小时以上续航:
[图片]
与现代笔记本电脑不同,许多世纪之交的“砖头”使用的是全尺寸 18650 电池芯,这使得它们出人意料地容易修复——假设你能切开塑料外壳,并且你有一个电池点焊机。
我不想自己动手,尤其是因为我不喜欢处理锂电池的起火风险。所以我把电池寄出去翻新了(https://github.com/geerlingguy/retro-computers/issues/29)。
这并不便宜,但对我来说是值得的,为了体验 1999 年使用第一款 Wi-Fi 笔记本电脑的感觉——而不被 iBook 的悠悠球电源适配器(https://ibook-clamshell.com/index.php/en/trivia/474-yoyo-power-adapter-m7332-distinctive-features)束缚。
我得以测试 iBook 数小时,这很有用,因为我测试的旧 AirPort 基站似乎存在稳定性问题——尤其是在我连续插电一个多小时的时候。也许又是乔布斯追求外形而忽视散热的另一个牺牲品(https://www.jeffgeerling.com/blog/2026/build-your-own-dial-up-isp-with-a-raspberry-pi/#fn:4)⁴。
[图片]
我在本文前面嵌入的视频中更详细地介绍了,但苹果很早就做好了 AirPort 管理实用程序——事实上,在整个 AirPort 产品线中,他们保持了我认为是迄今为止最好的接入点管理 UI。
[图片] AirPort 管理实用程序的 WiFi 设置
不知为何,我插上的每个 ASUS、Netgear 等无线设备都有 50 个不同的菜单,要弄清楚如何更改某些 DNS 设置简直是一片混乱。苹果以直观的方式组织了重要设置,可能只有 Ubiquiti 的设备才能匹敌(我对此经验不多)。
我最后摆弄的是 Macproxy Classic 的 WayBack Machine 扩展(https://github.com/rdmark/macproxy_classic?tab=readme-ov-file#wayback-machine):你可以访问 web.archive.org(在代理激活时),然后为你的浏览器启用一种“时间机器”。选择一个日期,然后浏览任何 URL,扩展将检索该 URL*在历史中该日期的版本*,只要它在 WayBack Machine 中存在。
例如,1999 年 7 月末的苹果:
[图片] iBook G3 上加载 Apple.com,仿佛回到 1999 年
作为对我新无线拨号设置的最终测试,我将一张旧 Lucent WaveLAN PC 卡(与为原始 AirPort 基站供电的卡相同)插入我从另一位阿姨那里继承的 PowerBook G3(她们似乎都喜欢 Mac):
[图片] PowerBook G3 Wallstreet 上的 Lucent WaveLAN PC 卡用于 WiFi
它效果很好,并且能拥有当时“专业”级苹果笔记本电脑提供的额外屏幕空间感觉很不错。
## 结论
人们有时会问我为什么做这些“无意义”的项目。一部分当然是怀旧。也许是为了证明接受所有这些旧设备是值得的……
但一个很大的原因是它让我不断学习。我从未接触过 Linux 中的 mgetty 或 PPP,看到调制解调器握手在软件层面的工作方式,或者 `ppp0` 网络连接是如何建立的,帮助我更好地理解了即使是像 VPN 这样的现代连接。
此外,我还了解了调制解调器如何使用 QAM(https://en.wikipedia.org/wiki/Quadrature_amplitude_modulation)——这反过来又加深了我对现代 WiFi 如何利用正交幅度调制为我们提供*千兆*带宽的理解,这是对多年前开发技术的扩展。
相似文章
我打造了一个袖珍Macintosh
使用运行Pico Micro Mac固件的Raspberry Pi Pico打造了一个袖珍Macintosh,具备VGA输出和USB键盘/鼠标。
HomeLab #1: MikroTik 作为家庭路由器
实用指南:设置MikroTik路由器用于家庭实验室,涵盖如何识别ISP连接类型(IPoE与PPPoE)以及WAN IPv4地址(公网与CGNAT/DS-Lite),以便正确配置路由器。
Raspberry Pi Pico W 作为 USB Wi-Fi 适配器
一个将 Raspberry Pi Pico W 转变为 USB Wi-Fi 适配器的项目,提供了一种通过 USB 为设备添加无线连接的简单方法。
在树莓派上托管网站
技术教程,介绍如何在树莓派上自托管网站,涵盖端口转发、DNS 配置、使用 Caddy 作为反向代理、PM2 进行 Node.js 进程管理,以及使用 GitHub Actions 实现 CI/CD 自动化。
如何在客厅中通过静态IP自托管服务器
一份使用L2TP隧道和静态IP在家中自托管服务器的指南,绕过CGNAT等ISP限制。