<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hugo | DevOps | Cybersecurity</title>
    <description>The latest articles on DEV Community by Hugo | DevOps | Cybersecurity (@hugovalters).</description>
    <link>https://dev.to/hugovalters</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1175774%2F8a57b46a-da15-4ac2-ab41-fbe56c6a99a5.jpg</url>
      <title>DEV Community: Hugo | DevOps | Cybersecurity</title>
      <link>https://dev.to/hugovalters</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hugovalters"/>
    <language>en</language>
    <item>
      <title>Network Segmentation: VLANs and Firewall Rules for Service Isolation</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Fri, 24 Jul 2026 14:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/network-segmentation-vlans-and-firewall-rules-for-service-isolation-5b47</link>
      <guid>https://dev.to/hugovalters/network-segmentation-vlans-and-firewall-rules-for-service-isolation-5b47</guid>
      <description>&lt;p&gt;I've spent 15 years cleaning up the aftermath of flat networks. The worst was a 2020 incident where a Redis instance, left exposed on the default VLAN, became an attacker's highway. Within four hours, they'd pivoted through 200+ VMs, exfiltrated customer data, and planted cryptominers across three availability zones. The CISO's words still echo: "We thought the firewall at the edge was enough."&lt;/p&gt;

&lt;p&gt;This guide is for platform engineers and DevOps teams who've outgrown the "just add a security group" mindset. You'll learn how VLANs and firewall rules actually work together—not just theory, but production-hardened configs that prevent lateral movement. By the end, you'll be able to design a segmented network that contains breaches instead of amplifying them.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flat networks are indefensible; one compromised service becomes your entire blast radius.&lt;/li&gt;
&lt;li&gt;VLANs provide Layer 2 isolation, but firewall rules enforce actual access control between segments.&lt;/li&gt;
&lt;li&gt;Group services by trust level, not by count—"one VLAN per service" creates management hell.&lt;/li&gt;
&lt;li&gt;Egress filtering catches 90% of breaches; allow-all-outbound is a sieve.&lt;/li&gt;
&lt;li&gt;Automate everything with IaC; hand-jammed rules are technical debt with interest.&lt;/li&gt;
&lt;li&gt;Test segmentation monthly with port scans—trusting your config is how breaches happen.
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Access to a network device (Cisco IOS, Linux bridge, or cloud VPC) for VLAN configuration&lt;/li&gt;
&lt;li&gt;Basic understanding of OSI model layers 2-4&lt;/li&gt;
&lt;li&gt;A firewall platform (iptables/nftables on Linux, or cloud-native like AWS Security Groups)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nmap&lt;/code&gt; and &lt;code&gt;tcpdump&lt;/code&gt; installed on test machines for verification&lt;/li&gt;
&lt;li&gt;Terraform or similar IaC tool if automating (recommended)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Segmentation Matters — The "Flat Network is a Crime" Argument
&lt;/h2&gt;

&lt;p&gt;A flat network is the architectural equivalent of putting all your servers in one room with the door unlocked. It's convenient for the first deployment, but the moment an attacker finds one vulnerability—an unpatched web app, a Redis without auth, a Jenkins with default creds—they own everything. Lateral movement becomes trivial because there are no boundaries to cross.&lt;/p&gt;

&lt;p&gt;The principle is simple: least privilege applied to the network layer. Every service should only talk to exactly what it needs, on exactly the ports required, and nothing else. This isn't paranoia—it's physics. You cannot defend what you cannot isolate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Q: "But my startup has 5 services—do I really need VLANs?"&lt;/strong&gt;&lt;br&gt;
Yes. You won't stay a startup forever, and retrofitting segmentation into a production network is a nightmare that involves downtime, broken dependencies, and late-night rollbacks. Start segmented from day one, even if it's just three VLANs. Your future self will thank you.&lt;/p&gt;

&lt;h2&gt;
  
  
  VLAN Fundamentals — Not Just for Network Engineers Anymore
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What VLANs Actually Do (and Don't Do)
&lt;/h3&gt;

&lt;p&gt;VLANs isolate broadcast domains at Layer 2. That's it. They prevent ARP storms from crossing segments and force traffic through a router for inter-VLAN communication. But they are not encryption, not authentication, and not a security boundary on their own. If you trunk VLANs together without firewall rules, you've built a flat network with extra steps.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/security/network-segmentation-vlans-and-firewall-rules-for-service-isolation/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networksegmentation</category>
      <category>vlansecurity</category>
      <category>firewallrules</category>
      <category>infrastructuresecurity</category>
    </item>
    <item>
      <title>Firewall 101: The 'Drop Everything by Default' Manifesto</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Sun, 19 Jul 2026 14:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/firewall-101-the-drop-everything-by-default-manifesto-2d9g</link>
      <guid>https://dev.to/hugovalters/firewall-101-the-drop-everything-by-default-manifesto-2d9g</guid>
      <description>&lt;p&gt;I once audited a "secure" government-contractor network where the lead admin proudly showed me their $25,000 Next-Gen Firewall. It had every subscription active: AI-powered threat detection, SSL inspection, sandboxing—the works. Then I looked at the bottom of the filter list. &lt;/p&gt;

&lt;p&gt;Rule #157: &lt;code&gt;chain=forward action=accept src-address=0.0.0.0/0 dst-address=0.0.0.0/0 comment="Temporary fix for printer issues"&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;That "temporary fix" had been there for eighteen months. Because the admin couldn't figure out which specific ports the legacy Xerox scanner needed, they just opened the entire network to the entire world. They had spent $25,000 on a gatekeeper, and then handed the keys to everyone on the street because they didn't want to spend twenty minutes reading a packet capture.&lt;/p&gt;

&lt;p&gt;If you have a "Permit All" or "Allow Any" rule at the end of your firewall, you don't have a firewall; you have a very expensive, very warm paperweight. You aren't practicing security; you are practicing hope. And in the world of 2026, hope is a remarkably poor defense against a motivated threat actor.&lt;/p&gt;

&lt;p&gt;It is time to nuke your rules, embrace the "Default Deny" manifesto, and build a configuration where every single bit of data has to justify its existence before it’s allowed to pass.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rant: The "Troubleshooting" Lie
&lt;/h3&gt;

&lt;p&gt;We’ve all heard it: "I’ll just disable the firewall for a second to see if that’s the problem." &lt;/p&gt;

&lt;p&gt;That "second" becomes an hour. That hour becomes a weekend. That weekend becomes a year. Most "Permit All" rules are the scars of a sysadmin who got tired of fighting with a vendor’s vague documentation. Instead of doing the work—using &lt;code&gt;tcpdump&lt;/code&gt; or the MikroTik &lt;code&gt;Packet Sniffer&lt;/code&gt; to see exactly what traffic is being blocked—they take the path of least resistance. &lt;/p&gt;

&lt;p&gt;The problem is that once you open that door, you never close it. You forget. Or you're afraid that closing it will break something you don't understand. &lt;/p&gt;

&lt;p&gt;A Senior Sysadmin operates under a different philosophy: &lt;strong&gt;If I don't understand why a packet is moving, it shouldn't be moving.&lt;/strong&gt; Security is not a feature you add on top of a working network. Security &lt;em&gt;is&lt;/em&gt; the network. If your application doesn't work under a strict "Default Deny" policy, the application is broken, not the firewall.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics: The Default Deny Principle
&lt;/h3&gt;

&lt;p&gt;The "Default Deny" principle (also known as "Whitelist-only") is the only sane way to manage a network. In this model, you start with a completely empty routing table and a firewall that drops every single packet. &lt;/p&gt;

&lt;p&gt;You then add "Allow" rules for specific, documented needs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Allow&lt;/strong&gt; DNS (UDP 53) to your trusted resolvers.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Allow&lt;/strong&gt; HTTPS (TCP 443) to your web servers.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Allow&lt;/strong&gt; SSH (TCP 22) only from your Management Jump Box.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything else—every random scan, every misconfigured IoT device phoning home, every lateral movement attempt from a compromised laptop—hits the "Implicit Drop" at the bottom of the list and vanishes.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why "Blacklisting" Fails
&lt;/h4&gt;

&lt;p&gt;Most consumer routers and amateur setups use "Default Allow." They allow everything and try to block "bad" things. This is a losing game. There are billions of "bad" IPs and thousands of "bad" ports. You cannot possibly maintain a list of everything you &lt;em&gt;don't&lt;/em&gt; want. You must maintain a list of exactly what you &lt;em&gt;do&lt;/em&gt; want.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics: Stateful Packet Inspection (SPI)
&lt;/h3&gt;

&lt;p&gt;To run a "Default Deny" firewall without losing your mind, you must use &lt;strong&gt;Stateful Packet Inspection&lt;/strong&gt;. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/firewall_101-the_drop_everything_by_default_manifesto/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networking</category>
      <category>firewall</category>
      <category>security</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>If You Can't See It, You Can't Fix It: Network Monitoring with SNMP &amp; Grafana</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Sat, 18 Jul 2026 14:15:03 +0000</pubDate>
      <link>https://dev.to/hugovalters/if-you-cant-see-it-you-cant-fix-it-network-monitoring-with-snmp-grafana-1no9</link>
      <guid>https://dev.to/hugovalters/if-you-cant-see-it-you-cant-fix-it-network-monitoring-with-snmp-grafana-1no9</guid>
      <description>&lt;p&gt;I recently sat in a war room where three senior developers were arguing about whose microservice was causing "latency spikes" in the production environment. They were staring at application logs, debating garbage collection cycles, and re-reading their distributed tracing spans. The CEO was breathing down their necks because the checkout page was taking six seconds to load.&lt;/p&gt;

&lt;p&gt;I opened a Grafana dashboard, pointed to a jagged purple line that had hit a flat ceiling at 1,000 Mbps, and said: "Your app is fine. Your backup script is saturating the 1Gbps uplink between the database and the app server."&lt;/p&gt;

&lt;p&gt;They looked at me like I was a wizard. I wasn't. I just had the basic decency to monitor my interfaces.&lt;/p&gt;

&lt;p&gt;If your "Network Monitoring" strategy consists of waiting for a user to submit a ticket saying "the internet is slow," you are not a sysadmin; you are a reactive fire-fighter, and you are failing at your job. In the world of 2026, "slow" is just a subjective lie told by people who don't have data. Throughput, jitter, and packet loss are the objective truths of a network. If you aren't polling your OIDs and visualizing your traffic in real-time, you are flying a plane in a storm without an altimeter.&lt;/p&gt;

&lt;p&gt;It is time to stop guessing and start measuring. It is time to embrace SNMP and the TIG stack.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rant: The Observability Gap
&lt;/h3&gt;

&lt;p&gt;Most modern "DevOps" engineers are obsessed with application observability. They have Prometheus scraping every Go binary, they have Loki ingesting every log line, and they have Jaeger tracing every request. But they treat the network as a "given"—a magical, infinite pipe that just works. &lt;/p&gt;

&lt;p&gt;Then, one Tuesday at 2 PM, the "Network is Slow" tickets start rolling in. &lt;/p&gt;

&lt;p&gt;The reactive admin logs into the router, runs &lt;code&gt;tool profile&lt;/code&gt; or &lt;code&gt;top&lt;/code&gt;, sees the CPU is at 10%, and tells the user: "The router is fine, it must be your laptop." This is the ultimate sign of incompetence. A router's CPU can be at 10% while its interfaces are being absolutely throttled to death. A switch can be perfectly healthy while a single port is suffering from an MTU mismatch that is causing 40% packet fragmentation.&lt;/p&gt;

&lt;p&gt;You cannot manage what you cannot see. If you don't have a 24-hour history of every bit that passed through every port on your core switch, you have no baseline. And without a baseline, you have no way of knowing what "normal" actually looks like.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics: SNMP (The "Simple" Protocol That Isn't)
&lt;/h3&gt;

&lt;p&gt;We’ve been using &lt;strong&gt;SNMP (Simple Network Management Protocol)&lt;/strong&gt; since the late 1980s. It is old, it is clunky, it uses ASN.1 (Abstract Syntax Notation One), and its security (at least in version 2c) is a joke. But it is the universal language of hardware. &lt;/p&gt;

&lt;p&gt;You can't install a Prometheus exporter or a Datadog agent on a Cisco Catalyst, a MikroTik CCR, or a Juniper backbone. These devices are closed boxes. To get data out of them, you must use SNMP.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. The OID: The GPS of Data
&lt;/h4&gt;

&lt;p&gt;Everything in an SNMP-enabled device is mapped to an &lt;strong&gt;OID (Object Identifier)&lt;/strong&gt;. An OID is a dotted-decimal string that represents a location in a hierarchical tree. &lt;/p&gt;

&lt;p&gt;For example: &lt;code&gt;1.3.6.1.2.1.2.2.1.10.1&lt;/code&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;1.3.6.1.2.1&lt;/code&gt; is the standard "mib-2" branch.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.2.2.1.10&lt;/code&gt; is the "ifInOctets" (Input Bytes) branch.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.1&lt;/code&gt; is the index of the specific interface.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you "poll" an SNMP device, you are essentially asking: "Give me the value at this specific coordinate." &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/if_you_cant_see_it_you_cant_fix_it-network-monitoring_with_snmp_grafana/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networking</category>
      <category>monitoring</category>
      <category>grafana</category>
      <category>snmp</category>
    </item>
    <item>
      <title>MikroTik FastTrack: The Performance Miracle That Breaks Your Firewall</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Fri, 17 Jul 2026 14:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/mikrotik-fasttrack-the-performance-miracle-that-breaks-your-firewall-abf</link>
      <guid>https://dev.to/hugovalters/mikrotik-fasttrack-the-performance-miracle-that-breaks-your-firewall-abf</guid>
      <description>&lt;p&gt;I’ve been working with MikroTik since the days when the "RB" in RB450 stood for a board you had to manually case, and RouterOS was still struggling to figure out how to handle multi-core CPUs. If there is one feature that has caused more confusion, broken more QOS trees, and saved more underpowered ARM/MIPS chips than anything else, it is &lt;strong&gt;FastTrack&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It’s the classic sysadmin story: You upgrade a client from a 100Mbps fiber line to a 1Gbps circuit. You plug in their trusty hAP ac2 or an RB4011, and you realize the CPU is pinned at 100% while barely pushing 400Mbps. You go into the firewall, add that magical &lt;code&gt;fasttrack-connection&lt;/code&gt; rule, and—boom—the throughput hits 950Mbps and the CPU drops to 15%. &lt;/p&gt;

&lt;p&gt;You feel like a god. Until ten minutes later, when the VoIP phones start jittering, the IPsec tunnel to the branch office collapses, and your carefully crafted Mangle rules for traffic shaping stop marking a single byte. &lt;/p&gt;

&lt;p&gt;Welcome to the FastTrack trade-off. You didn't just "optimize" your router; you told it to start ignoring its own instructions for 90% of your traffic. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics: The "Slow Path" vs. The "Fast Path"
&lt;/h3&gt;

&lt;p&gt;To understand why FastTrack breaks things, you have to understand the &lt;strong&gt;Standard Packet Flow&lt;/strong&gt; in RouterOS (which is built on the Linux kernel's Netfilter/Xtables architecture). &lt;/p&gt;

&lt;h4&gt;
  
  
  1. The Slow Path (The Standard Flow)
&lt;/h4&gt;

&lt;p&gt;In a standard configuration, every single packet in a stream is inspected. It goes through the &lt;code&gt;prerouting&lt;/code&gt; chain, gets checked against the &lt;code&gt;forward&lt;/code&gt; filter, passes through the &lt;code&gt;mangle&lt;/code&gt; table for marking, hits the &lt;code&gt;queue tree&lt;/code&gt; for bandwidth limiting, and finally undergoes &lt;code&gt;postrouting&lt;/code&gt; (NAT). This is "The Slow Path." It is incredibly flexible, allowing you to do complex layer-7 filtering or per-connection QOS, but it is CPU-intensive because the kernel has to process every header for every packet.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. The Fast Path (The Shortcut)
&lt;/h4&gt;

&lt;p&gt;FastPath (the precursor to FastTrack) was the first attempt to skip this. If a packet is simple—no NAT, no firewall rules, no mangle—the kernel just shunts it straight from the input interface to the output interface. &lt;/p&gt;

&lt;h4&gt;
  
  
  3. FastTrack (The Hybrid)
&lt;/h4&gt;

&lt;p&gt;FastTrack is the "Best of Both Worlds" (theoretically). It works by looking at the first few packets of a connection (the "handshake"). Once the connection is established and the firewall marks it as &lt;code&gt;established,related&lt;/code&gt;, the FastTrack handler steps in. It marks that specific connection in the &lt;code&gt;conntrack&lt;/code&gt; table. &lt;/p&gt;

&lt;p&gt;From that point forward, most subsequent packets in that stream completely bypass the Linux kernel's networking stack. They skip the firewall filter. They skip the mangle table. They skip the queue trees. They are routed at near-wire-speed using minimal CPU cycles. &lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics of the Break: Why Things Stop Working
&lt;/h3&gt;

&lt;p&gt;The reason FastTrack "breaks" your firewall is simple: &lt;strong&gt;You can't filter what the CPU never sees.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. The QOS Death
&lt;/h4&gt;

&lt;p&gt;If you are using Simple Queues or a Queue Tree to prioritize VoIP (DSCP/TOS) or throttle a specific user, those queues rely on the kernel seeing the packets to calculate the bandwidth and enforce the limit. Because FastTracked packets bypass the queueing subsystem, your QOS rules become invisible. Your "guaranteed" 5Mbps for the SIP trunk is now competing for air with a FastTracked Steam download.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/mikrotik_fasttrack-the_performance_miracle_that_breaks_your_firewall/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networking</category>
      <category>mikrotik</category>
      <category>firewall</category>
      <category>performance</category>
    </item>
    <item>
      <title>Port Forwarding is a Relic: Why You Should Nuke Your WAN-Facing Rules</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Thu, 16 Jul 2026 14:15:03 +0000</pubDate>
      <link>https://dev.to/hugovalters/port-forwarding-is-a-relic-why-you-should-nuke-your-wan-facing-rules-446b</link>
      <guid>https://dev.to/hugovalters/port-forwarding-is-a-relic-why-you-should-nuke-your-wan-facing-rules-446b</guid>
      <description>&lt;p&gt;I recently audited a "prosumer" home-office network for a developer who was quite proud of his setup. He had a top-of-the-line router, a 24-bay NAS, and a rack full of micro-servers. When I looked at his NAT configuration, I saw a list of twenty-five port forwarding rules. &lt;/p&gt;

&lt;p&gt;Port 32400 for Plex. Port 8123 for Home Assistant. Port 25565 for a Minecraft server. Port 22 for SSH (but moved to 2222, because he’s "clever"). Port 80 and 443 for a reverse proxy. &lt;/p&gt;

&lt;p&gt;I asked him, "Do you enjoy hosting a public arcade for the world's botnets?" &lt;/p&gt;

&lt;p&gt;He looked at me like I was the crazy one. "It’s convenient," he said. "I can access my files from anywhere." &lt;/p&gt;

&lt;p&gt;If your definition of "convenience" involves leaving twenty-five unlocked windows in your house and hoping nobody notices the one that leads directly to your jewelry box, then sure, port forwarding is great. But in the world of 2026, where automated scanners map the entire IPv4 space in hours and zero-day vulnerabilities in common consumer apps drop weekly, port forwarding is an architectural relic that needs to be nuked from orbit.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics: The Shodan Spotlight
&lt;/h3&gt;

&lt;p&gt;To understand why your "obscure" port forwarding rules are a disaster, you have to understand that "security through obscurity" is a myth that died twenty years ago. &lt;/p&gt;

&lt;h4&gt;
  
  
  1. The 45-Minute Window
&lt;/h4&gt;

&lt;p&gt;The second you open a port on your WAN interface, you aren't just letting your phone connect to your Plex server. You are announcing your presence to every automated scanner on the planet. Tools like &lt;strong&gt;ZMap&lt;/strong&gt; and &lt;strong&gt;Masscan&lt;/strong&gt; allow attackers to probe the entire internet for specific open ports in under an hour. &lt;/p&gt;

&lt;p&gt;Services like &lt;strong&gt;Shodan&lt;/strong&gt; and &lt;strong&gt;Censys&lt;/strong&gt; do the work for them. They don't just see that port 8123 is open; they perform banner grabbing. They identify that you are running Home Assistant version 2024.1.2. They see your SSL certificate. They fingerprint your OS. Within minutes of a port being opened, your IP address is indexed in a searchable database of vulnerable targets.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. The Pre-Auth RCE Nightmare
&lt;/h4&gt;

&lt;p&gt;You might think, "Well, my Home Assistant has a strong password." That doesn't matter if there is a vulnerability in the web server handling the request. &lt;/p&gt;

&lt;p&gt;History is littered with pre-authentication Remote Code Execution (RCE) vulnerabilities in "safe" applications. Remember the Plex vulnerabilities? The QNAP ransomware outbreaks? The endless stream of PHP exploits? If an attacker can trigger a buffer overflow or a path traversal before the login prompt even appears, your "strong password" is about as useful as a screen door in a hurricane. &lt;/p&gt;

&lt;p&gt;Once an attacker gets code execution on that one internal service, they are &lt;em&gt;inside&lt;/em&gt; your network. They are sitting on your local VLAN. From there, they can sniff traffic, pivot to your unpatched printer, or use your NAS as a staging ground for a ransomware attack on your entire house or office.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fix: The VPN-Only Model
&lt;/h3&gt;

&lt;p&gt;The Senior Sysadmin approach to remote access is binary: &lt;strong&gt;Zero open ports on the WAN.&lt;/strong&gt; In 2026, there is absolutely zero justification for exposing a web UI or a game server directly to the internet. We have reached a point where VPN technology is faster, lighter, and more secure than it has ever been. &lt;/p&gt;

&lt;h4&gt;
  
  
  1. The Stealth of WireGuard
&lt;/h4&gt;

&lt;p&gt;If you must open exactly one port, it should be for &lt;strong&gt;WireGuard&lt;/strong&gt;. WireGuard is the gold standard of modern VPNs. It is incredibly fast, it runs in the kernel, and most importantly, it is "silent." &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/port-forwarding-is-a-relic-why-you-should-nuke-your-wan-facing-rules/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networking</category>
      <category>security</category>
      <category>vpn</category>
      <category>firewall</category>
    </item>
    <item>
      <title>Proxy vs VPN: Stop Confusing Privacy with Security</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Wed, 15 Jul 2026 14:15:03 +0000</pubDate>
      <link>https://dev.to/hugovalters/proxy-vs-vpn-stop-confusing-privacy-with-security-26a3</link>
      <guid>https://dev.to/hugovalters/proxy-vs-vpn-stop-confusing-privacy-with-security-26a3</guid>
      <description>&lt;p&gt;I recently had a conversation with a developer who was convinced their home network was "fully secured" because they had a "VPN" extension active in Chrome. They were browsing a sensitive site in one tab while, in the background, their Windows OS was dutifully phoning home to Microsoft, their Discord client was leaking their actual public IP via WebRTC, and their Steam client was downloading a 40GB update over their unencrypted ISP gateway.&lt;/p&gt;

&lt;p&gt;When I pointed this out, they were baffled. "But the icon in my browser is green!" they said.&lt;/p&gt;

&lt;p&gt;This is the result of a decade of predatory marketing by "VPN" companies that sell glorified SOCKS5 or HTTP proxies as "System-wide Security Solutions." If you think a browser extension is a VPN, you aren't just wrong; you are operating under a false sense of security that is more dangerous than having no protection at all. In the world of networking, a proxy and a VPN are two fundamentally different tools designed for two fundamentally different jobs. &lt;/p&gt;

&lt;p&gt;It’s time to look at the OSI model, stop trusting "one-click" solutions, and understand why your operating system is still snitching on you.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rant: The "Browser VPN" Scam
&lt;/h3&gt;

&lt;p&gt;Let’s get one thing straight: &lt;strong&gt;If you only installed it in your browser, it is not a VPN.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A real Virtual Private Network (VPN) creates a virtual network interface at the OS level. It intercepts &lt;em&gt;every single packet&lt;/em&gt; leaving your computer, regardless of which application generated it. A browser extension, by definition, is confined to the sandbox of the browser. It is a proxy—usually an HTTPS or SOCKS5 proxy—that tells the browser to route its specific requests through a middleman server.&lt;/p&gt;

&lt;p&gt;The marketing departments of these companies use the term "VPN" because "Proxy" sounds like something from 1998. They know "VPN" sells subscriptions. But for a Senior Engineer, this distinction is critical. If your "VPN" doesn't have a &lt;code&gt;tun0&lt;/code&gt; or &lt;code&gt;wg0&lt;/code&gt; interface in your &lt;code&gt;ifconfig&lt;/code&gt; or &lt;code&gt;ipconfig&lt;/code&gt; output, you are just using a proxy. Your background system telemetry, your OS updates, your CLI tools (&lt;code&gt;curl&lt;/code&gt;, &lt;code&gt;wget&lt;/code&gt;, &lt;code&gt;ssh&lt;/code&gt;), and your other desktop applications are all still naked on the public internet.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics: Layer 3 vs. Layer 7
&lt;/h3&gt;

&lt;p&gt;To understand why this matters, we have to look at the &lt;strong&gt;OSI (Open Systems Interconnection) Model&lt;/strong&gt;. This isn't just academic fluff; it is the blueprint of how data moves across the wire.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Proxies: The Layer 7 (Application) Approach
&lt;/h4&gt;

&lt;p&gt;A proxy works at the &lt;strong&gt;Application Layer&lt;/strong&gt;. When you use an HTTP proxy, your browser doesn't just send raw packets; it sends a specific request to the proxy server: "Please fetch &lt;code&gt;example.com&lt;/code&gt; for me." The proxy server then makes that request on your behalf, gets the result, and passes it back to you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Benefit:&lt;/strong&gt; It’s incredibly lightweight. There is no complex encryption handshake for the whole system. You can have 50 different proxies for 50 different browser tabs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Failure:&lt;/strong&gt; It only understands the protocol it was built for. An HTTP proxy won't handle your BitTorrent traffic. A SOCKS5 proxy won't help your DNS requests unless specifically configured. Crucially, it doesn't encrypt your traffic between the app and the proxy unless the proxy itself uses HTTPS (which many don't).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. VPNs: The Layer 3 (Network) Approach
&lt;/h4&gt;

&lt;p&gt;A VPN works at the &lt;strong&gt;Network Layer&lt;/strong&gt;. It doesn't care about "requests" or "websites." It only cares about &lt;strong&gt;Packets&lt;/strong&gt;. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/proxy-vs-vpn-stop_confusing_privacy_with_security/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networking</category>
      <category>proxy</category>
      <category>vpn</category>
      <category>security</category>
    </item>
    <item>
      <title>SSH Tunneling: The Swiss Army Knife of Networking You're Not Using</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Tue, 14 Jul 2026 14:15:03 +0000</pubDate>
      <link>https://dev.to/hugovalters/ssh-tunneling-the-swiss-army-knife-of-networking-youre-not-using-29l1</link>
      <guid>https://dev.to/hugovalters/ssh-tunneling-the-swiss-army-knife-of-networking-youre-not-using-29l1</guid>
      <description>&lt;p&gt;I recently watched a DevOps team spend three days arguing over the routing tables of a new WireGuard Site-to-Site tunnel. They just wanted to give a single developer access to a staging Prometheus dashboard that was sitting on a private subnet behind an ivory tower of firewalls. Three days of YAML, routing conflicts, and security group adjustments for a task that could have been solved in three seconds with a single CLI command.&lt;/p&gt;

&lt;p&gt;I walked over, typed &lt;code&gt;ssh -L 9090:localhost:9090 staging-gw&lt;/code&gt;, and the dashboard was live on their local machine. &lt;/p&gt;

&lt;p&gt;"Is that secure?" they asked.&lt;/p&gt;

&lt;p&gt;If you don't trust the SSH tunnel you’re already using to manage the server, you have much bigger problems than a port forward. &lt;/p&gt;

&lt;p&gt;In the era of "Zero Trust" and complex overlay networks, we’ve forgotten the raw, elegant power of the SSH tunnel. It is the Swiss Army Knife of networking. It bypasses firewalls, encrypts insecure protocols, and punches through NAT like a hot knife through butter. But it also has sharp edges. If you don't understand the difference between &lt;code&gt;-L&lt;/code&gt; and &lt;code&gt;-R&lt;/code&gt;, or if you try to use it as a permanent networking backbone, you’re going to find out exactly why "TCP-over-TCP" is a phrase that makes veteran network engineers break out in a cold sweat.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rant: The Over-Engineered VPN Trap
&lt;/h3&gt;

&lt;p&gt;We have become obsessed with infrastructure as a service. We want a "solution" for everything. Need to access a database? "Deploy a VPN." Need to bypass a proxy? "Set up a SASE gateway." &lt;/p&gt;

&lt;p&gt;Don't get me wrong; VPNs have their place (as I've written about extensively). But for the surgical, temporary, or emergency tasks that define the life of a Senior Sysadmin, a VPN is a sledgehammer where a scalpel is required. &lt;/p&gt;

&lt;p&gt;The SSH daemon is already there. It’s audited, it’s hardened, and it’s already authenticated. Using it for port forwarding isn't "hacking" the system; it’s using the protocol for exactly what it was designed to do: provide a secure channel for data. &lt;/p&gt;

&lt;p&gt;If you are setting up a 50-node mesh network just so one person can check a &lt;code&gt;phpMyAdmin&lt;/code&gt; page on a legacy server, you aren't being "secure"—you're being inefficient.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics: How SSH Port Forwarding Works
&lt;/h3&gt;

&lt;p&gt;At its core, SSH tunneling is about &lt;strong&gt;Encapsulation&lt;/strong&gt;. You are taking a raw TCP stream from a local or remote port and wrapping it inside the encrypted SSH session. The SSH client and server act as the "entry" and "exit" points for these packets.&lt;/p&gt;

&lt;p&gt;There are three primary types of tunnels you need to master. If you have to look at the &lt;code&gt;man&lt;/code&gt; page every time you use them, you haven't been in the trenches long enough.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Local Port Forwarding (&lt;code&gt;-L&lt;/code&gt;): The "Pull"
&lt;/h4&gt;

&lt;p&gt;Local forwarding is used when you want to access a service on a remote network as if it were running on your local machine. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Syntax:&lt;/strong&gt; &lt;code&gt;ssh -L [local-address:]local-port:remote-host:remote-port server&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Imagine a database server (&lt;code&gt;db-internal&lt;/code&gt;) that only listens on &lt;code&gt;localhost:3306&lt;/code&gt; for security reasons. You are sitting at home, connected via SSH to a jump box (&lt;code&gt;gateway&lt;/code&gt;). &lt;/p&gt;

&lt;p&gt;When you run &lt;code&gt;ssh -L 3306:db-internal:3306 gateway&lt;/code&gt;, your local SSH client starts listening on &lt;code&gt;localhost:3306&lt;/code&gt;. When your local DB tool connects to &lt;code&gt;localhost:3306&lt;/code&gt;, the SSH client intercepts the packets, encrypts them, sends them through the tunnel to the &lt;code&gt;gateway&lt;/code&gt;, and the &lt;code&gt;gateway&lt;/code&gt; then opens a connection to &lt;code&gt;db-internal:3306&lt;/code&gt;. &lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/ssh_tunneling-the_swiss_army_knife_of_networking_youre_not_using/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networking</category>
      <category>ssh</category>
      <category>linux</category>
      <category>sysadmin</category>
    </item>
    <item>
      <title>Proxmox SDN: Multi-Node Cluster Networking</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Mon, 13 Jul 2026 14:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/proxmox-sdn-multi-node-cluster-networking-43ng</link>
      <guid>https://dev.to/hugovalters/proxmox-sdn-multi-node-cluster-networking-43ng</guid>
      <description>&lt;h2&gt;
  
  
  Introduction – Why SDN in Proxmox Isn’t Just a Buzzword
&lt;/h2&gt;

&lt;p&gt;I watched a junior admin bring down a 12-node production cluster for four hours during a maintenance window because he copy-pasted bridge configs from Node A to Node B without realizing Node B had a different physical NIC naming scheme. The VLAN tags were off by one on three bridges. Live migrations failed silently for two weeks before we noticed.&lt;/p&gt;

&lt;p&gt;That's the problem with traditional Linux bridges in multi-node Proxmox clusters: every node's &lt;code&gt;/etc/network/interfaces&lt;/code&gt; is a snowflake. VLAN tagging drifts across hosts. Manual edits accumulate like technical debt. And when a VM live migration fails because the target node's bridge doesn't have the right VLAN trunked, you're left explaining to management why "just move the VM" isn't that simple.&lt;/p&gt;

&lt;p&gt;Proxmox SDN solves this by separating network policy from physical topology. Instead of editing config files on each node, you define zones, VNets, and subnets once—cluster-wide. The SDN controller pushes that config to every node. Your bridges become consistent, migrations work, and you stop waking up at 3 AM for VLAN tag mismatches.&lt;/p&gt;

&lt;p&gt;This guide covers building a resilient, multi-tenant SDN with VXLAN and VLAN zones. No hand-holding. No "just works" marketing. Just what I've learned from breaking and fixing Proxmox clusters in production since VE 7.4.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traditional bridge configs per node cause drift and migration failures in multi-node clusters&lt;/li&gt;
&lt;li&gt;Proxmox SDN centralizes network config across all nodes via &lt;code&gt;/etc/pve/sdn/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;VXLAN zones support 16 million segments vs VLAN's 4096—use VXLAN for clusters &amp;gt;3 nodes&lt;/li&gt;
&lt;li&gt;Live migrations work reliably with VXLAN but require identical peer configs on all nodes&lt;/li&gt;
&lt;li&gt;Missing &lt;code&gt;ifupdown2&lt;/code&gt; package causes SDN changes to be silently ignored
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Proxmox VE 7.4+ or 8.x (tested on 8.2)&lt;/li&gt;
&lt;li&gt;Cluster with 3+ nodes (quorum required for SDN changes)&lt;/li&gt;
&lt;li&gt;L3 connectivity between all cluster nodes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ifupdown2&lt;/code&gt; package installed on every node (&lt;code&gt;apt install ifupdown2&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Physical switch MTU &amp;gt;= 1550 if using VXLAN (1500 + 50 byte overhead)&lt;/li&gt;
&lt;li&gt;IGMP snooping enabled on switches if using VXLAN multicast&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Proxmox SDN Architecture – The 30,000-Foot View (Without the BS)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Core Components – Zones, VNets, Subnets, and IPAM
&lt;/h3&gt;

&lt;p&gt;Proxmox SDN has four building blocks. Understanding them before you touch the GUI saves hours of debugging.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zone:&lt;/strong&gt; Defines the transport mechanism. Options are &lt;code&gt;vlan&lt;/code&gt;, &lt;code&gt;vxlan&lt;/code&gt;, &lt;code&gt;qinq&lt;/code&gt;, or &lt;code&gt;simple&lt;/code&gt;. Pick one transport per zone—mixing them in the same zone causes pain I won't wish on anyone.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;VNet:&lt;/strong&gt; A logical network segment—think of it as a virtual switch. Create one VNet per tenant or workload type. I use &lt;code&gt;prod-web&lt;/code&gt;, &lt;code&gt;prod-db&lt;/code&gt;, &lt;code&gt;dev-app&lt;/code&gt; naming.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Subnet:&lt;/strong&gt; An IP range within a VNet. Must use CIDR notation and must be unique across the entire cluster. Overlap subnets between VNets? You'll get routing chaos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IPAM:&lt;/strong&gt; Proxmox's built-in IP address management. Optional, but use it if you hate maintaining IP spreadsheets. It tracks allocations per VNet and prevents duplicate IPs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Check current SDN status across the cluster&lt;/span&gt;
pvesh get /cluster/sdn/status &lt;span class="nt"&gt;--output-format&lt;/span&gt; json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns JSON showing each zone's state, VNet membership, and any errors. If you see &lt;code&gt;"state": "error"&lt;/code&gt; on any zone, fix that before adding VMs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why VXLAN &amp;gt; VLAN for Multi-Node (and When VLAN Still Wins)
&lt;/h3&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/proxmox/proxmox-sdn-multi-node-cluster-networking/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>proxmox</category>
      <category>sdn</category>
      <category>vxlan</category>
      <category>clusternetworking</category>
    </item>
    <item>
      <title>pfSense vs OPNsense: A Pragmatic Comparison for Self-Hosters</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Sun, 12 Jul 2026 14:15:03 +0000</pubDate>
      <link>https://dev.to/hugovalters/pfsense-vs-opnsense-a-pragmatic-comparison-for-self-hosters-43c9</link>
      <guid>https://dev.to/hugovalters/pfsense-vs-opnsense-a-pragmatic-comparison-for-self-hosters-43c9</guid>
      <description>&lt;p&gt;I've been running firewalls since the days of m0n0wall on CF cards, and I still remember the sinking feeling at 2 AM when a bad pfSense config push locked me out of a remote office. The Soekris box was blinking its lonely LED, and I was three time zones away with no IPMI. That was 2008, and the lessons from that era still apply today: your firewall is the most critical piece of infrastructure you'll touch, and choosing the wrong platform means accepting unnecessary risk.&lt;/p&gt;

&lt;p&gt;This guide is for self-hosters, homelab operators, and small-to-medium business IT admins who need a production-grade firewall without the Cisco price tag. By the end, you'll understand the architectural differences between pfSense and OPNsense, know which one fits your operational profile, and have concrete migration paths if you need to switch. I'm not here to sell you on either — both are better than any consumer router, and both can ruin your weekend if you don't respect them.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pfSense and OPNsense both run on FreeBSD with pf packet filter — the core is identical&lt;/li&gt;
&lt;li&gt;OPNsense ships with boot environments, WireGuard, and Suricata built-in; pfSense requires packages for these&lt;/li&gt;
&lt;li&gt;pfSense has better cloud marketplace presence and commercial support; OPNsense has better defaults and upgrade safety&lt;/li&gt;
&lt;li&gt;Choose pfSense for enterprise/cloud deployments with existing ecosystem investment&lt;/li&gt;
&lt;li&gt;Choose OPNsense for self-hosted environments where uptime and modern defaults matter
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before diving in, you should have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A dedicated x86 machine or VM with at least 2 GB RAM (4 GB recommended for IDS/IPS)&lt;/li&gt;
&lt;li&gt;Basic understanding of TCP/IP, subnetting, and firewall rules&lt;/li&gt;
&lt;li&gt;Access to the hardware's console or IPMI for initial setup&lt;/li&gt;
&lt;li&gt;A backup plan — both firewalls can brick themselves on a bad config&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture &amp;amp; Base System — FreeBSD Under the Hood
&lt;/h2&gt;

&lt;p&gt;The fork that created OPNsense in 2015 wasn't about technical capability — it was about licensing and development philosophy. Both projects started from m0n0wall, both use pfSense's original codebase, but they've diverged in ways that matter for daily operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kernel and Boot Environment
&lt;/h3&gt;

&lt;p&gt;pfSense migrated to HardenedBSD with version 2.5, using a monolithic kernel by default. ZFS is available but requires a manual installation — the installer still defaults to UFS. OPNsense has been on HardenedBSD since version 19.1, with ZFS as the default filesystem. This difference seems minor until you need to recover from a bad upgrade.&lt;/p&gt;

&lt;p&gt;The boot environment feature is where OPNsense pulls ahead. With ZFS, you can snapshot your entire system before an upgrade and roll back in seconds if something breaks. pfSense requires manual ZFS setup and doesn't integrate boot environments into its upgrade workflow.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# OPNsense — built-in boot environment management&lt;/span&gt;
bectl list
BE                        Active Mountpoint Space Created
default                   NR     /          1.2G  2026-06-01 14:23
upgrade-24.1              -      -          1.5G  2026-07-10 03:15

&lt;span class="c"&gt;# pfSense — requires manual ZFS boot environment creation&lt;/span&gt;
&lt;span class="c"&gt;# This is not part of the standard install&lt;/span&gt;
zfs snapshot zroot/ROOT/default@pre-upgrade-2.7.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/pfsense-vs-opnsense-a-pragmatic-comparison-for-self-hosters/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>pfsense</category>
      <category>opnsense</category>
      <category>firewall</category>
      <category>freebsd</category>
    </item>
    <item>
      <title>Site-to-Site IPsec: Connecting Offices Without Losing Your Mind</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Sat, 11 Jul 2026 14:15:03 +0000</pubDate>
      <link>https://dev.to/hugovalters/site-to-site-ipsec-connecting-offices-without-losing-your-mind-1948</link>
      <guid>https://dev.to/hugovalters/site-to-site-ipsec-connecting-offices-without-losing-your-mind-1948</guid>
      <description>&lt;p&gt;I have spent a significant portion of my adult life staring at log buffers, watching two expensive routers scream at each other in a language they both ostensibly speak, yet neither understands. There is a specific kind of hell reserved for the sysadmin trying to connect a MikroTik at a branch office to a Cisco ASA at the headquarters. &lt;/p&gt;

&lt;p&gt;You’ve got the subnets right. You’ve got the public IPs right. You’ve even double-checked the Pre-Shared Key (PSK) five times. And yet, there it is: &lt;code&gt;phase1 negotiation failed&lt;/code&gt; or the even more insulting &lt;code&gt;no proposal chosen&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;If you’ve ever found yourself clicking through 50 different permutations of "3DES," "AES-128," "SHA1," and "MD5" just to get a tunnel to stay up for more than ten minutes, you aren't doing engineering; you're doing digital alchemy. It’s 2026. If you are still relying on legacy IKEv1 and "guessing" which encryption suite your vendor implemented correctly, you are a dinosaur. It is time to standardize, move to IKEv2, and stop treating your Site-to-Site tunnels like a delicate chemistry experiment.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Rant: The "Phase 1 / Phase 2" Mismatch Hell
&lt;/h3&gt;

&lt;p&gt;The core problem with IPsec is that it was designed by a committee that hated simplicity. Unlike WireGuard, which has one way to do things, IPsec has five thousand. &lt;/p&gt;

&lt;h4&gt;
  
  
  1. The Multi-Vendor Alphabet Soup
&lt;/h4&gt;

&lt;p&gt;Every vendor (Cisco, MikroTik, Fortinet, Juniper, Ubiquiti) has a slightly different idea of what "Standard" means. Cisco might default to a 24-hour lifetime for Phase 1, while MikroTik defaults to 1 day (which is almost, but not quite, the same depending on how they count seconds). One vendor might include the "Local ID" in the identity check, while another ignores it. &lt;/p&gt;

&lt;p&gt;The moment you try to connect two different brands, you enter the Mismatch Trap. You spend four hours on the phone with "The Cisco Guy" at HQ, both of you insisting your settings are correct, while the logs show a confusing mess of "Invalid ID Information" and "Notify: No Proposal Chosen."&lt;/p&gt;

&lt;h4&gt;
  
  
  2. The Legacy Burden
&lt;/h4&gt;

&lt;p&gt;Most people are still using IKEv1 because "that’s what the tutorial said." IKEv1 is a bloated, slow, and insecure relic. It requires multiple round-trips to establish a session, it handles NAT poorly, and it is prone to fragmentation issues. If you are still using Main Mode or Aggressive Mode in 2026, you are inviting instability.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Mechanics: IKEv2 and the Glory of NAT-T
&lt;/h3&gt;

&lt;p&gt;If you want to keep your sanity, the first rule is: &lt;strong&gt;IKEv2 only.&lt;/strong&gt; #### 1. IKEv2 (Internet Key Exchange v2)&lt;br&gt;
IKEv2 was designed to fix everything that sucked about IKEv1. It has built-in support for MOBIKE (mobility), which means your tunnel can survive a brief IP change. It has a much more streamlined handshake (fewer packets, less latency). Most importantly, it handles &lt;strong&gt;Dead Peer Detection (DPD)&lt;/strong&gt; as a core part of the protocol, not as a vendor-specific hack. If the tunnel drops, IKEv2 knows immediately and starts a re-negotiation.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. NAT-Traversal (NAT-T)
&lt;/h4&gt;

&lt;p&gt;In the age of CGNAT and multi-layered NAT, IPsec usually dies because it relies on protocol 50 (ESP), which doesn't have "ports" like TCP or UDP. Many cheap ISP routers have no idea how to handle ESP and simply drop it. &lt;/p&gt;

&lt;p&gt;NAT-T solves this by wrapping the entire IPsec packet inside a UDP header on port 4500. This is mandatory for modern offices. If even one side of your tunnel is behind a NAT, you must enable NAT-T, or your Phase 2 will never initialize.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Fix: Standardize Your Suite (AEAD)
&lt;/h3&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/site-to-site-ipsec-connecting_offices_without_losing_your-mind/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networking</category>
      <category>vpn</category>
      <category>ipsec</category>
      <category>mikrotik</category>
    </item>
    <item>
      <title>Network Segmentation: VLANs and Firewall Rules for Production</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Fri, 10 Jul 2026 14:15:07 +0000</pubDate>
      <link>https://dev.to/hugovalters/network-segmentation-vlans-and-firewall-rules-for-production-2hlh</link>
      <guid>https://dev.to/hugovalters/network-segmentation-vlans-and-firewall-rules-for-production-2hlh</guid>
      <description>&lt;h1&gt;
  
  
  Network Segmentation: Isolating Services with VLANs and Firewall Rules
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction: Why Your Flat Network is a Liability
&lt;/h2&gt;

&lt;p&gt;I once walked into a post-mortem where a single compromised WordPress plugin led to an attacker pivoting from a public web server to a PCI-compliant payment database in under 90 seconds. How? The network was flat — one VLAN, one broadcast domain, no firewall rules between services. The attacker ran &lt;code&gt;arp-scan&lt;/code&gt;, found the DB server, and started exfiltrating credit card numbers over port 3306. The CISO asked me, "How do we stop this?" My answer: VLANs and firewall rules, applied correctly.&lt;/p&gt;

&lt;p&gt;Flat networks are fine for your home lab. In production, they're a breach waiting to happen. The problem is blast radius — if an attacker compromises one service, they can pivot laterally to everything. VLANs create logical barriers at Layer 2, and firewall rules enforce who talks to whom at Layers 3-4. Together, they're the minimum viable defense for any multi-service environment.&lt;/p&gt;

&lt;p&gt;This guide is for senior engineers who already know what a VLAN is but need to design, implement, and maintain segmentation that actually works. After reading, you'll be able to kill lateral movement in your network, avoid the common misconfigurations that make segmentation useless, and sleep better at night.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Flat networks let attackers pivot laterally — segment everything with VLANs and firewalls&lt;/li&gt;
&lt;li&gt;Use 5-10 VLANs for "trust zones" (web, app, db, management, DMZ), not one per microservice&lt;/li&gt;
&lt;li&gt;Default-deny firewall rules between VLANs; stateful inspection is mandatory&lt;/li&gt;
&lt;li&gt;Version-control your firewall rules and monitor dropped packets&lt;/li&gt;
&lt;li&gt;Test segmentation with &lt;code&gt;nmap&lt;/code&gt; and &lt;code&gt;tcpdump&lt;/code&gt;, not just &lt;code&gt;ping&lt;/code&gt;
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Access to a managed switch (Cisco IOS, Aruba, or similar) with VLAN support&lt;/li&gt;
&lt;li&gt;A Linux host (Ubuntu 22.04+ or Debian 12) with &lt;code&gt;iptables&lt;/code&gt; or &lt;code&gt;nftables&lt;/code&gt; installed&lt;/li&gt;
&lt;li&gt;Basic understanding of IP addressing and subnetting&lt;/li&gt;
&lt;li&gt;Root or sudo access on the Linux router/firewall&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  VLAN Fundamentals: The Logical Barrier You're Probably Misconfiguring
&lt;/h2&gt;

&lt;h3&gt;
  
  
  VLAN Tagging 101 (802.1Q) — What Most Tutorials Get Wrong
&lt;/h3&gt;

&lt;p&gt;VLAN tagging using 802.1Q inserts a 4-byte tag into Ethernet frames to identify which VLAN a packet belongs to. Most tutorials skip the critical part: &lt;strong&gt;disable DTP (Dynamic Trunking Protocol) on every switch port that shouldn't be a trunk&lt;/strong&gt;. DTP negotiates trunking automatically, and if an attacker plugs into an access port that has DTP enabled, they can negotiate a trunk and perform VLAN hopping — accessing traffic from other VLANs.&lt;/p&gt;

&lt;p&gt;Here's the Cisco IOS config to kill DTP on access ports:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;interface GigabitEthernet0/1
 description Web Server Access Port
 switchport mode access
 switchport access vlan 10
 no switchport trunk dynamic
 spanning-tree portfast
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;switchport mode access&lt;/code&gt; forces the port to access mode and disables DTP negotiation. The &lt;code&gt;spanning-tree portfast&lt;/code&gt; skips STP listening/learning for faster convergence on end-host ports. On Aruba/ProVision switches, the equivalent is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;interface 1/1
   vlan access 10
   no vlan trunk dynamic
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Linux bridging for virtualized environments (e.g., KVM with Linux bridge), you configure VLAN tagging at the interface level:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ip &lt;span class="nb"&gt;link &lt;/span&gt;add &lt;span class="nb"&gt;link &lt;/span&gt;eth0 name eth0.10 &lt;span class="nb"&gt;type &lt;/span&gt;vlan &lt;span class="nb"&gt;id &lt;/span&gt;10
ip addr add 10.0.10.1/24 dev eth0.10
ip &lt;span class="nb"&gt;link set &lt;/span&gt;eth0.10 up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/security/network-segmentation-vlans-and-firewall-rules-for-production/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>networksegmentation</category>
      <category>vlan</category>
      <category>firewallrules</category>
      <category>infrastructuresecurity</category>
    </item>
    <item>
      <title>Deploying Encrypted DNS Internally: DoH and DoT Guide</title>
      <dc:creator>Hugo | DevOps | Cybersecurity</dc:creator>
      <pubDate>Wed, 08 Jul 2026 14:15:04 +0000</pubDate>
      <link>https://dev.to/hugovalters/deploying-encrypted-dns-internally-doh-and-dot-guide-1ed1</link>
      <guid>https://dev.to/hugovalters/deploying-encrypted-dns-internally-doh-and-dot-guide-1ed1</guid>
      <description>&lt;p&gt;I was on-call when it happened. 3 AM on a Tuesday, and every single production server in our us-east-1 region started resolving &lt;code&gt;api.internal.example.com&lt;/code&gt; to a server in Belarus. Our recursive DNS resolver had been MITM'd by an attacker who'd gained access to a network tap in the colo facility. Four hours of chaos, a panicked VP, and a post-mortem that boiled down to: "Our DNS was plaintext over UDP, and we trusted the network."&lt;/p&gt;

&lt;p&gt;That was 2022. If you're still running plaintext DNS internally in 2026, you're not just behind — you're negligent. This guide is for senior sysadmins and security engineers who need to deploy encrypted DNS (DoH and DoT) in their infrastructure without breaking everything. By the end, you'll have a working deployment, a migration plan, and the scars to know what goes wrong.&lt;/p&gt;

&lt;p&gt;:::note[TL;DR]&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plaintext DNS is a massive security liability: on-path tampering, passive surveillance, and cache poisoning at the network edge&lt;/li&gt;
&lt;li&gt;Use DoT for internal infrastructure (predictable, low overhead), DoH for external-facing resolvers (evasion, compliance)&lt;/li&gt;
&lt;li&gt;Start with Unbound or CoreDNS — skip the overengineered solutions&lt;/li&gt;
&lt;li&gt;Certificate management is the #1 cause of failure: automate rotation or suffer at 3 AM&lt;/li&gt;
&lt;li&gt;Migrate gradually with opportunistic mode first, then enforce with firewall rules
:::&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A Linux server (Ubuntu 22.04+ or RHEL 9+) for your DNS resolver — don't use your laptop&lt;/li&gt;
&lt;li&gt;Root access and basic familiarity with &lt;code&gt;systemd&lt;/code&gt;, &lt;code&gt;openssl&lt;/code&gt;, and &lt;code&gt;tcpdump&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;A DNS zone you control for testing (e.g., &lt;code&gt;dns.internal.example.com&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kdig&lt;/code&gt; installed (&lt;code&gt;apt install knot-dnsutils&lt;/code&gt; or &lt;code&gt;yum install knot-dnsutils&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;At least 30 minutes of uninterrupted time — this isn't a 5-minute config&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why You Should Care About Encrypted DNS (And Why Plaintext DNS Is a Security Liability)
&lt;/h2&gt;

&lt;p&gt;Plaintext DNS over UDP is the cockroach of network protocols — it's everywhere, it's ugly, and it survives anything. Here's what it exposes you to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On-path tampering:&lt;/strong&gt; Any device between your client and the resolver can modify DNS responses. This isn't theoretical — I've seen attackers redirect traffic to phishing pages by poisoning ARP tables and injecting fake DNS responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Passive surveillance:&lt;/strong&gt; Your DNS queries reveal every service, every internal hostname, and every external dependency you have. An attacker who sniffs your DNS traffic knows your infrastructure better than your CMDB does.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cache poisoning at the network edge:&lt;/strong&gt; If an attacker can inject a single fake DNS response before the legitimate one arrives, your resolver caches it for the TTL. This is how the Kaminsky attack worked, and it's still effective against poorly configured resolvers.&lt;/p&gt;

&lt;p&gt;The false comfort of "internal network" security needs to die. In 2026, your internal network is not a trusted zone — it's a blast radius. If you're still running &lt;code&gt;dnsmasq&lt;/code&gt; with no encryption, you're basically leaving the keys in the ignition with the engine running.&lt;/p&gt;

&lt;p&gt;Here's what plaintext DNS looks like on the wire — run this on any server that's doing DNS queries:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Capture a single DNS query to show how much leaks&lt;/span&gt;
tcpdump &lt;span class="nt"&gt;-i&lt;/span&gt; any &lt;span class="nt"&gt;-X&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; 1 &lt;span class="s1"&gt;'udp port 53 and dst port 53'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will show your query in clear text: hostnames, timestamps, and source IPs. Every network hop between you and the resolver sees this. If you're thinking "but we use DNSSEC," you're missing the point — DNSSEC validates response integrity but does nothing for confidentiality or transport security.&lt;/p&gt;




&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;⚠️ DECLASSIFIED / TRUNCATED VERSION&lt;/strong&gt;&lt;br&gt;
You are reading a truncated version of this technical guide. &lt;br&gt;
To read the full, unedited deep-dive (including all configuration files, architecture diagrams, and high-res images), &lt;strong&gt;&lt;a href="https://www.valtersit.com/guides/networking/deploying-encrypted-dns-internally-doh-and-dot-guide/" rel="noopener noreferrer"&gt;visit the original post on Valters IT Docs&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>dnssecurity</category>
      <category>encrypteddns</category>
      <category>devsecops</category>
      <category>networkhardening</category>
    </item>
  </channel>
</rss>
