在群晖虚拟机上安装 OpenWRT 来解决网络问题
之前我都是使用 OBABY 的教程 通过 CF 自建 Docker 镜像 🔗 来解决群晖上拉取镜像难的问题,可今天收到 Cloudflare 的邮件说请求超额了。
您好,
您已经超出了 Cloudflare Worker 和/或 Pages Functions 每天最多 100000 个请求的限制。
如果您不采取任何措施,您的最终用户可能会收到错误,直到 2025-05-01 at 00:00:00 UTC 重置此限制为止。
您可以通过在计划页面 🔗上将您的帐户升级到付费计划来恢复服务。 该级别的每月最低计费金额为 5 美元,超出 1000 万个请求后,每 100 万个请求 0.50 美元。
如果您在现有域之前使用 Worker,则可以将其禁用,或者在仪表板中将路由设置为失败时打开,来继续将请求传递到您的源服务器。
谢谢, Cloudflare 团队
查看日志得知,请求几乎全是来自这个自建的 Docker 镜像服务。再三考虑,决定重新部署 OpenWRT 来解决网络问题。
以下内容仅为个人笔记,方便查阅。
在群晖虚拟机上安装 OpenWRT
从官网上下载 OpenWRT
https://downloads.openwrt.org/releases/24.10.1/targets/x86/64/ 🔗
选择 generic-ext4-combined-efi.img.gz 🔗
解压 gunzip openwrt-24.10.1-x86-64-generic-ext4-combined-efi.img.gz
打开 Virtual Machine Manager -> 映像 -> 硬盘映像 -> 新增,将解压后的 img 文件添加进来。
新建虚拟机,导入 -> 从硬盘导入 -> 硬盘选择刚才添加的硬盘 -> 配置网络时进入高级选项,型号选择 e1000 -> 引导选择 uefi。
启动虚拟机,画面卡住时按回车 -> 修改 OpenWRT 默认管理页面地址,vi /etc/config/network
-> 修改 config interface 'lan'
模块下的 option ipaddr '10.10.10.88'
-> /etc/init.d/netwrok reload
-> 在浏览器上输入刚才的修改的 IP 访问 OpenWRT 的管理页面。
OpenWRT 没有初始密码,直接登陆后会提示设置密码 -> Interfaces -> lan -> 点击 Edit 按钮 -> 根据实际情况给接口设置网关 IPv4 gateway 与 Advanced Settings 选项卡里的 DNS,确保 OpenWRT 可以成功连接外网。
System -> Software -> Configure opkg -> 修改 /etc/opkg/distfeeds.conf
将 https://downloads.openwrt.org
修改成 http://mirrors.ustc.edu.cn/openwrt
src/gz openwrt_core http://mirrors.ustc.edu.cn/openwrt/releases/24.10.1/targets/x86/64/packages
src/gz openwrt_base http://mirrors.ustc.edu.cn/openwrt/releases/24.10.1/packages/x86_64/base
src/gz openwrt_kmods http://mirrors.ustc.edu.cn/openwrt/releases/24.10.1/targets/x86/64/kmods/6.6.86-1-af351158cfb5febf5155a3aa53785982
src/gz openwrt_luci http://mirrors.ustc.edu.cn/openwrt/releases/24.10.1/packages/x86_64/luci
src/gz openwrt_packages http://mirrors.ustc.edu.cn/openwrt/releases/24.10.1/packages/x86_64/packages
src/gz openwrt_routing http://mirrors.ustc.edu.cn/openwrt/releases/24.10.1/packages/x86_64/routing
src/gz openwrt_telephony http://mirrors.ustc.edu.cn/openwrt/releases/24.10.1/packages/x86_64/telephony
更多国内源可查看:https://zhuanlan.zhihu.com/p/632641259 🔗
Update lists -> Filter 处输入 chinese -> 安装 luci-i18n-base-zh-cn -> 安装完成后刷新管理页面。
如果是旁路由,网络 -> lan -> 点击编辑按钮 -> DHCP 服务器 -> 常规设置 -> 勾选忽略此接口 -> IPv6 设置 -> 禁用“RA 服务、DHCPv6 服务、NDP 代理”。
群晖虚拟机默认分配了 10G 的硬盘,这时我们可以通过终端、Xshell、Putty 等工具登录 OpenWrt,安装磁盘分区工具将这 10G 的硬盘挂载到 OpenWRT。
可选项:为了方便登陆,可将公钥添加到 OpenWRT 里,入口如下。系统 -> 管理权 -> SSH 密钥 -> 粘贴或拖动 SSH 密钥文件 -> 添加密钥。
使用 ssh root@10.10.10.88
登陆 OpenWRT
opkg update
opkg install cfdisk fdisk e2fsprogs block-mount blkid
安装完成后运行 cfdisk
进入磁盘分区,该工具有简单的图形界面,可通过键盘的方向键来选择,按回车确认。
通过上下键来选择 Free space,通过左右键选择 New,按回车确认将剩余空间进行分区;分区类型选择 primary,再次按回车确认;选择 Write 并按回车键写入新分区;输入 yes 按回车键确认;最后选择 Quit 按回车退出界面。
将新分区的文件系统格式化为 ext4
mkfs.ext4 /dev/sda3
重启 OpenWRT
reboot
浏览器打开 OpenWRT 管理页面,系统 -> 挂载点 -> 生成配置 -> 挂载点 -> 选择刚刚分区的 /dev/sda3
-> 编辑 -> 勾选已启用 -> 挂载点,作为根文件系统使用 -> 复制提供的命令并进行修改,以供后续操作时使用。
将命令集中的 mount /dev/sda1 /tmp/extroot
修改成 mount /dev/sda3 /tmp/extroot
mkdir -p /tmp/introot
mkdir -p /tmp/extroot
mount --bind / /tmp/introot
mount /dev/sda3 /tmp/extroot
tar -C /tmp/introot -cvf - . | tar -C /tmp/extroot -xf -
umount /tmp/introot
umount /tmp/extroot
再次重启 OpenWRT
reboot
再次进入 OpenWRT 管理页面后就可以看到磁盘空间变成 10G 了。
安装 PassWall
使用 SSH 登陆 OpenWRT 并创建临时的 ipk 文件保存目录
mkdir -p /tmp/myipk && cd /tmp/myipk
https://github.com/xiaorouji/openwrt-passwall/releases 🔗
一般来说需要下载三个文件,本体、汉化、依赖。如:
luci-19.07_luci-app-passwall_25.4.20-1_all.ipk
luci-19.07_luci-i18n-passwall-zh-cn_25.4.20-1_all.ipk
passwall_packages_ipk_x86_64.zip
在网络允许的情况下,可直接在 OpenWRT 通过 wget
来进行下载对应的文件,当然也可以在本地下载好对应的文件,然后通过 scp
工具传输到 OpenWRT。
在本地终端上使用以下命令进行传输
scp -O luci-19.07_luci-app-passwall_25.4.20-1_all.ipk root@10.10.10.88:/tmp/myipk/
scp -O luci-19.07_luci-i18n-passwall-zh-cn_25.4.20-1_all.ipk root@10.10.10.88:/tmp/myipk/
scp -O passwall_packages_ipk_x86_64.zip root@10.10.10.88:/tmp/myipk/
切换回 OpenWRT 的终端界面,使用 unzip
工具解压依赖包,请确保当前路径为 /tmp/myipk
# 若未安装
opkg update
opkg install unzip
unzip passwall_packages_ipk_x86_64.zip -d .
解压完成后使用 opkg install *.ipk
将本体、汉化与全部依赖一次性全部安装。如若安装过程提示 dnsmasq-full 与 dnsmasq 文件冲突,opkg remove dnsmasq --force-depends
删除 dnsmasq 后再 opkg install *.ipk
重新安装即可。
网络不好的话可通过以下方法解决:打开 https://ghproxy.link/ 🔗 查看 GitHub Proxy 最新地址,通过最新地址加仓库上的下载地址即可下载。如: