<?xml version="1.0" encoding="utf-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>SIGKILL</title><link>https://sigkill.no/</link><description>An independent corner of the internet. Notes on Unix, networks, and things figured out along the way.</description><language>en-US</language><copyright>cr4sh0v3rrid3 (CC BY 4.0)</copyright><managingEditor>cr4sh@sigkill.no (cr4sh0v3rrid3)</managingEditor><atom:link href="https://sigkill.no/index.xml" rel="self" type="application/rss+xml"/><item><title>OpenBSD router in a hurry!</title><link>https://sigkill.no/blog/openbsd-router/</link><guid>https://sigkill.no/blog/openbsd-router/</guid><pubDate>Fri, 30 Aug 2024 00:00:00 +0000</pubDate><author>cr4sh@sigkill.no (cr4sh0v3rrid3)</author><description>&lt;h2 id="how-i-got-myself-into-this-situation"&gt;How I got myself into this situation&lt;/h2&gt;&#10;&lt;p&gt;My old router decided to migrate into the eternal life as e-waste the other day. It completely died; not even showing signs of life on the console port! For over 8 years it had been serving internet for me and my wife more or less 24/7, so it probably felt it was time to retire after a long and prosperous life of packet shuffling.&lt;/p&gt;</description><content:encoded>&lt;h2 id="how-i-got-myself-into-this-situation"&gt;How I got myself into this situation&lt;/h2&gt;&#10;&lt;p&gt;My old router decided to migrate into the eternal life as e-waste the other day. It completely died; not even showing signs of life on the console port! For over 8 years it had been serving internet for me and my wife more or less 24/7, so it probably felt it was time to retire after a long and prosperous life of packet shuffling.&lt;/p&gt;&#10;&lt;p&gt;The, now dead, router was a PC Engines APU4C4, which I bought from teklager.se. For the duration of its life it ran pfSense, which I had lots of issues with the entire time. If it weren&amp;rsquo;t for the fact that downtime would affect my wife as well, I would have installed something else a long time ago. But I digress.&lt;/p&gt;&#10;&lt;p&gt;I was luck this time since the router died while my wife was gone on a work related trip. That meant that I had a bit over one day to fix something new. Now, the challenge in this case was that my network topology is rather complicated compared to the &amp;ldquo;normal&amp;rdquo; networks found in the average home. I have taken the time to segment the network, by creating segments for WLAN, the servers, IoT and a subnet for even less trusted devices than the IoT subnet&amp;hellip; As the wise and experienced network administrator I am I had of course not stored a backup anywhere accessible!&lt;/p&gt;&#10;&lt;p&gt;So, figuring out what VLAN IDs I had used became a rather annoying challenge. Luckily I had most of the information available on a old Cisco switch I hadn&amp;rsquo;t gotten around to throw away.&lt;/p&gt;&#10;&lt;h2 id="the-temporary-solution"&gt;The temporary solution&lt;/h2&gt;&#10;&lt;p&gt;I found an old Lenovo T480s laying around that I ended up installing OpenBSD on. Since that machine only had one network port I had to use a USB-C hub with an additional port. This part, luckily, worked right out of the box without any issues.&lt;/p&gt;&#10;&lt;p&gt;To get this to work I needed:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A egress interface, axen0, connected to the cable modem for internet routing&lt;/li&gt;&#10;&lt;li&gt;A local interface, em0, where all the VLANs live&#10;&lt;ul&gt;&#10;&lt;li&gt;VLAN 120 - the server subnet&lt;/li&gt;&#10;&lt;li&gt;VLAN 130 - the WiFi subnet&lt;/li&gt;&#10;&lt;li&gt;VLAN 140 - the IoT subnet, used for both wired and wireless clients&lt;/li&gt;&#10;&lt;li&gt;VLAN 150 - the alarm system; completely isolated from everything else&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;This all boils down to:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Configuring all the interfaces &lt;code&gt;/etc/hostname.[axen0|em0|vlan120|vlan130|vlan140|vlan150]&lt;/code&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Only the egress interface would be configured with autconf to recieve it&amp;rsquo;s IP, route etc from my ISP&lt;/li&gt;&#10;&lt;li&gt;All the other interfaces will be have a static configuration&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Configure the dhcpd service to issue leases to clients in the network&lt;/li&gt;&#10;&lt;li&gt;Configure pf with some sane rules&#10;&lt;ul&gt;&#10;&lt;li&gt;VLAN 120 should be allowed to talk to everything&lt;/li&gt;&#10;&lt;li&gt;VLAN 130 should be allowed to talk to everything&lt;/li&gt;&#10;&lt;li&gt;VLAN 140 should only be allowed to talk to specific services on VLAN 120&lt;/li&gt;&#10;&lt;li&gt;VLAN 150 should not be allowed to talk to anything&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;Bonus: after getting everything up and running we want IPv6 support!&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;/etc/hostname.axen0&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;inet autoconf&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;/etc/hostname.em0&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;inet 10.0.0.1 255.255.255.0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;up&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;/etc/hostname.vlan120&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;vlan 120 vlandev em0 &#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;inet 192.168.1.1 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;/etc/hostname.vlan130&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;vlan 130 vlandev em0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;inet 10.0.1.1 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;/etc/hostname.vlan140&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;vlan 140 vlandev em0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;inet 10.0.4.1 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;/etc/hostname.vlan150&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;vlan 150 vlandev em0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;inet 10.0.5.1 255.255.255.0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Then to apply these changes, we issue the following command:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ sh /etc/netstart&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Then /etc/dhcpd.conf&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;# Globals&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;option domain-name &amp;#34;sigkill.no&amp;#34;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;option domain-name-servers 192.168.1.2;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;default-lease-time 600;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;max-lease-time 7200;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;# Server subnet&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;subnet 192.168.1.0 netmask 255.255.255.0 {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; range 192.168.1.20 192.168.1.254;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; option routers 192.168.1.1;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt; option subnet-mask 255.255.255.0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt; option broadcast-address 192.168.1.255;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;# VLAN 130&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;subnet 10.0.1.0 netmask 255.255.255.0 {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt; range 10.0.1.20 10.0.1.254;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt; option routers 10.0.1.1;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt; option subnet-mask 255.255.255.0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt; option broadcast-address 10.0.1.255;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;# VLAN 140&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;subnet 10.0.4.0 netmask 255.255.255.0 {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt; range 10.0.4.40 10.0.4.254;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt; option routers 10.0.4.1;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt; option subnet-mask 255.255.255.0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt; option broadcast-address 10.0.4.255;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt; host jarvis {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt; fixed-address 10.0.4.27;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt; hardware ethernet dc:a6:32:77:3c:0d;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt;# VLAN 150&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt;subnet 10.0.5.0 netmask 255.255.255.0 {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;37&lt;/span&gt;&lt;span class="cl"&gt; range 10.0.5.10 10.0.5.254;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;38&lt;/span&gt;&lt;span class="cl"&gt; option routers 10.0.5.1;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;39&lt;/span&gt;&lt;span class="cl"&gt; option subnet-mask 255.255.255.0;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;40&lt;/span&gt;&lt;span class="cl"&gt; option broadcast-address 10.0.5.255;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;41&lt;/span&gt;&lt;span class="cl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Then installing dhcpcd for IPv6:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ pkg_add dhcpcd&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;To have IPv6 working we need /etc/dhcpcd.conf&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;allowinterfaces axen0 em0 vlan120 vlan130 vlan140 vlan150&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;interface axen0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt; ipv6rs&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;6&lt;/span&gt;&lt;span class="cl"&gt; ia_na 1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;7&lt;/span&gt;&lt;span class="cl"&gt; ia_pd 2 em0/1 vlan120/2 vlan130/3 vlan140/4 vlan150/5&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;aaaaand /etc/rad.conf&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;interface em0&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;interface vlan120&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;interface vlan130&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;interface vlan140&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;interface vlan150&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;After configuring dhcpd, dhcpcd and rad we have to enable and start the services:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ rcctl enable dhcpd; rcctl start dhcpd&#10;$ rcctl enable dhcpcd; rcctl start dhcpcd&#10;$ rcctl enable rad; rcctl start rad&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;We also have to enable some kernel options&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;1&lt;/span&gt;&lt;span class="cl"&gt;net.inet.ip.forwarding=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;2&lt;/span&gt;&lt;span class="cl"&gt;net.inet6.ip6.forwarding=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;3&lt;/span&gt;&lt;span class="cl"&gt;net.inet.ip.mforwarding=1&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;4&lt;/span&gt;&lt;span class="cl"&gt;# Since we are using a laptop we want to disable sleep when lid is closed...&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;5&lt;/span&gt;&lt;span class="cl"&gt;machdep.lidaction=0&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Which we can make have apply right away without the need for a reboot:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ sysctl net.inet.ip.forwarding=1&#10;$ sysctl net.inet6.ip6.forwarding=1&#10;$ sysctl net.inet.ip.mforwarding=1&#10;$ sysctl machdep.lidaction=0&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;The last configuration we have to do is /etc/pf.conf&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TXT&lt;/div&gt;&#10; &#10; &lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-txt" data-lang="txt"&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 1&lt;/span&gt;&lt;span class="cl"&gt;# Tables&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 2&lt;/span&gt;&lt;span class="cl"&gt;table &amp;lt;lan&amp;gt; { 10.0.0.0/24 }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 3&lt;/span&gt;&lt;span class="cl"&gt;table &amp;lt;vlan120&amp;gt; { 192.168.1.0/24 }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 4&lt;/span&gt;&lt;span class="cl"&gt;table &amp;lt;vlan130&amp;gt; { 10.0.1.0/24 }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 5&lt;/span&gt;&lt;span class="cl"&gt;table &amp;lt;vlan140&amp;gt; { 10.0.4.0/24 }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 6&lt;/span&gt;&lt;span class="cl"&gt;table &amp;lt;vlan150&amp;gt; { 10.0.5.0/24 }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 7&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 8&lt;/span&gt;&lt;span class="cl"&gt;table &amp;lt;martians&amp;gt; { 0.0.0.0/8 127.0.0.0/8 169.254.0.0/16 172.16.0.0/12 192.0.0.0/24 192.0.2.0/24 224.0.0.0/3 \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt; 9&lt;/span&gt;&lt;span class="cl"&gt; 192.168.0.0/16 198.18.0.0/15 198.51.100.0/24 203.0.113.0/24 \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;10&lt;/span&gt;&lt;span class="cl"&gt; ::/128 ::/96 ::1/128 ::ffff:0:0/96 100::/64 2001:10::/28 2001:2::/48 2001:db8::/32 3ffe::/16 fec0::/10 fc00::/7 }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;11&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;12&lt;/span&gt;&lt;span class="cl"&gt;icmp_types = &amp;#34;{ echoreq, unreach }&amp;#34;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;13&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;14&lt;/span&gt;&lt;span class="cl"&gt;# Options&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;15&lt;/span&gt;&lt;span class="cl"&gt;set skip on lo # Don&amp;#39;t filter on loopback interface&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;16&lt;/span&gt;&lt;span class="cl"&gt;set block-policy drop&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;17&lt;/span&gt;&lt;span class="cl"&gt;set loginterface egress&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;18&lt;/span&gt;&lt;span class="cl"&gt;set optimization aggressive&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;19&lt;/span&gt;&lt;span class="cl"&gt;set skip on lo&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;20&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;21&lt;/span&gt;&lt;span class="cl"&gt;block all&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;22&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;23&lt;/span&gt;&lt;span class="cl"&gt;match in all scrub (no-df random-id)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;24&lt;/span&gt;&lt;span class="cl"&gt;match out on egress inet from !(egress:network) to any nat-to (egress:0)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;25&lt;/span&gt;&lt;span class="cl"&gt;antispoof for egress&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;26&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;27&lt;/span&gt;&lt;span class="cl"&gt;pass out inet&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;28&lt;/span&gt;&lt;span class="cl"&gt;pass out inet6&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;29&lt;/span&gt;&lt;span class="cl"&gt;pass in on { lan vlan120 vlan130 vlan140 vlan150 } inet&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;30&lt;/span&gt;&lt;span class="cl"&gt;pass in on { lan vlan120 vlan130 vlan140 vlan150 } inet6&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;31&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;32&lt;/span&gt;&lt;span class="cl"&gt;block in on egress from any to &amp;lt;martians&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;33&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;34&lt;/span&gt;&lt;span class="cl"&gt;# Block all other traffic from VLAN 140 to VLAN 120&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;35&lt;/span&gt;&lt;span class="cl"&gt;block in log on vlan140 from vlan140:network to vlan120:network&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;36&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;37&lt;/span&gt;&lt;span class="cl"&gt;pass out on egress inet proto udp to port 33433:33626&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;38&lt;/span&gt;&lt;span class="cl"&gt;pass inet proto icmp icmp-type $icmp_types&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;39&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;40&lt;/span&gt;&lt;span class="cl"&gt;pass in on egress inet6 proto udp \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;41&lt;/span&gt;&lt;span class="cl"&gt; from fe80::/10 port dhcpv6-server \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;42&lt;/span&gt;&lt;span class="cl"&gt; to fe80::/10 port dhcpv6-client \&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;43&lt;/span&gt;&lt;span class="cl"&gt; no state&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;44&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;45&lt;/span&gt;&lt;span class="cl"&gt;pass out on egress inet6 proto udp from any to any port 33433 &amp;gt;&amp;lt; 33626 keep state&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;46&lt;/span&gt;&lt;span class="cl"&gt;pass inet6 proto icmp6 all&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;47&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;48&lt;/span&gt;&lt;span class="cl"&gt;# For the trusted and work LAN&amp;#39;s, allow devices to talk with the other devices in their respective network.&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;49&lt;/span&gt;&lt;span class="cl"&gt;pass on vlan120 from vlan120:network to vlan120:network&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;50&lt;/span&gt;&lt;span class="cl"&gt;pass on vlan130 from vlan130:network to vlan130:network&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;51&lt;/span&gt;&lt;span class="cl"&gt;pass on vlan140 from vlan140:network to vlan140:network&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;52&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;53&lt;/span&gt;&lt;span class="cl"&gt;pass in log on egress proto tcp from any to any port 22 rdr-to 192.168.1.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;54&lt;/span&gt;&lt;span class="cl"&gt;pass in log on egress proto udp from any to any port 51820 rdr-to 192.168.1.2&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;55&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;56&lt;/span&gt;&lt;span class="cl"&gt;# Allow multicast networking&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;57&lt;/span&gt;&lt;span class="cl"&gt;pass on { vlan120 vlan130 vlan140 } proto igmp all allow-opts&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;58&lt;/span&gt;&lt;span class="cl"&gt;pass on { vlan120 vlan130 vlan140 } inet proto udp from any to 224.0.0.0/4&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;59&lt;/span&gt;&lt;span class="cl"&gt;pass on { vlan120 vlan130 vlan140 } inet6 proto udp from any to ff00::/8&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;60&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;61&lt;/span&gt;&lt;span class="cl"&gt;# Allow mDNS&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;62&lt;/span&gt;&lt;span class="cl"&gt;pass inet proto udp from any to 224.0.0.251 port { mdns } allow-opts&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;63&lt;/span&gt;&lt;span class="cl"&gt;pass inet6 proto udp from any to ff02::fb port { mdns } allow-opts&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;64&lt;/span&gt;&lt;span class="cl"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;65&lt;/span&gt;&lt;span class="cl"&gt;# Allow from IOT vlan to server&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;66&lt;/span&gt;&lt;span class="cl"&gt;pass in on vlan140 proto tcp from vlan140:network to 192.168.1.2 port 8096&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="ln"&gt;67&lt;/span&gt;&lt;span class="cl"&gt;pass in on vlan140 proto udp from vlan140:network to 192.168.1.2 port 53&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Which we have to apply by issuing the following command:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ pfctl -f /etc/pf.conf&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;At this point everything &lt;em&gt;should&lt;/em&gt; just work.&lt;/p&gt;&#10;&lt;p&gt;I would highly recommend to read the extremeley good man pages for&#10;&lt;a href="https://man.openbsd.org/ifconfig"&gt;ifconfig(8)&lt;/a&gt;,&#10;&lt;a href="https://man.openbsd.org/dhcpd"&gt;dhcpd(8)&lt;/a&gt;,&#10;&lt;a href="https://man.openbsd.org/rad"&gt;rad.(8)&lt;/a&gt;&#10;and &lt;a href="https://man.openbsd.org/pfctl.8"&gt;pfctl(8)&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;It would probably also be a good idea to have a look at how to configure those&#10;things:&#10;&lt;a href="https://man.openbsd.org/hostname.if"&gt;hostname.if(5)&lt;/a&gt;,&#10;&lt;a href="https://man.openbsd.org/dhcpd.conf"&gt;dhcpd.conf(5)&lt;/a&gt;,&#10;&lt;a href="https://man.openbsd.org/rad.conf"&gt;rad.conf(5)&lt;/a&gt;&#10;and &lt;a href="https://man.openbsd.org/pf.conf.5"&gt;pf.conf(5)&lt;/a&gt;&lt;/p&gt;&#10;&lt;h2 id="making-sure-we-save-config-files-somewhere"&gt;Making sure we save config files somewhere&lt;/h2&gt;&#10;&lt;p&gt;To keep my dotfiles saved on git I&amp;rsquo;ve settled on the simple solution of just having a bare git repository with &lt;code&gt;$HOME&lt;/code&gt; as the working tree. I found this awesome way of keeping dotfiles over at a really great &lt;a href="https://www.atlassian.com/git/tutorials/dotfiles"&gt;atlassian blogpost&lt;/a&gt;. This same system can be used to save the configuration files for the router, just using &lt;code&gt;/&lt;/code&gt; as our working tree:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ git init --bare /.cfg&#10;$ alias config=&amp;#39;/usr/bin/git --git-dir=/.cfg/ --work-tree=/&amp;#39;&#10;# To make the alias stick:&#10;$ echo &amp;#34;alias config=&amp;#39;/usr/bin/git --git-dir=/.cfg/ --work-tree=/&amp;#39;&amp;#34; &amp;gt;&amp;gt; /root/.profile&#10;$ config add /etc/hostname.* /etc/dhcpd.conf /etc/dhcpcd.conf /etc/rad.conf /etc/pf.conf /etc/sysctl.conf&#10;$ config commit -m &amp;#34;feat: adding all config files&amp;#34;&#10;$ config push&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="the-permanent-solution"&gt;The permanent solution&lt;/h2&gt;&#10;&lt;p&gt;To replace the PC Engines APU4 router I looked for something with the following requirements:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Passively cooled&lt;/li&gt;&#10;&lt;li&gt;Low power consumption&lt;/li&gt;&#10;&lt;li&gt;Still supported&lt;/li&gt;&#10;&lt;li&gt;At least two network interfaces&lt;/li&gt;&#10;&lt;li&gt;Open source BIOS, preferably Coreboot&#10;That last requirement really narrows the choice down, as there is, unfortunately, a lack of vendors willing to use open source BIOSes (ADD CONTEXT?).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;I ended up buying a &lt;a href="https://starlabs.systems/pages/byte"&gt;Byte from Star Labs&lt;/a&gt; which checked all of those boxes.&lt;/p&gt;&#10;&lt;p&gt;To apply the config files from this repo we created previously to our new router:&lt;/p&gt;&#10;&lt;p&gt;Install needed packages:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ pkg_add vim dhcpcd git&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;Configure the working tree:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ alias config=&amp;#39;/usr/bin/git --git-dir=/.cfg/ --work-tree=/&amp;#39;&#10;$ echo &amp;#34;alias config=&amp;#39;/usr/bin/git --git-dir=/.cfg/ --work-tree=/&amp;#39;&amp;#34; &amp;gt;&amp;gt; /root/.profile&#10;$ git clone --bare git@git.sr.ht:~cr4sh0v3rrid3/openbsd-router /.cfg&#10;$ config checkout&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;At this point be want rename some of the &lt;code&gt;/etc/hostname.&lt;/code&gt; files to use the correct network interfaces, as well as updating all the vlan interfaces with the same changes. So we replace &lt;code&gt;axen0&lt;/code&gt; with &lt;code&gt;re0&lt;/code&gt; and &lt;code&gt;em0&lt;/code&gt; with &lt;code&gt;rge0&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;Then you have to enable some services&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ rcctl enable dhcpd&#10;$ rcctl enable dhcpcd&#10;$ rcctl enable rad&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;To end it of just reboot the machine and plug in the correct cables to the correct&#10;interfaces.&lt;/p&gt;&#10;&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;&#10;&lt;p&gt;So I finally got myself around to setting up a OpenBSD router! And now that I&amp;rsquo;ve used this setup for about a week I&amp;rsquo;m extremely happy and satisfied.&lt;/p&gt;&#10;&lt;p&gt;All the configuration files mentioned and used in this post can be found over at my &lt;a href="https://git.sr.ht/~cr4sh0v3rrid3/openbsd-router"&gt;git.sr.ht&lt;/a&gt; repo!&lt;/p&gt;&#10;</content:encoded></item><item><title>Hello World!</title><link>https://sigkill.no/blog/hello_world/</link><guid>https://sigkill.no/blog/hello_world/</guid><pubDate>Fri, 05 Apr 2024 00:00:00 +0000</pubDate><author>cr4sh@sigkill.no (cr4sh0v3rrid3)</author><description>&lt;p&gt;I did it! I finally found time to actually put up a blog. As part of loving&#10;the simplicity of the old web and as a avid complainer of how modern websites&#10;are way to bloated, I&amp;rsquo;ve made an attemt at keepubg this blog as simple as&#10;possible.&lt;/p&gt;&#10;&lt;p&gt;Instead of spinning my own theme I ended up using a pre-made one, simpliy because&#10;I found one that had exactly what I needed and nothing else. The styling is simple&#10;and it&amp;rsquo;s one of the few themes out there without any JS. The theme can be found&#10;over at &lt;a href="https://github.com/clente/hugo-bearcub"&gt;GitHub&lt;/a&gt;&lt;/p&gt;</description><content:encoded>&lt;p&gt;I did it! I finally found time to actually put up a blog. As part of loving&#10;the simplicity of the old web and as a avid complainer of how modern websites&#10;are way to bloated, I&amp;rsquo;ve made an attemt at keepubg this blog as simple as&#10;possible.&lt;/p&gt;&#10;&lt;p&gt;Instead of spinning my own theme I ended up using a pre-made one, simpliy because&#10;I found one that had exactly what I needed and nothing else. The styling is simple&#10;and it&amp;rsquo;s one of the few themes out there without any JS. The theme can be found&#10;over at &lt;a href="https://github.com/clente/hugo-bearcub"&gt;GitHub&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;So what can you expect from this blog? Well&amp;hellip; I won&amp;rsquo;t promise too much, but I&#10;will at least try to use it as a personal journal where I share my thoughs and&#10;notes on everything ranging from how to configure IRC bouncers to why I think&#10;AI right now is just a fad.&lt;/p&gt;&#10;</content:encoded></item><item><title>Alacritty terminfo</title><link>https://sigkill.no/blog/alacritty_terminfo/</link><guid>https://sigkill.no/blog/alacritty_terminfo/</guid><pubDate>Fri, 05 Apr 2024 00:00:00 +0000</pubDate><author>cr4sh@sigkill.no (cr4sh0v3rrid3)</author><description>&lt;p&gt;To get alacritty to work with remote hosts:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ infocmp &amp;gt; al.txt&#10;$ scp al.txt &amp;lt;user&amp;gt;@&amp;lt;host&amp;gt;:~/&#10;&#10;# On the remote host:&#10;$ tic -x al.txt&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="what-does-tic--x-do"&gt;What does &amp;ldquo;tic -x&amp;rdquo; do?&lt;/h3&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ man tic&#10;...&#10; -x Treat unknown capabilities as user-defined (see user_caps(5)). That is, if you supply a capability name which tic does not recognize, it will infer its type&#10; (Boolean, number or string) from the syntax and make an extended table entry for that. User-defined capability strings whose name begins with “k” are treated as&#10; function keys.&#10;...&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="one-liner"&gt;One liner&lt;/h2&gt;&#10;&lt;p&gt;Note: this is stolen from the &lt;a href="https://wiki.archlinux.org/title/Alacritty#Terminal_functionality_unavailable_in_remote_shells"&gt;archwiki&lt;/a&gt;&lt;/p&gt;</description><content:encoded>&lt;p&gt;To get alacritty to work with remote hosts:&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ infocmp &amp;gt; al.txt&#10;$ scp al.txt &amp;lt;user&amp;gt;@&amp;lt;host&amp;gt;:~/&#10;&#10;# On the remote host:&#10;$ tic -x al.txt&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;h3 id="what-does-tic--x-do"&gt;What does &amp;ldquo;tic -x&amp;rdquo; do?&lt;/h3&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ man tic&#10;...&#10; -x Treat unknown capabilities as user-defined (see user_caps(5)). That is, if you supply a capability name which tic does not recognize, it will infer its type&#10; (Boolean, number or string) from the syntax and make an extended table entry for that. User-defined capability strings whose name begins with “k” are treated as&#10; function keys.&#10;...&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="one-liner"&gt;One liner&lt;/h2&gt;&#10;&lt;p&gt;Note: this is stolen from the &lt;a href="https://wiki.archlinux.org/title/Alacritty#Terminal_functionality_unavailable_in_remote_shells"&gt;archwiki&lt;/a&gt;&lt;/p&gt;&#10;&lt;div class="code-block"&gt;&#10; &lt;div class="code-label" aria-hidden="true"&gt;TEXT&lt;/div&gt;&#10; &#10; &lt;pre tabindex="0"&gt;&lt;code&gt;$ infocmp | ssh &amp;#34;$user@$host&amp;#34; &amp;#39;tic -x /dev/stdin&amp;#39;&lt;/code&gt;&lt;/pre&gt;&#10;&lt;/div&gt;&#10;</content:encoded></item></channel></rss>