目前配置,先交代一下背景
如果你一直有跟着我的homelab系列文章,那你应该已经知道这个链路:MikroTik先接住互联网流量,处理防火墙和NAT,然后交给Traefik,由它路由到正确的Docker容器。这一直运行得很稳。但最近我深入研究了一下自己到底用的是哪款路由器,结果搞出了一场小小的身份危机。
等等,我的hEX到底是哪一款
大约两年前,我花了大约3000比索买了台MikroTik hEX。我一直挺确定自己买的是较新的"refresh"版本。结果发现并不是。我手上的其实是经典款RB750Gr3:双核、880MHz、256MB内存。而refresh版本(E50UG)用的是更新的ARM SoC,内存翻倍到512MB,MikroTik宣称根据配置不同能带来100%到134%的性能提升。两款当初卖的是同一个价位,现在回想起来有点刺痛。
不过,真正对我实际使用有影响的是这一点。refresh版本有更宽的内部背板,这意味着局域网内的流量可以完全留在交换芯片上,只有面向广域网的流量才需要经过CPU。而我现在这台经典款hEX没有这种分离,所以在NAT或防火墙规则负载较重的情况下,局域网吞吐量和广域网吞吐量会争抢同一批CPU周期。对于一个只跑几个自托管服务的家庭网络来说,这还不至于是致命问题,但它解释了为什么当好几个服务同时被访问时,我会感觉到某种迟滞。
选项一:内置WiFi模块的MikroTik
目前我的WiFi完全不是由MikroTik处理的。我用的是一个TP-Link接入点,再加一个信号扩展器来覆盖全屋。它基本能用,但有一个真实存在的问题:当我连到扩展WiFi的时候,没法访问Immich。Immich跑在和我的Traefik代理不同的机器上,而扩展器桥接流量的某种方式,把这条路径给破坏了。正常情况下,我会用之前修复hairpin NAT的方法,也就是DNS覆写来解决,但处于扩展模式下的TP-Link扩展器不允许我设置它自己的DNS服务器。所以这里没有变通方案,纯粹就是硬件本身的硬性限制。我要么在使用那项服务时避开扩展网络,要么就整套方案换掉。
一台带内置WiFi模块的MikroTik设备,能让我把WiFi和防火墙合并到一台设备上,一张路由表,一个流量走向的唯一可信来源。到那个时候,DNS本来就由MikroTik自己处理,这整类问题就不存在了——路径中间也不再有扩展器要跟你对着干。缺点是价格。这类设备明显比一台普通有线hEX贵不少,而且我等于是在为一项功能(长距离WiFi覆盖)花钱,而这项功能通常一台专用接入点反而做得更好。
选项二:干脆拥抱千兆
这个选项在纸面上没有我一开始以为的那么令人兴奋,主要是因为在权衡这件事的过程中,我才发现自己现在这台hEX本来就自带5个千兆以太网口。所以问题从来都不是"要不要拿到千兆端口",而是我能不能真正把它们用到满负荷。老实说,答案是:在我的局域网内部,千兆确实有用(大文件传输、Immich同步照片、机器之间的备份),但在广域网这一侧,我的PLDT套餐上限只有500Mbps,所以那部分带宽余量始终只在本地才有意义。这不是一条浪费的升级路径,只是它带来的好处比听起来要窄一些。如果我真走这条路,那真正的重点其实是refresh版本更好的内部交换能力,而不是"拿到"我技术上其实已经有了的千兆。
选项三:迷你主机加OPNsense
这是我一直反复回来考虑的选项,主要是因为我想学它,而不是严格意义上"需要"它。这个想法是把MikroTik从边缘防火墙的位置退役,换成一台跑OPNsense的小型专用主机。
老实说,我目前还完全没有OPNsense的实操经验,所以这与其说是计划,不如说更像是好奇心。我知道它在概念上处理NAT和防火墙的方式和MikroTik类似,但我得从零开始重新学一整套界面,重新搞懂端口转发、防火墙规则,大概还得再经历一遍某种换了名字的hairpin NAT式问题。我也不确定Traefik能不能合理地和OPNsense跑在同一台机器上,还是像现在这样放在自己独立的机器上更好。这一切都得等我真正装上去、开始点来点去之后才能真正搞明白。
目前落在哪个方向
这里没有什么急事,不过通过扩展WiFi访问Immich这个问题,比我一开始以为的更真实——因为不换硬件的话,确实没有真正的解决办法。在这三个选项当中,OPNsense迷你主机这条路是我真正想去尝试的,主要是为了那条学习曲线,尽管一台支持WiFi的MikroTik能更直接地解决Immich的问题。最坏的情况下,我就把MikroTik留作备用防火墙,把这整件事当成一个周末项目,而不是一次网络迁移。