{"id":55,"date":"2026-04-13T18:22:26","date_gmt":"2026-04-14T02:22:26","guid":{"rendered":"https:\/\/satchnet.io\/?p=55"},"modified":"2026-04-13T18:26:42","modified_gmt":"2026-04-14T02:26:42","slug":"i-replaced-my-firewall-while-drunk-and-only-cried-once","status":"publish","type":"post","link":"https:\/\/satchnet.io\/?p=55","title":{"rendered":"I Replaced My Firewall While Drunk and Only Cried Once"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">So there I was, three whiskeys deep on a Monday night, staring at a ZimaBoard 2 like it owed me money.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"wp-block-paragraph\">My trusty Protectli with its ancient Celeron J3160 had served me well, but with 2Gbps fiber on the horizon, those 1GbE ports were starting to feel like dial-up. The ZimaBoard 2 promised dual Intel i226-V 2.5GbE NICs, an N150 processor that actually belongs in this decade, and a 6W TDP that wouldn&#8217;t heat my office like a space heater. The whiskey said &#8220;do it tonight.&#8221; The whiskey was wrong, but I listened anyway.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The install started smooth enough. Flash OPNsense to USB, boot it up, watch it recognize both interfaces like a good little BSD box. Then I did what any responsible sysadmin would do: I yanked all the cables from my production firewall mid-install and went full YOLO. No safety net. No fallback. Just vibes and alcohol. The config restore worked, the interfaces came up, WAN grabbed an IP, and I thought I was a genius. Then I noticed WiFi wasn&#8217;t working. Not &#8220;slow&#8221; or &#8220;intermittent&#8221; \u2014 just fully fucking dead. DHCP was being a little bitch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Turns out the ISC DHCP plugin decided it didn&#8217;t want to generate a config file. The error logs were helpful in that special way where they tell you exactly what&#8217;s wrong but not how to fix it. &#8220;Can&#8217;t open \/etc\/dhcpd.conf: No such file or directory.&#8221; Yeah no shit, that&#8217;s the problem. After an hour of increasingly creative troubleshooting \u2014 and another whiskey courtesy of DoorDash, because I have priorities \u2014 a plugin reinstall and reboot finally convinced OPNsense to do its one job. WiFi clients started connecting. Victory was mine.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But wait, there&#8217;s more! My Pixel Tablet decided this was the perfect moment to throw a tantrum. &#8220;Authentication problem. Check password and try again.&#8221; I know the damn password. I made a QR code for it. I&#8217;ve used this network for years. Turns out Android&#8217;s MAC randomization resets every time you forget a network, so the tablet kept showing up as a new device and getting confused. The fix? Manually set it to use the device MAC instead of a randomized one. For my home network. Where the only entity tracking me is my own Pi-hole. Thanks Google, very cool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The ZimaBoard 2 is now humming along at like 5% CPU, sipping power, waiting patiently for that 2Gbps fiber drop. The old Protectli is in the closet waiting for a second career as a travel router or eBay listing. DynDNS is updating to Cloudflare, all my static mappings are working, and the house hasn&#8217;t lost internet once since the migration. Total cost: one ZimaBoard, one mini DisplayPort adapter, and roughly half a bottle of whiskey. Was it the smartest way to spend a Monday night? Absolutely not. Would I do it again? Already planning the next upgrade. Cheers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>So there I was, three whiskeys deep on a Monday night, staring at a ZimaBoard 2 like it owed me money.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-55","post","type-post","status-publish","format-standard","hentry","category-networking"],"_links":{"self":[{"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/posts\/55","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/satchnet.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=55"}],"version-history":[{"count":3,"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/posts\/55\/revisions"}],"predecessor-version":[{"id":58,"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/posts\/55\/revisions\/58"}],"wp:attachment":[{"href":"https:\/\/satchnet.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=55"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/satchnet.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=55"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/satchnet.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=55"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}