契机
市面上的云服务器,但凡把配置拉上去点,费用便相当吓人。(尤其是对咱这种没什么盈利项目的小站长而言)
若自己组装一台服务器,同等配置下,价格更低廉,隐私性、可控性也大大提升。
自己组装,意味着需要花费心思挑配件、需要动手组装,需要为服务器交电费。抛开这些不谈,光 “公网访问困难” 这一条,其实就足够劝退我了。
尤其是,本人在过去一直以为,Frp 是唯一一种让设备可被公网访问的途径。
常见的第三方 Frp 服务提供商(诸如 Sakura Frp),他们的免费套餐往往带宽低(差不多 1MB),节点稳定性也比较一般,各种限制也相对较多。自己建 Frp Server 吧,国内云服务器带宽不够,国外的云服务器延迟又高,不宜将其作为长久之计。
那么,有什么方案能兼顾 “价格优势” 和 “公网可访问性” 呢?
前几天好巧不巧,先是听说迷你主机(准系统)现在的价格很便宜,大概五六百。又听说光猫改桥接,再关闭路由器防火墙,即可得到一个能被外网访问的 IPv6 地址。理论可行,开始实践!
关于迷你主机
极摩客 G3 介绍
极摩客 G3,准系统的话是 599 元。多平台比价,京东最便宜,579 元到手。
英特尔 12 代 N100 处理器,4 核 4 线程,DDR4 3200 Mhz 最高 16 GB,两个硬盘位,支持 Wi-Fi 6,单网口。
优先考虑的就是功耗(电费要是太贵的话还不如直接买云服务器),N100 功耗大约在 6W-15W,电费肯定是非常 ok 的。
另外都迷你主机了,也没什么需要动手组装的地方,从各方面来看都很完美。
加装了一根 8 GB 的笔记本内存和 256 GB 的固态,全部加起来也就八百块左右,性价比可以的。
制作 Ubuntu 启动盘
在 Ubuntu 官网 下载想要的镜像。我这里选择的是 24.04 LTS 桌面版。
为什么下桌面版?因为考虑到可能会有使用图形化界面的需求(孩子比较傻,不会太多命令,大佬轻喷)
桌面版可以通过命令在 图形化界面
和 命令行
之间切换:
# 切换到命令行界面
sudo systemctl set-default multi-user.target
# 切换到图形界面
sudo systemctl set-default graphical.target
打开 Rufus,选取对应镜像文件,直接点刷入,其它设置不用动,过一会就完事了。
安装 Ubuntu 系统
插上电源线、有线键盘和鼠标,狂按 Esc
进 BIOS。
我一开始用的无线键鼠,一直识别不到,换了一套有线键鼠就能识别到了。
进去之后,打开 Boot
菜单,设置 USB Device
为第一启动项。
稍后的安装步骤都挺简单,点几下就完成了。
关于公网
IPv4 的资源很稀缺这不必说,不掏点银子去拉专线是不行的,而且运营商会封 80 和 443 端口。
IPv6 不仅多,而且似乎没有封 80 和 443 端口。这几年随着 IPv6 的推广发展,就算是纯 IPv6 服务器也能有一个尚可的体验。
光猫改桥接
改桥接是第一步,也是最重要的一步。
之前用的联通宽带,师傅不给改桥接就算了,还死活不愿意给超级密码。
最近合约到期,换了移动的宽带。师傅也没问太多,光猫的超密非常爽快就给我了,师傅在他们内部 App 上输入户主手机号,就可以直接查到宽带的超级密码,包含一个临时超密和一个永久超密。
有了超密,接下来都好办。访问 192.168.1.1
进入光猫管理后台,账号是 CMCCAdmin。当然,账号密码都以师傅告诉你的为准。
进来之后,左侧菜单依次选择 网络
– 宽带设置
,选中第二个名为 2_INTERNET_B_VID_200
的连接,然后把连接模式从 Route
改成 Bridge
。改完就可以退出光猫了。
图中第一条 TR069 是移动的监控模块,也用于远程下发配置。第三条 OTHER 应该是给 IPTV 留的,如果家里有办 IPTV,改完桥接可能会导致看不了电视直播。
网上搜了一番,看不了电视这茬似乎也有办法解决。仍在研究中。
务必注意:改每一项设置前,最好截图原先的设置,或者备份光猫配置文件。
改完之后,再登录你家路由器的后台,从 DHCP
改为 PPPoE
,也就是让路由器自己负责拨号上网。
账号一般是户主手机号,密码一般是六位数,可以试试 手机号后六位
、010086
、123456
,实在忘了也可以打运营商电话问,这个一般都会告诉你的。另外手机营业厅似乎也可以在线重置。
改完之后保存,等一分钟,路由器这边应该会显示拨号成功,这时候基本就大功告成了。
这时候无法访问 192.168.1.1 是正常的,如果还需要再进光猫管理后台,那就再把路由器改回 DHCP。
关闭 IPv6 防火墙
我这边用的是小米路由器,DMZ
、端口转发
开了又关,总是没法从外网访问这台迷你主机。最后只关了个 IPv6 防火墙
就神奇般的解决了。
如果没有这个开关,就去网上搜搜你家路由器的型号。不过其它品牌的路由器应该比小米更好折腾。
查看公网 IPv6 地址
ssh 连接到迷你主机,输入命令 ip addr show
得到当前的 IPv6 地址,会输出长长一段,找到带有 scope global temporary dynamic
左边的这一串,看图中红框,这就是这台迷你主机的公网地址。
验证可访问性
搭好相关网站服务后,在浏览器地址栏输入 http://[你的 IPv6 地址]
回车,如果能访问到则说明大功告成。
IPv6 地址必须包括在英文方括号内。
DDNS
公网也有了,但毕竟是动态的。这时候就要引入 DDNS 了,让你的访问更优雅。
插一句,移动 IPv6 地址的租期似乎还挺长,好几天才变一次。
路由器自带的 DDNS 就那么几个选择,根本没法用。所以一开始我想了一个很蠢的办法:写一个定时任务脚本,每隔 5 分钟检测网卡 IP 变化,有变化就通过 SMTP 发送新 IP 到我的邮箱。
现在想起来还是很蠢,毕竟要人工去改解析,特别麻烦。
部署 DDNS-GO
然后就发现了 DDNS-GO 这个项目,支持多家 DNS 服务商,能够直接帮你修改对应的解析记录。这真是极好的。
部署起来也比较方便,支持直接下载和 Docker 两种部署方式,按 GitHub 的指引,很简单就搞定了,不再赘述。唯一需要提一嘴的就是,国内主机拉取不了 Docker 镜像,比较恶心。
最终还是按第一种部署方式(下载压缩包 – 解压 – 赋予执行权限 – 执行),然后即可在 9876
端口访问它的 Web 界面。
值得一提的是,DDNS-GO 还支持多家 Webhook 通知。比如我这里设置了一个飞书机器人:
IPv6 地址发生变化时,会通过机器人向我发送通知:
总结
至此,一套配合 DDNS 搭建公网 IPv6 服务器的方案就正式完成了。
后续打算配合 CDN 进一步拓展可玩性,目前遇到的问题是,DNS 解析有 DDNS,但 CDN 回源似乎没有 “动态回源” …
尚在慢慢把玩探索中,欢迎大佬批评建议~