极空间无法 Docker 运行 OpenWrt 主路由拨号
写这篇文章的目的纯属留作记录,因为网上找不到相关的文章,枉我折腾半天,希望其他人不会重蹈覆辙。
月初,趁着 618 的活动下单了“心念已久”的 NAS - 极空间 Z4Pro。之所以在购物车中存在了这么久,因为我之前是妥妥的网盘党,长期使用 iCloud 的家庭存储。去年底换了安卓手机之后,照片备份、文档存储就成了一大问题:望着 2T 的 iCloud 也用不上,即使还有 80% 多的剩余空间。换到 NAS 一周后,经过一番探索后,目前使用感受不错,后期我会再开一篇写写我的使用方法。
Z4Pro 这台机器的 CPU 还算不错 - N97,相比 N100 来说主频还会更高一些。我也就动了信息,想让那台软路由小主机退休,将 Z4Pro 作为 All in One 来使用,双网口要好好用起来。不过虚拟机的是不考虑的,太重。还好,Z4Pro 支持 Docker,性能上的损耗也能接受。
网上这方面的文章太少,大多都是做旁路由来使用,官方有篇 文章 也是只是路由模式,没有做拨号。
整个操作不算麻烦,我也 folk 了 SuLingGG OpenWrt-Docker 准备定制一个 OpenWrt 镜像。容器部署完成后,也顺利进入了 OpenWrt。在配置 WAN 口做 PPPoE 拨号后,发现 WAN 口没有 MAC 地址信息也没有公网 IP 的分配。
查看日志发现 pppox 模块正常加载,但提示找不到设备 /dev/ppp
。
Sun Jun 9 12:09:08 2024 daemon.err insmod: module is already loaded - pppox
Sun Jun 9 12:09:08 2024 daemon.err insmod: no module folders for kernel version 5.19.17-z4pro-generic found
Sun Jun 9 12:09:08 2024 daemon.notice netifd: WAN (11003): uci: Entry not found
Sun Jun 9 12:09:08 2024 daemon.notice netifd: WAN (11003): sh: out of range
Sun Jun 9 12:09:08 2024 daemon.info pppd[11013]: Plugin pppoe.so loaded.
Sun Jun 9 12:09:08 2024 daemon.info pppd[11013]: PPPoE plugin from pppd 2.4.9
Sun Jun 9 12:09:08 2024 daemon.err pppd[11013]: Couldn't open the /dev/ppp device: No such file or directory
Sun Jun 9 12:09:08 2024 daemon.err pppd[11013]: You need to create the /dev/ppp device node by executing the following command as root: mknod /dev/ppp c 108 0
Sun Jun 9 12:09:08 2024 daemon.notice netifd: WAN (11013): /usr/sbin/pppd: You need to create the /dev/ppp device node by
Sun Jun 9 12:09:08 2024 daemon.notice netifd: WAN (11013): executing the following command as root:
Sun Jun 9 12:09:08 2024 daemon.notice netifd: WAN (11013): mknod /dev/ppp c 108 0
进入容器根据提示执行命令 mknod /dev/ppp c 108 0
并重启 WAN 口,仍然不工作。再回看日志就发现主要问题了:内核缺少 PPP 的支持。
Sun Jun 9 12:10:39 2024 daemon.err pppd[32584]: Couldn't open the /dev/ppp device: Operation not permitted
Sun Jun 9 12:10:39 2024 daemon.err pppd[32584]: Sorry - this system lacks PPP kernel support
Sun Jun 9 12:10:39 2024 daemon.notice netifd: WAN (32584): /usr/sbin/pppd: Sorry - this system lacks PPP kernel support
Sun Jun 9 12:10:39 2024 daemon.notice netifd: WAN (32584):
Sun Jun 9 12:10:39 2024 daemon.notice netifd: Interface 'WAN' is now down
极空间的系统一直未对用户开放 ssh,因此也就没办法手动添加 PPP 的支持了,PPP 内核支持对于 PPPoE 网络接口配置是必需的!
PPP(Point-to-Point Protocol)是一个数据链路层通信协议,用于通过串行连接(例如电话线、光纤线路等)建立直接的点对点连接。PPP 常用于拨号互联网接入,广泛应用于各种网络接口和传输介质。
PPP 主要功能:
- 链路建立和维护:提供链路建立、维护和拆除机制。
- 认证:支持多种认证协议(如 PAP 和 CHAP)。
- 数据压缩:支持数据压缩协议以提高传输效率。
- 错误检测:提供错误检测机制以确保数据完整性。