<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>carew.dev</title><link>https://carew.dev/</link><description>Recent content on carew.dev</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 14 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://carew.dev/index.xml" rel="self" type="application/rss+xml"/><item><title>Netlink Monitoring with nlmon</title><link>https://carew.dev/blog/nlmon/</link><pubDate>Tue, 14 Apr 2026 00:00:00 +0000</pubDate><guid>https://carew.dev/blog/nlmon/</guid><description>&lt;p&gt;Did you know you could capture netlink packets and view them in wireshark?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# modprobe nlmon&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# ip link add type nlmon&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# ip link set nlmon0 up&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s it. Capture on the interface and remove it when done.
This is great for figuring out exactly what &lt;code&gt;ip&lt;/code&gt; is doing&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#6272a4"&gt;# tcpdump -i nlmon0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then you&amp;rsquo;ve got to be aware of netlink, rtnetlink, etc. It&amp;rsquo;s also got it&amp;rsquo;s own &lt;a href="https://wiki.wireshark.org/Protocols/netlink"&gt;DLT&lt;/a&gt;&lt;/p&gt;</description></item><item><title>This Blog</title><link>https://carew.dev/blog/this-blog/</link><pubDate>Sun, 12 Apr 2026 14:02:20 -0400</pubDate><guid>https://carew.dev/blog/this-blog/</guid><description>&lt;h1 id="how-this-blog-is-built"&gt;How this blog is built&lt;/h1&gt;
&lt;p&gt;This blog is still a new project, and so this is subject to change, but for now, this is built with Hugo.&lt;/p&gt;
&lt;p&gt;This blog is developed as markdown in it&amp;rsquo;s own repo, which is pushed to my forgejo instance. The forgejo actions build the blog and publish it to my vps. This all runs in my &lt;a href="https://carew.dev/blog/iac-homelab/"&gt;homelab&lt;/a&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#282a36;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff79c6"&gt;#!/usr/bin/env bash
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8be9fd;font-style:italic"&gt;set&lt;/span&gt; -euo pipefail
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;hugo --minify
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rsync -avz --delete public/ root@carew.dev:/var/www/carew.dev/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;is basically all it does&lt;/p&gt;</description></item><item><title>IaC Homelab</title><link>https://carew.dev/blog/iac-homelab/</link><pubDate>Sun, 12 Apr 2026 13:47:13 -0400</pubDate><guid>https://carew.dev/blog/iac-homelab/</guid><description>&lt;h2 id="fully-iac-homelab-with-terraform-ansible-and-proxmox"&gt;Fully IaC Homelab with Terraform, Ansible and Proxmox&lt;/h2&gt;
&lt;p&gt;Over the past year or so, I&amp;rsquo;ve gotten much more invested in my homelab.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve always messed around with self-hosting things, even tried hosting Active Directory at my parents house when I was 19, but I&amp;rsquo;ve never taken any of it serious enough to consider &amp;ldquo;production&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;That is, until now. I want a fully &amp;ldquo;production&amp;rdquo; homelab. I want my resources to be fixed, and I want it to be fully reproducible.
I want IaC.&lt;/p&gt;</description></item><item><title>About</title><link>https://carew.dev/about/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://carew.dev/about/</guid><description>&lt;p&gt;Hi, I&amp;rsquo;m Jacob Carew — a software engineer who spends a lot of time tinkering with Linux, low-level networking, and infrastructure.&lt;/p&gt;
&lt;p&gt;I write here to get better at explaining the things I learn. If something I&amp;rsquo;ve written saves you a debugging session or sparks an idea, that&amp;rsquo;s the whole point.&lt;/p&gt;
&lt;h2 id="what-i-work-with"&gt;What I work with&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linux&lt;/strong&gt; — my daily driver and constant rabbit hole&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;C and Python&lt;/strong&gt; — the tools I reach for when I need to go fast or go deep&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Homelab&lt;/strong&gt; — a personal lab I manage fully as code using Ansible and Terraform&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Networking&lt;/strong&gt; — routing, netlink, packet capture, the usual&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="this-site"&gt;This site&lt;/h2&gt;
&lt;p&gt;Built with &lt;a href="https://gohugo.io"&gt;Hugo&lt;/a&gt; and hosted at &lt;a href="https://carew.dev/"&gt;carew.dev&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>