<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Melson&#39;s Blog</title>
    <link>/</link>
    <description>Recent content on Melson&#39;s Blog</description>
    <generator>Hugo</generator>
    <language>en-gb</language>
    <copyright>Melson Mascarenhas</copyright>
    <lastBuildDate>Sat, 07 Mar 2026 02:21:23 +0530</lastBuildDate>
    <atom:link href="/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Peer-to-Peer Networking: Build a VPN Tunnel with Wintun on Windows - Part 2</title>
      <link>/posts/peer-to-peer-windows-part2/</link>
      <pubDate>Sat, 07 Mar 2026 02:21:23 +0530</pubDate>
      <guid>/posts/peer-to-peer-windows-part2/</guid>
      <description>&lt;p&gt;This is a continuation of my previous &lt;a href=&#34;https://www.0xmm.in/posts/peer-to-peer-windows-part1/&#34;&gt;post&lt;/a&gt;. The goal of this part is to understand in a simple way how Tailscale works behind the scenes on Windows using a L3 adapter called &lt;a href=&#34;https://www.wintun.net/&#34;&gt;Wintun&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-tailscale-peer-to-peer-works&#34;&gt;How Tailscale Peer-to-Peer Works&lt;/h2&gt;&#xA;&lt;p&gt;Majority of Tailscale&amp;rsquo;s code is open source, including &lt;a href=&#34;https://pkg.go.dev/tailscale.com/derp&#34;&gt;DERP&lt;/a&gt; server which acts as a relay for peers when direct connection fails.&lt;/p&gt;&#xA;&lt;p&gt;Since Tailscale&amp;rsquo;s codebase is pretty large, I won&amp;rsquo;t go deep into all their services. But if you want to understand how peer-to-peer works from scratch and eventually build your own, there are some good resources out there. I recommend starting with these two papers:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Building DNS-Based Service Discovery in Go Using SRV Records (Inspired by Kubernetes)</title>
      <link>/posts/autodiscovery_srv/</link>
      <pubDate>Sun, 22 Feb 2026 23:54:51 +0530</pubDate>
      <guid>/posts/autodiscovery_srv/</guid>
      <description>&lt;h2 id=&#34;understanding-kubernetes-dns-and-srv-based-service-discovery&#34;&gt;Understanding Kubernetes DNS and SRV-Based Service Discovery&lt;/h2&gt;&#xA;&lt;p&gt;I have been reading about Kubernetes DNS and going through its official specification available on GitHub&#xA;&lt;a href=&#34;https://github.com/kubernetes/dns/blob/master/docs/specification.md&#34;&gt;Kubernetes DNS specification&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;After studying the documentation, I understood how Kubernetes performs internal service discovery using DNS. This led me to an interesting idea.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;Can I build my own client-server application where the client only resolves a service name and protocol (like _servicename._tcp or _servicename._udp), and automatically retrieves the port from DNS, without hardcoding the&#xA;server address and port number?&lt;/p&gt;</description>
    </item>
    <item>
      <title>From Netalert to Domotz: Understanding Network Monitors and Building My Own</title>
      <link>/posts/monitoring/</link>
      <pubDate>Fri, 12 Dec 2025 20:43:51 +0530</pubDate>
      <guid>/posts/monitoring/</guid>
      <description>&lt;p&gt;As a Network Engineer, I always wanted a network and service monitoring system that brings all the necessary tools into a single dashboard. Ever since I started self hosting services on my Raspberry Pi, my goal has been to run everything on it. Most tools are open source and available as separate services, but what really fascinated me was a network monitoring solution called &lt;a href=&#34;https://www.domotz.com/&#34;&gt;Domotz&lt;/a&gt; which was previously known as &lt;a href=&#34;https://archive.goughlui.com/wp-content/uploads/2018/06/2018060814442634.jpg&#34;&gt;Fingbox&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Both Domotz and Fingbox provide network monitoring through dedicated hardware. By using their own hardware, they can access the network more effectively with custom tools, without worrying about restricted environments. This makes their monitoring far more efficient.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Create a Custom Interactive Infrastructure Dashboards</title>
      <link>/posts/custom_dash/</link>
      <pubDate>Mon, 06 Oct 2025 23:44:37 +0530</pubDate>
      <guid>/posts/custom_dash/</guid>
      <description>&lt;p&gt;Since I started self hosting a few services, I wanted a custom dashboard something like Grafana Canvas where I could monitor my entire infra and visulaize all my devices and their status on a&#xA;single screen.&lt;/p&gt;&#xA;&lt;p&gt;At first, I thought, &amp;ldquo;Hey, I’ll just design the whole device model with CSS!&amp;rdquo;&lt;/p&gt;&#xA;&lt;p&gt;But then reality hit me… that would probably take a decade for someone like me who doesn’t have a frontend background 😅&#xA;Then I thought, “Why not ask someone who actually knows a thing or two about frontend?”&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why I Moved Away from Self Hosted Email</title>
      <link>/posts/mail/</link>
      <pubDate>Thu, 02 Oct 2025 21:59:29 +0530</pubDate>
      <guid>/posts/mail/</guid>
      <description>&lt;p&gt;After self hosting my mail server at home on a Raspberry Pi, I frequently encountered internet stability issues. Sometimes, my fiber connection would get damaged due to nearby construction work, and other times, my ISP would schedule maintenance, causing outages that lasted for an hour or more.&lt;/p&gt;&#xA;&lt;p&gt;These incidents made me realize that hosting my email server at home was risky, I could lose important emails if my internet went down. As a result, I started looking for alternative options like Mailfence, Mailbox and Fastmail. However, these services either offered only a free trial or limited storage (around 1GB), whereas I wanted a affordable and simple mail service with a decent amount of storage. And by default, domain registrars do not provide email services. If they do, it is usually a paid feature.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Self Hosting an Authoritative DNS Server for Your Domain</title>
      <link>/posts/authorative_dns/</link>
      <pubDate>Mon, 29 Sep 2025 22:43:55 +0530</pubDate>
      <guid>/posts/authorative_dns/</guid>
      <description>&lt;h1 id=&#34;introduction&#34;&gt;Introduction&lt;/h1&gt;&#xA;&lt;p&gt;After self hosting a few services at home, I found myself repeatedly logging into my domain registrar’s portal to add or map new IPs and subdomains. This back-and-forth process quickly became tedious. To simplify it, I decided to implement an &lt;strong&gt;authoritative name server&lt;/strong&gt; for my own domain, hosted directly from home. Using an API driven approach, DNS records can now be updated anytime automatically, with Tailscale handling DNS updates for added security.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Understanding Recursive DNS Resolution</title>
      <link>/posts/recursive_dns_resolver/</link>
      <pubDate>Sat, 20 Sep 2025 02:12:41 +0530</pubDate>
      <guid>/posts/recursive_dns_resolver/</guid>
      <description>&lt;h2 id=&#34;dns-how-it-all-works&#34;&gt;DNS: how It All Works&lt;/h2&gt;&#xA;&lt;p&gt;Ever wondered how DNS resolves domain names? How does it work behind the scenes? Well, In this blog, we’ll explore the fascinating world of DNS resolution. Whether it’s Google’s famous (8.8.8.8,8.8.4.4) or Cloudflare’s 1.1.1.1, you’ll finally understand what’s happening when you type a domain into your browser.&lt;/p&gt;&#xA;&lt;h3 id=&#34;dns-your-internets-phonebook&#34;&gt;DNS: Your Internet’s Phonebook&lt;/h3&gt;&#xA;&lt;p&gt;DNS (Domain Name System) is basically the internet’s way of giving websites easy to remember names instead of expecting you to memorize IP addresses (because let’s be honest, no one remembers 172.217.14.206). No matter how often an IP address changes, you only need to remember the domain name, and DNS takes care of the rest.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Raspberry Pi Notifications with ntfy: Build a Home Lab Alert System</title>
      <link>/posts/ntfy/</link>
      <pubDate>Tue, 16 Sep 2025 21:27:56 +0530</pubDate>
      <guid>/posts/ntfy/</guid>
      <description>&lt;h2 id=&#34;even-raspberrypi-deserve-to-be-heard&#34;&gt;Even RaspberryPi Deserve to Be Heard&lt;/h2&gt;&#xA;&lt;p&gt;After self-hosting a few services and monitoring their state like the Raspberry Pi’s temperature, RAM, and disk usage I wanted a solution that could send me real-time notifications when certain thresholds were reached. I needed something reliable and privacy-focused, without relying on third-party platforms like Telegram bots that handle my data externally. That’s when I discovered &lt;a href=&#34;https://ntfy.sh&#34;&gt;ntfy&lt;/a&gt;. The best part? It’s completely self-hostable, and integrating it into my existing infrastructure was simple and seamless.&lt;/p&gt;</description>
    </item>
    <item>
      <title>About</title>
      <link>/about/</link>
      <pubDate>Mon, 15 Sep 2025 22:25:44 +0530</pubDate>
      <guid>/about/</guid>
      <description>&lt;h1 id=&#34;whoami&#34;&gt;$(whoami)&lt;/h1&gt;&#xA;&#xA;&lt;img src=&#34;https://avatars.githubusercontent.com/u/155618053?v=4&#34;  alt=&#34;mug-shot&#34;  class=&#34;left&#34;  style=&#34;border-radius: 50%; padding: 0;width:200px;&#34;    /&gt;&#xA;&#xA;&#xA;&lt;h2 id=&#34;network-research-engineer-by-profession-hobbyist-developer-tinkerer-and-tech-enthusiast&#34;&gt;Network Research Engineer by profession, hobbyist developer, tinkerer, and tech enthusiast.&lt;/h2&gt;&#xA;&lt;h1 id=&#34;more&#34;&gt;More&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://github.com/mascarenhasmelson&#34;&gt;GitHub&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.linkedin.com/in/melsonmascarenhas/&#34;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;mailto:mail@0xmm.in&#34;&gt;Email&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
    </item>
    <item>
      <title>BGP: Setting Up and Peering in the DN42 BGP Network Using a MikroTik Router</title>
      <link>/posts/dn42_bgp/</link>
      <pubDate>Wed, 10 Sep 2025 21:35:06 +0530</pubDate>
      <guid>/posts/dn42_bgp/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;As a Network engineer, I’ve always dreamed of announcing my own BGP routes and peering with others. I wanted the experience of running a decentralized BGP network not just in a lab environment, but in a real, persistent setup that could run indefinitely. After some research, I discovered DN42, a community driven platform that makes this possible without requiring expensive ASNs or public IP allocations.&lt;/p&gt;&#xA;&lt;p&gt;With DN42, I can establish my own autonomous system, peer with other network enthusiasts, and even run my setup on a home router or a Raspberry Pi. This blog will document my journey into selfhosted BGP, the challenges I faced, and how I built my own decentralized network. If you&amp;rsquo;re a networking enthusiast looking to explore BGP beyond traditional environments, you&amp;rsquo;re in the right place!&lt;/p&gt;</description>
    </item>
    <item>
      <title>Peer-to-Peer Networking: Build a VPN Tunnel with Wintun on Windows - Part 1</title>
      <link>/posts/peer-to-peer-windows-part1/</link>
      <pubDate>Mon, 08 Sep 2025 19:06:39 +0530</pubDate>
      <guid>/posts/peer-to-peer-windows-part1/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;I’ve been using &lt;a href=&#34;https://tailscale.com/&#34;&gt;Tailscale&lt;/a&gt; for years to access my home lab without the need for a public IP. Tailscale can be installed on almost any device, allowing you to securely connect and access them from anywhere. It works as a peer-to-peer, mesh-style VPN, is &lt;a href=&#34;https://github.com/tailscale/tailscale&#34;&gt;opensource&lt;/a&gt;, and completely free for up to 100 devices and 10 users. They also offer a &lt;a href=&#34;https://tailscale.com/pricing&#34;&gt;business plan&lt;/a&gt; for larger setups.&lt;/p&gt;&#xA;&lt;p&gt;What always fascinated me was how Tailscale works seamlessly across platforms like Linux, macOS, Android, and Windows. Since I use both Linux and Windows in a dual-boot setup, I started digging deeper. On Linux, it’s straightforward they rely on a TUN interface. But on Windows, I was curious about the Layer 3 adapter being used under the hood. After exploring the Tailscale &lt;a href=&#34;https://github.com/tailscale/wintun&#34;&gt;GitHub repo&lt;/a&gt;, I discovered that it uses Wintun a TUN driver for Windows developed by the WireGuard project.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Self Host Your Mail Server at Home by using Raspberry PI</title>
      <link>/posts/selfhost_mailserver/</link>
      <pubDate>Fri, 05 Sep 2025 22:43:59 +0530</pubDate>
      <guid>/posts/selfhost_mailserver/</guid>
      <description>&lt;h2 id=&#34;introduction&#34;&gt;Introduction&lt;/h2&gt;&#xA;&lt;p&gt;I came across a few posts on the subreddit &lt;code&gt;r/selfhosted&lt;/code&gt; about running personal mail servers on cloud VPS. That got me thinking why not self-host my own email server at home instead of relying on a cloud provider’s VPS?&lt;/p&gt;&#xA;&lt;p&gt;This led me to wonder what I’d need to set up a fully functional email server for personal use. Rather than using a traditional server-grade PC. I decided to try it on a Raspberry Pi, which is small size and low power consumption make it an ideal choice for use as a home email server.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Learning</title>
      <link>/learning/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/learning/</guid>
      <description>learning</description>
    </item>
    <item>
      <title>Projects</title>
      <link>/projects/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/projects/</guid>
      <description>projects</description>
    </item>
    <item>
      <title>Uses</title>
      <link>/uses/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      <guid>/uses/</guid>
      <description>uses</description>
    </item>
  </channel>
</rss>
