<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Boxvirt &#8212; Proxmox &amp; OPNsense Infrastructure Guides</title>
	<atom:link href="https://boxvirt.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://boxvirt.com/</link>
	<description>Practical self-hosted infrastructure guides for Proxmox, OPNsense, and Docker.</description>
	<lastBuildDate>Sat, 09 Aug 2025 15:39:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://boxvirt.com/wp-content/uploads/2025/07/cropped-ChatGPT-Image-12-июл.-2025-г.-19_41_55-32x32.png</url>
	<title>Boxvirt &#8212; Proxmox &amp; OPNsense Infrastructure Guides</title>
	<link>https://boxvirt.com/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>The Complete Guide to Proxmox Backups: VZDump and Proxmox Backup Server</title>
		<link>https://boxvirt.com/proxmox-backups/</link>
					<comments>https://boxvirt.com/proxmox-backups/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Sat, 09 Aug 2025 15:39:12 +0000</pubDate>
				<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[proxmox backup]]></category>
		<category><![CDATA[proxmox backup server]]></category>
		<category><![CDATA[vzdump tutorial]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=170</guid>

					<description><![CDATA[<p>Introduction: The Golden Rule of Data There&#8217;s an old saying in IT: &#171;If your data doesn&#8217;t exist in three places, it doesn&#8217;t exist at all.&#187; In a virtualized [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/proxmox-backups/">The Complete Guide to Proxmox Backups: VZDump and Proxmox Backup Server</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Introduction: The Golden Rule of Data</strong></h2>



<p>There&#8217;s an old saying in IT: &#171;If your data doesn&#8217;t exist in three places, it doesn&#8217;t exist at all.&#187; In a virtualized environment, where your entire servers are just files on a disk, this rule is more critical than ever. Fortunately, Proxmox VE provides powerful, integrated tools to ensure your virtual machines and containers are safe and recoverable.</p>



<p>This guide will cover the two primary methods for backing up your data in Proxmox: the built-in VZDump utility for local backups and the enterprise-grade, standalone Proxmox Backup Server (PBS) for advanced, efficient, and centralized backups.</p>



<h2 class="wp-block-heading"><strong>Method 1: The Built-in Backup (VZDump)</strong></h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="1024" data-id="173" src="https://boxvirt.com/wp-content/uploads/2025/08/VZDump_q90.webp" alt="Diagram of Proxmox VZDump non-deduplicated backups" class="wp-image-173" srcset="https://boxvirt.com/wp-content/uploads/2025/08/VZDump_q90.webp 1024w, https://boxvirt.com/wp-content/uploads/2025/08/VZDump_q90-300x300.webp 300w, https://boxvirt.com/wp-content/uploads/2025/08/VZDump_q90-150x150.webp 150w, https://boxvirt.com/wp-content/uploads/2025/08/VZDump_q90-768x768.webp 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>Every Proxmox VE installation comes with <code>vzdump</code>, a reliable tool that can create full backups of your running VMs and containers.</p>



<p><strong>How it Works:</strong> VZDump essentially creates a &#171;snapshot&#187; of the running guest, then archives its configuration file and all of its disk data into a single compressed file (e.g., <code>.vma.gz</code>). These backups can be stored on any storage you&#8217;ve configured in Proxmox, such as a local directory or an NFS share from a NAS.</p>



<p><strong>Key Features:</strong></p>



<ul class="wp-block-list">
<li><strong>Three Backup Modes:</strong>
<ul class="wp-block-list">
<li><strong>Snapshot:</strong> (Recommended) Creates a temporary snapshot for consistency, minimizing downtime. The VM never stops running.</li>



<li><strong>Suspend:</strong> Briefly suspends the VM to ensure perfect data consistency, then resumes it after the backup starts. Causes a short downtime.</li>



<li><strong>Stop:</strong> Completely stops the VM for the duration of the backup. Guarantees consistency but causes significant downtime.</li>
</ul>
</li>



<li><strong>Scheduling:</strong> The most powerful feature. You can set up automated backup jobs to run daily or weekly for specific VMs, ensuring you always have recent recovery points.</li>



<li><strong>Compression:</strong> Backups can be compressed (GZIP, ZSTD) to save space.</li>
</ul>



<p><strong>How to Create a Scheduled Backup Job:</strong></p>



<ol start="1" class="wp-block-list">
<li>Navigate to <code>Datacenter</code> -> <code>Backup</code>.</li>



<li>Click <code>Add</code>.</li>



<li>In the dialog, you will configure:
<ul class="wp-block-list">
<li><strong>Node:</strong> Which Proxmox server to run the job on.</li>



<li><strong>Storage:</strong> Where to save the backup files.</li>



<li><strong>Schedule:</strong> When to run the job (e.g., &#171;every day at 02:00&#187;).</li>



<li><strong>Selection:</strong> Which VMs to include (you can select them manually, by resource pool, or back up all guests).</li>



<li><strong>Mode/Compression:</strong> Choose &#171;Snapshot&#187; and your preferred compression.</li>
</ul>
</li>



<li>Click <code>Create</code>. That&#8217;s it! Your data is now protected automatically.</li>
</ol>



<h2 class="wp-block-heading"><strong>Method 2: Proxmox Backup Server (The Professional Choice)</strong></h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex"></figure>



<p>For more advanced needs, Proxmox offers a completely separate, free, and open-source product: <strong>Proxmox Backup Server (PBS)</strong>. You install PBS on a separate physical or virtual machine.</p>



<p><strong>Why use PBS? The Magic of Deduplication.</strong> Imagine you back up a 100GB VM today. Tomorrow, you change a 1GB file and run the backup again.</p>



<ul class="wp-block-list">
<li><strong>VZDump</strong> will create a whole new ~100GB backup file.</li>



<li><strong>PBS</strong> will intelligently see that 99GB of data is identical. It will only transfer and store the new 1GB of changed data.</li>
</ul>



<p>This &#171;deduplication&#187; is incredibly efficient, resulting in:</p>



<ul class="wp-block-list">
<li><strong>Massive Space Savings:</strong> Your backup storage will grow much, much slower.</li>



<li><strong>Faster Backups:</strong> Subsequent backups are lightning-fast as only changed data is sent over the network.</li>



<li><strong>Centralization:</strong> Manage backups for multiple Proxmox VE hosts from a single PBS interface.</li>
</ul>



<p><strong>How to Set It Up (High-Level Overview):</strong></p>



<ol start="1" class="wp-block-list">
<li>Install Proxmox Backup Server on a dedicated machine.</li>



<li>In the PBS interface, create a &#171;datastore&#187; – this is the storage location for your backups.</li>



<li>In your Proxmox VE interface, go to <code>Datacenter</code> -> <code>Storage</code> -> <code>Add</code>.</li>



<li>Select <code>Proxmox Backup Server</code>.</li>



<li>Enter the IP address and login details for your PBS instance.</li>



<li>Now, when you create a backup job, you can select this new PBS storage as the destination.</li>
</ol>



<h2 class="wp-block-heading"><strong>How to Restore a VM or Container</strong></h2>



<p>Restoring is simple and can be done from either a VZDump or PBS backup.</p>



<ol start="1" class="wp-block-list">
<li>Navigate to your backup storage location (e.g., <code>local</code> -> <code>Backups</code> or your PBS storage).</li>



<li>You will see a list of all your backup files.</li>



<li>Click on the backup you want to restore.</li>



<li>Click the <code>Restore</code> button.</li>



<li>You can choose to restore it over the original VM or create a new one with a new VM ID.</li>



<li>Click <code>Restore</code> and Proxmox will handle the rest.</li>
</ol>



<h2 class="wp-block-heading"><strong>Conclusion: Don&#8217;t Wait for Disaster</strong></h2>



<p>Data protection is not optional. Whether you use the simple and reliable built-in VZDump for a small setup or deploy the powerful Proxmox Backup Server for a larger environment, setting up regular, automated backups is the most important task for any system administrator.</p>



<p>To understand how data protection fits within the broader Proxmox ecosystem, be sure to check out our <strong><a href="https://boxvirt.com/proxmox-ve-guide/">Ultimate Guide to Proxmox VE</a></strong>.</p>



<p></p>
<p>Сообщение <a href="https://boxvirt.com/proxmox-backups/">The Complete Guide to Proxmox Backups: VZDump and Proxmox Backup Server</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/proxmox-backups/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Configuring Proxmox Networking: Bridges, VLANs, and Bonds Explained</title>
		<link>https://boxvirt.com/proxmox-networking/</link>
					<comments>https://boxvirt.com/proxmox-networking/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Sat, 09 Aug 2025 15:23:56 +0000</pubDate>
				<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[VLAN]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=165</guid>

					<description><![CDATA[<p>Introduction: The Heart of Your Virtualized World Once you have Proxmox installed, you&#8217;ll quickly realize that networking is the backbone of your entire virtualization setup. It’s how your [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/proxmox-networking/">Configuring Proxmox Networking: Bridges, VLANs, and Bonds Explained</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Introduction: The Heart of Your Virtualized World</strong></h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="1024" data-id="167" src="https://boxvirt.com/wp-content/uploads/2025/08/lan2.png" alt="Simple diagram of a Proxmox Linux Bridge (vmbr0)" class="wp-image-167" srcset="https://boxvirt.com/wp-content/uploads/2025/08/lan2.png 1024w, https://boxvirt.com/wp-content/uploads/2025/08/lan2-300x300.png 300w, https://boxvirt.com/wp-content/uploads/2025/08/lan2-150x150.png 150w, https://boxvirt.com/wp-content/uploads/2025/08/lan2-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>Once you have Proxmox installed, you&#8217;ll quickly realize that networking is the backbone of your entire virtualization setup. It’s how your virtual machines (VMs) and containers connect to each other, to your local network, and to the internet. While it may seem complex at first, Proxmox’s networking model is incredibly powerful and flexible.</p>



<p>This guide will demystify the core components of Proxmox networking. We’ll break down Linux Bridges, explain how to use VLANs to segment your traffic, and touch on NIC Bonding for advanced setups.</p>



<h2 class="wp-block-heading"><strong>The Core Concept: The Linux Bridge</strong></h2>



<p>The simplest way to think of a <strong>Linux Bridge</strong> (like the default <code>vmbr0</code> created during installation) is as a virtual network switch.</p>



<p>Imagine a physical switch in your office. You plug your computer into it, you plug the printer into it, and you plug the internet router into it. Now they can all talk to each other.</p>



<p>A Linux Bridge in Proxmox does the exact same thing, but virtually:</p>



<ul class="wp-block-list">
<li>Your server&#8217;s physical network card (e.g., <code>eth0</code>) is &#171;plugged into&#187; the bridge.</li>



<li>The virtual network cards of all your VMs and containers are also &#171;plugged into&#187; this same bridge.</li>
</ul>



<p>The result? All your VMs can talk to each other and access your physical LAN (and the internet) through the server&#8217;s physical NIC.</p>



<h2 class="wp-block-heading"><strong>Practical Guide: Creating a New Isolated Network</strong></h2>



<p>What if you want a separate, isolated network just for your VMs that can&#8217;t access the internet? This is easy to do by creating a new bridge that is <em>not</em> connected to a physical NIC.</p>



<ol start="1" class="wp-block-list">
<li>In your Proxmox UI, navigate to your Node -> <code>System</code> -> <code>Network</code>.</li>



<li>Click <code>Create</code> -> <code>Linux Bridge</code>.</li>



<li>Give it a name (e.g., <code>vmbr1</code>).</li>



<li><strong>Do not</strong> add any &#171;Bridge ports&#187;. Leave this field blank.</li>



<li>You can give it an IP address (e.g., <code>10.10.10.1/24</code>) if you want your Proxmox host to be able to communicate on this network.</li>



<li>Click <code>Create</code>.</li>
</ol>



<p>Now, when you create a new VM, you can choose <code>vmbr1</code> as its network bridge. All VMs on <code>vmbr1</code> will be able to talk to each other, but they will be completely isolated from your main LAN.</p>



<h2 class="wp-block-heading"><strong>Advanced Topic 1: Using VLANs in Proxmox</strong></h2>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="1024" data-id="168" src="https://boxvirt.com/wp-content/uploads/2025/08/lan1.png" alt="Technical diagram explaining Proxmox VLAN tagging" class="wp-image-168" srcset="https://boxvirt.com/wp-content/uploads/2025/08/lan1.png 1024w, https://boxvirt.com/wp-content/uploads/2025/08/lan1-300x300.png 300w, https://boxvirt.com/wp-content/uploads/2025/08/lan1-150x150.png 150w, https://boxvirt.com/wp-content/uploads/2025/08/lan1-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<p>VLANs (Virtual LANs) are a professional way to segment a single physical network into multiple logical networks. This is essential for security and organization. For example, you might want your security cameras on a separate network from your personal computers.</p>



<p>Proxmox has first-class VLAN support. The key is to have a &#171;VLAN-aware&#187; switch in your physical network.</p>



<p>Here’s how it works:</p>



<ol start="1" class="wp-block-list">
<li>Your physical switch is configured to handle tagged VLAN traffic (e.g., VLAN 10 for users, VLAN 20 for cameras).</li>



<li>In Proxmox, your main Linux Bridge (<code>vmbr0</code>) must have the &#171;VLAN aware&#187; checkbox ticked.</li>



<li>Now, for each individual VM or container, you can go to its <code>Hardware</code> tab, select the Network Device, and enter a <strong>VLAN Tag</strong> (e.g., <code>20</code>).</li>
</ol>



<p>That&#8217;s it! Proxmox will now automatically &#171;tag&#187; all traffic from that VM with the VLAN 20 ID. Your physical switch will then ensure this traffic can only go to other devices on VLAN 20.</p>



<h2 class="wp-block-heading"><strong>Advanced Topic 2: An Introduction to NIC Bonding</strong></h2>



<p>A <strong>Linux Bond</strong> (also known as link aggregation) is a way to combine two or more physical network cards into a single, virtual one. This provides two main benefits:</p>



<ul class="wp-block-list">
<li><strong>Redundancy:</strong> If one network card or cable fails, the connection remains active through the other one (failover).</li>



<li><strong>Increased Throughput:</strong> Depending on the mode, you can aggregate the bandwidth of multiple cards, for example, turning two 1Gbps NICs into a 2Gbps connection.</li>
</ul>



<p>You can create a Bond directly in the Proxmox Network menu. You&#8217;ll need to choose a mode (e.g., <code>balance-rr</code> for load balancing, <code>active-backup</code> for failover) and select the physical NICs you want to include in the bond. You then create your main bridge (<code>vmbr0</code>) on top of this new <code>bond0</code> interface instead of a single physical NIC.</p>



<h2 class="wp-block-heading"><strong>Conclusion: You Are in Control</strong></h2>



<p>Understanding these three components—Bridges, VLANs, and Bonds—gives you complete control over your virtual network. You can create simple, flat networks or complex, segmented environments to match any need.</p>



<p>To see how this powerful networking fits into the bigger picture of managing a complete homelab, be sure to read our <strong><a href="https://boxvirt.com/proxmox-ve-guide/">Ultimate Guide to Proxmox VE</a></strong>.</p>
<p>Сообщение <a href="https://boxvirt.com/proxmox-networking/">Configuring Proxmox Networking: Bridges, VLANs, and Bonds Explained</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/proxmox-networking/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Install Proxmox VE 8: A Beginner&#8217;s Step-by-Step Guide</title>
		<link>https://boxvirt.com/how-to-install-proxmox-ve-8/</link>
					<comments>https://boxvirt.com/how-to-install-proxmox-ve-8/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 21:44:13 +0000</pubDate>
				<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[Guide]]></category>
		<category><![CDATA[Setup]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=156</guid>

					<description><![CDATA[<p>Introduction So, you&#8217;ve decided to build your own powerful server with Proxmox VE? Excellent choice! You&#8217;re on your way to creating an amazing homelab or small business environment. [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/how-to-install-proxmox-ve-8/">How to Install Proxmox VE 8: A Beginner&#8217;s Step-by-Step Guide</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Introduction</strong></h2>



<p>So, you&#8217;ve decided to build your own powerful server with <a href="https://boxvirt.com/proxmox-ve-guide/">Proxmox VE</a>? Excellent choice! You&#8217;re on your way to creating an amazing homelab or small business environment. This guide is designed for absolute beginners and will walk you through every single step of the installation process. Don&#8217;t worry, it&#8217;s easier than you think!</p>



<p>By the end of this tutorial, you will have a fully functional Proxmox VE 8 host up and running. Let&#8217;s begin!</p>



<h3 class="wp-block-heading"><strong>What You&#8217;ll Need</strong></h3>



<ul class="wp-block-list">
<li>A dedicated physical computer or server that meets the minimum hardware requirements.</li>



<li>A USB flash drive (at least 4GB).</li>



<li>Access to another computer to download the software and create the bootable drive.</li>
</ul>



<h2 class="wp-block-heading"><strong>Step 1: Download the Proxmox VE ISO Image</strong></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_3-1024x1024.webp" alt="Proxmox VE installer boot menu" class="wp-image-159" srcset="https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_3-1024x1024.webp 1024w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_3-300x300.webp 300w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_3-150x150.webp 150w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_3-768x768.webp 768w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_3-1536x1536.webp 1536w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_3.webp 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>First, we need to get the installation file.</p>



<ol start="1" class="wp-block-list">
<li>Open your web browser and go to the official Proxmox downloads page.</li>



<li>Look for <strong><a href="https://boxvirt.com/how-to-secure-your-proxmox-server-with-lets-encrypt-ssl-certificate-a-step-by-step-guide/">Proxmox Virtual Environment</a></strong>.</li>



<li>Download the latest ISO Installer (e.g., version 8.x). It will be a large file, so be patient.</li>
</ol>



<h2 class="wp-block-heading"><strong>Step 2: Create a Bootable USB Drive</strong></h2>



<p>Now we need to write that ISO file to a USB drive so your server can boot from it.</p>



<ol start="1" class="wp-block-list">
<li>Download and install a free tool called <strong>BalenaEtcher</strong>. It&#8217;s available for Windows, macOS, and Linux and is very user-friendly.</li>



<li>Plug your USB drive into your computer.</li>



<li>Open BalenaEtcher.</li>



<li>Click <strong>&#171;Flash from file&#187;</strong> and select the Proxmox ISO file you just downloaded.</li>



<li>Click <strong>&#171;Select target&#187;</strong> and choose your USB drive. <strong>Warning:</strong> This will erase everything on the drive, so make sure it doesn&#8217;t contain important data!</li>



<li>Click <strong>&#171;Flash!&#187;</strong> and wait for the process to complete.</li>
</ol>



<h2 class="wp-block-heading"><strong>Step 3: Boot Your Server from the USB Drive</strong></h2>



<p>This is the most hands-on part.</p>



<ol start="1" class="wp-block-list">
<li>Plug the newly created bootable USB drive into your destination server.</li>



<li>Power on the server.</li>



<li>You need to enter the <strong>Boot Menu</strong> to tell the server to boot from the USB drive instead of its internal hard drive. This is usually done by pressing a specific key right after you power it on, such as <strong>F11, F12, F2, or Del</strong>. The correct key is often displayed on the screen briefly.</li>



<li>From the Boot Menu, select your USB drive and press Enter.</li>
</ol>



<h2 class="wp-block-heading"><strong>Step 4: The Proxmox VE Installation Wizard</strong></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_config-1024x1024.webp" alt="Proxmox VE network configuration screen" class="wp-image-160" srcset="https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_config-1024x1024.webp 1024w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_config-300x300.webp 300w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_config-150x150.webp 150w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_config-768x768.webp 768w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_config-1536x1536.webp 1536w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_config.webp 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>If all went well, you&#8217;ll see the Proxmox VE boot menu.</p>



<ol start="1" class="wp-block-list">
<li>Select <strong>&#171;Install Proxmox VE (Graphical)&#187;</strong> and press Enter.</li>



<li><strong>EULA:</strong> The first screen is the End User License Agreement. Click <strong>&#171;I agree&#187;</strong>.</li>



<li><strong>Target Harddisk:</strong> Choose the hard drive where you want to install Proxmox. For most users with one drive, there will only be one option. Click <strong>&#171;Next&#187;</strong>.</li>



<li><strong>Location and Time Zone:</strong> Set your country, time zone, and keyboard layout.</li>



<li><strong>Administration Password and Email:</strong> Enter a very strong password for the <code>root</code> (administrator) user. You will use this to log in. Enter your email address for system notifications.</li>



<li><strong>Network Configuration:</strong> This step is crucial. The installer will try to guess your network settings, but you should verify them.
<ul class="wp-block-list">
<li><strong>Management Interface:</strong> This will be your server&#8217;s main network card (e.g., <code>ens18</code>).</li>



<li><strong>Hostname:</strong> Choose a name for your server, like <code>pve.mydomain.local</code>.</li>



<li><strong>IP Address:</strong> Set a <strong>static IP address</strong>. Do not use DHCP. This should be an address on your local network that is not used by any other device.</li>



<li><strong>Gateway:</strong> This is the IP address of your home router.</li>



<li><strong><a href="https://boxvirt.com/how-to-secure-dns-with-dns-over-tls-in-opnsense-using-unbound/">DNS Server:</a></strong> You can often use your router&#8217;s IP address here as well, or a public DNS like <code>8.8.8.8</code>.</li>
</ul>
</li>



<li><strong>Summary:</strong> The final screen will show you a summary of all your choices. Double-check everything. When you&#8217;re ready, click <strong>&#171;Install&#187;</strong>.</li>
</ol>



<p>The installation process will now begin and take several minutes. Once it&#8217;s finished, the server will automatically reboot. <strong>Don&#8217;t forget to remove the USB drive!</strong></p>



<h2 class="wp-block-heading"><strong>Step 5: Your First Login!</strong></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_2-1024x1024.webp" alt="Proxmox VE web login screen" class="wp-image-158" srcset="https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_2-1024x1024.webp 1024w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_2-300x300.webp 300w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_2-150x150.webp 150w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_2-768x768.webp 768w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_2-1536x1536.webp 1536w, https://boxvirt.com/wp-content/uploads/2025/08/How-to-Install-Proxmox-VE-8_2.webp 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>After the reboot, your Proxmox server is live!</p>



<ol start="1" class="wp-block-list">
<li>On another computer on the same network, open a web browser.</li>



<li>Navigate to the IP address you configured: <code>https://Your-Static-IP:8006</code></li>



<li>You&#8217;ll see a security warning because Proxmox uses a self-signed certificate. This is normal. Click &#171;Advanced&#187; and &#171;Proceed&#187;.</li>



<li>At the login screen, enter the username <code>root</code> and the password you created.</li>



<li>Congratulations! You are now in the Proxmox VE web interface.</li>
</ol>



<p>Now that you have Proxmox installed, it&#8217;s time to explore its full potential. Check out our <strong><a href="https://boxvirt.com/proxmox-ve-guide/">Ultimate Guide to Proxmox VE</a></strong> to learn how to create VMs, configure networking, set up backups, and much more!</p>



<p></p>
<p>Сообщение <a href="https://boxvirt.com/how-to-install-proxmox-ve-8/">How to Install Proxmox VE 8: A Beginner&#8217;s Step-by-Step Guide</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/how-to-install-proxmox-ve-8/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>The Ultimate Guide to Proxmox VE in 2025: From Zero to a Fully Functional Homelab</title>
		<link>https://boxvirt.com/proxmox-ve-guide/</link>
					<comments>https://boxvirt.com/proxmox-ve-guide/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 19:37:44 +0000</pubDate>
				<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[LXC Container]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=148</guid>

					<description><![CDATA[<p>Introduction: What is Proxmox VE and Why Does it Dominate in 2025? Welcome to the definitive guide to Proxmox Virtual Environment (VE). In the ever-evolving world of IT, [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/proxmox-ve-guide/">The Ultimate Guide to Proxmox VE in 2025: From Zero to a Fully Functional Homelab</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Introduction: What is Proxmox VE and Why Does it Dominate in 2025?</strong></h2>



<p>Welcome to the definitive guide to <a href="https://boxvirt.com/how-to-secure-your-proxmox-server-with-lets-encrypt-ssl-certificate-a-step-by-step-guide/">Proxmox Virtual Environment (VE)</a>. In the ever-evolving world of IT, Proxmox VE has solidified its position as the leading open-source virtualization platform for homelab enthusiasts, small-to-medium businesses (SMBs), and even enterprise users. But what makes it so special?</p>



<p>Proxmox VE is a powerful, all-in-one server management platform that seamlessly integrates two virtualization technologies: Kernel-based Virtual Machine (KVM) for heavyweight virtual machines (like Windows or full Linux distros) and Linux Containers (LXC) for lightweight, OS-level virtualization. Built on a rock-solid Debian GNU/Linux distribution and managed through a user-friendly web interface, Proxmox offers enterprise-level features like clustering, high availability, and software-defined storage, all completely for free.</p>



<p>This guide will walk you through every essential step, turning an empty server into a fully operational virtualization powerhouse.</p>



<h2 class="wp-block-heading"><strong>Chapter 1: Planning Your Proxmox Server</strong></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://boxvirt.com/wp-content/uploads/2025/08/proxmox_architecture-1024x1024.webp" alt="Proxmox VE Architecture Diagram" class="wp-image-149" srcset="https://boxvirt.com/wp-content/uploads/2025/08/proxmox_architecture-1024x1024.webp 1024w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_architecture-300x300.webp 300w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_architecture-150x150.webp 150w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_architecture-768x768.webp 768w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_architecture-1536x1536.webp 1536w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_architecture.webp 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Before you begin, proper planning is key. Your hardware choices will directly impact performance.</p>



<ul class="wp-block-list">
<li><strong>CPU:</strong> A modern 64-bit CPU with virtualization support (Intel VT-x or AMD-V) is mandatory. More cores are better, as they can be assigned to different VMs.</li>



<li><strong>RAM:</strong> 8GB is the bare minimum for the host and a couple of small VMs. For any serious use, <strong>16GB to 32GB is highly recommended</strong>.</li>



<li><strong>Storage:</strong> This is critical.
<ul class="wp-block-list">
<li><strong>OS Drive:</strong> A small, fast SSD (256GB+) is perfect for installing Proxmox itself.</li>



<li><strong>VM Storage:</strong> For your VMs, you have options. A large capacity SSD (NVMe is ideal) will provide the best performance. For bulk storage, traditional HDDs can be used, ideally in a RAID or ZFS configuration for data redundancy.</li>
</ul>
</li>



<li><strong>Networking:</strong> A stable Gigabit Ethernet connection is a must. A second network card is recommended if you plan on creating a dedicated storage network or complex firewall setups.</li>
</ul>



<h2 class="wp-block-heading"><strong>Chapter 2: Step-by-Step Installation</strong></h2>



<p>Installing Proxmox is a straightforward process.</p>



<ol start="1" class="wp-block-list">
<li><strong>Download:</strong> Grab the latest Proxmox VE ISO installer from the official website.</li>



<li><strong>Create a Bootable USB:</strong> Use a tool like BalenaEtcher or Rufus to create a bootable USB drive from the downloaded ISO file.</li>



<li><strong>Boot and Install:</strong> Boot your server from the USB drive. The graphical installer will guide you through the process. You&#8217;ll need to agree to the EULA, select your target hard drive for the installation, and set your country, time zone, and a strong root password.</li>



<li><strong>Network Configuration:</strong> The final step is configuring the network. You will set a hostname, a static IP address, gateway, and DNS server. <strong>Double-check these settings</strong>, as this is how you will access the web interface.</li>



<li><strong>Reboot:</strong> Once the installation is complete, remove the USB drive and reboot the server.</li>
</ol>



<h2 class="wp-block-heading"><strong>Chapter 3: A Tour of the Proxmox Web UI</strong></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_bridge-1024x1024.webp" alt="Proxmox VE Network Diagram with Linux Bridge" class="wp-image-150" srcset="https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_bridge-1024x1024.webp 1024w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_bridge-300x300.webp 300w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_bridge-150x150.webp 150w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_bridge-768x768.webp 768w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_bridge-1536x1536.webp 1536w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_network_bridge.webp 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Once your server has rebooted, open a web browser on another computer and navigate to <code>https://Your-Proxmox-IP:8006</code>. You will see a login prompt. Log in with the username <code>root</code> and the password you set during installation.</p>



<p>The interface is divided into several key areas:</p>



<ul class="wp-block-list">
<li><strong>Datacenter View (Left Pane):</strong> This tree view shows your entire setup, from the datacenter level down to individual nodes, storage pools, and guest VMs/containers.</li>



<li><strong>Top Header:</strong> Shows search, user controls, and buttons for creating new VMs, containers, and other tasks.</li>



<li><strong>Content Pane (Center):</strong> This is where you&#8217;ll spend most of your time. It displays detailed information and configuration options for whatever item you&#8217;ve selected in the left pane.</li>
</ul>



<h2 class="wp-block-heading"><strong>Chapter 4: Proxmox Networking Explained</strong></h2>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="1024" src="https://boxvirt.com/wp-content/uploads/2025/08/proxmox_ui_view-1024x1024.webp" alt="Proxmox VE Web Interface Overview" class="wp-image-151" srcset="https://boxvirt.com/wp-content/uploads/2025/08/proxmox_ui_view-1024x1024.webp 1024w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_ui_view-300x300.webp 300w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_ui_view-150x150.webp 150w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_ui_view-768x768.webp 768w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_ui_view-1536x1536.webp 1536w, https://boxvirt.com/wp-content/uploads/2025/08/proxmox_ui_view.webp 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Proxmox uses a powerful and flexible software-defined networking model. The most common component is the <strong>Linux Bridge</strong> (<code>vmbr0</code> by default). Think of it as a virtual network switch. Your server&#8217;s physical network card and all your VMs&#8217; virtual network cards are &#171;plugged into&#187; this bridge, allowing them to communicate with each other and your physical network.</p>



<p>For more advanced setups, Proxmox also supports Linux Bonds (combining multiple physical NICs for speed or redundancy) and VLANs (for segmenting network traffic).</p>



<h2 class="wp-block-heading"><strong>Chapter 5: Configuring Storage</strong></h2>



<p>Storage is where your VM disks and ISO images live. Proxmox supports numerous types:</p>



<ul class="wp-block-list">
<li><strong>Local Storage:</strong> LVM (default for VM disks) and Directory (default for ISOs and templates).</li>



<li><strong>Network Storage:</strong> NFS and iSCSI are popular choices for connecting to a NAS.</li>



<li><strong>Advanced/Clustered Storage:</strong> ZFS (a powerful combined file system and volume manager) and Ceph (for distributed, highly available storage) are integrated directly into the platform.</li>
</ul>



<h2 class="wp-block-heading"><strong>Chapter 6: Deploying Your First VM and LXC Container</strong></h2>



<p>Let&#8217;s create our first guest!</p>



<ul class="wp-block-list">
<li><strong>To Create a KVM (Full VM):</strong>
<ol start="1" class="wp-block-list">
<li>Ensure you have an OS installation ISO uploaded to your local storage.</li>



<li>Click &#171;Create VM&#187; in the top right.</li>



<li>Follow the wizard: give it a name, select the ISO, configure CPU, memory, and hard disk size.</li>



<li>Once created, start the VM and complete the OS installation through the built-in console.</li>
</ol>
</li>



<li><strong>To <a href="https://boxvirt.com/deploy-proxmox-vms-with-terraform-in-a-docker-container/">Create an LXC</a> (Linux Container):</strong>
<ol start="1" class="wp-block-list">
<li>Download a container template first. Go to <code>local storage</code> -&gt; <code>CT Templates</code>, click <code>Templates</code>, and download a distribution like Ubuntu or Debian.</li>



<li>Click &#171;Create CT&#187;.</li>



<li>The wizard is similar but simpler. You&#8217;ll set a password, select the template, and configure the network.</li>



<li>Containers are created in seconds and are ready to use immediately.</li>
</ol>
</li>
</ul>



<h2 class="wp-block-heading"><strong>Chapter 7: Backups &amp; Snapshots &#8212; Your Safety Net</strong></h2>



<p>Never run a server without a backup plan. Proxmox makes this easy.</p>



<ul class="wp-block-list">
<li><strong>Snapshots:</strong> An instant &#171;picture&#187; of a VM&#8217;s state. You can roll back to a snapshot in seconds if a change goes wrong. However, a snapshot is <em>not</em> a backup.</li>



<li><strong>Backups (VZDump):</strong> Proxmox&#8217;s built-in backup tool. You can create full, compressed backups of your VMs and containers to any configured storage. You can run backups manually or, more importantly, schedule them to run automatically every night.</li>
</ul>



<h2 class="wp-block-heading"><strong>Conclusion: Your Journey Begins</strong></h2>



<p>Congratulations! You&#8217;ve gone from a bare metal server to a fully functional virtualization host. You&#8217;ve installed Proxmox, explored its interface, and deployed both a VM and a container.</p>



<p>You are now equipped with a powerful platform to build your homelab, run self-hosted applications, or even manage a small business&#8217;s IT infrastructure. The next steps in your journey could be exploring advanced topics like Proxmox clustering, high availability, or diving deeper into automation with tools like Terraform and Ansible. The possibilities are endless.</p>
<p>Сообщение <a href="https://boxvirt.com/proxmox-ve-guide/">The Ultimate Guide to Proxmox VE in 2025: From Zero to a Fully Functional Homelab</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/proxmox-ve-guide/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Deploy Proxmox VMs with Terraform in a Docker Container</title>
		<link>https://boxvirt.com/deploy-proxmox-vms-with-terraform-in-a-docker-container/</link>
					<comments>https://boxvirt.com/deploy-proxmox-vms-with-terraform-in-a-docker-container/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Sun, 03 Aug 2025 14:54:33 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<category><![CDATA[Proxmox]]></category>
		<category><![CDATA[Terraform]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=145</guid>

					<description><![CDATA[<p>Automating your infrastructure is a cornerstone of modern DevOps, and Proxmox is a fantastic virtualization platform. When you combine it with Terraform, you unlock the power of Infrastructure [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/deploy-proxmox-vms-with-terraform-in-a-docker-container/">Deploy Proxmox VMs with Terraform in a Docker Container</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Automating your infrastructure is a cornerstone of modern DevOps, and <strong>Proxmox</strong> is a fantastic virtualization platform. When you combine it with <strong>Terraform</strong>, you unlock the power of Infrastructure as Code (IaC), allowing you to define and manage your virtual machines programmatically.</p>



<p>This guide is for <strong>beginners</strong> who want a clean, isolated, and repeatable way to run Terraform by setting it up inside a <strong>Docker container</strong>.</p>



<h3 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f3a8.png" alt="🎨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Image 1: Architectural Overview</strong></h3>



<p>First, let&#8217;s visualize our goal. Our setup will look like this: you run Docker on your machine, which hosts a Terraform container. This container then communicates with your Proxmox server&#8217;s API to build, modify, or destroy virtual machines.</p>



<ul class="wp-block-list">
<li><strong>Explanation:</strong> This diagram shows a clean workflow. Your workstation instructs a self-contained Docker environment, which in turn manages your Proxmox infrastructure. This prevents clutter on your local machine and ensures a consistent environment.</li>
</ul>



<h3 class="wp-block-heading"><strong>Part 1: Prerequisites</strong></h3>



<p>Before we begin, make sure you have:</p>



<ol start="1" class="wp-block-list">
<li>A running <strong>Proxmox VE</strong> server.</li>



<li>The IP address of your Proxmox server.</li>



<li><strong>Docker</strong> installed and running on your local workstation.</li>



<li>A <strong>Proxmox API Token</strong>. To create one, go to your Proxmox web UI and navigate to <code>Datacenter</code> -> <code>Permissions</code> -> <code>API Tokens</code>. Click <code>Add</code>, give it a memorable ID (e.g., <code>terraform-user@pve</code>), and save the <strong>Token ID</strong> and <strong>Secret</strong> securely.</li>
</ol>



<h3 class="wp-block-heading"><strong>Part 2: Setting Up the Terraform Docker Environment</strong></h3>



<p>We&#8217;ll create a dedicated directory for our project and a <code>Dockerfile</code> to define our environment.</p>



<p>First, create a project folder: <code>mkdir proxmox-terraform &amp;&amp; cd proxmox-terraform</code></p>



<p>Now, create a file named <code>Dockerfile</code> inside this directory.</p>



<h3 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f3a8.png" alt="🎨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Image 2: The Dockerfile</strong></h3>



<p>This <code>Dockerfile</code> is simple. It uses the official Terraform image and adds <code>git</code>, which is required by the Terraform Proxmox provider to download modules.</p>



<ul class="wp-block-list">
<li><strong>Explanation:</strong> This file instructs Docker to use the latest official Terraform image and add the <code>git</code> package. The <code>WORKDIR</code> command sets the default directory inside the container, keeping our project files organized.</li>
</ul>



<p>Build your Docker image with this command: <code>docker build -t terraform-proxmox .</code></p>



<h3 class="wp-block-heading"><strong>Part 3: Configuring Terraform</strong></h3>



<p>Next, create a file named <code>main.tf</code>. This is where you&#8217;ll define the Proxmox provider and the virtual machines you want to create.</p>



<p>Terraform</p>



<pre class="wp-block-code"><code><code>terraform {
  required_providers {
    proxmox = {
      source  = "telmate/proxmox"
      version = "2.9.14"
    }
  }
}

provider "proxmox" {
  pm_api_url = "https://YOUR_PROXMOX_IP:8006/api2/json"
  pm_api_token_id = "YOUR_API_TOKEN_ID"
  pm_api_token_secret = "YOUR_API_TOKEN_SECRET"

  # Set to true if your Proxmox has a self-signed certificate
  pm_tls_insecure = true
}

# --- Define your VM resource here ---
resource "proxmox_vm_qemu" "example_vm" {
  name        = "terraform-vm-01"
  target_node = "pve" # The name of your Proxmox node

  # A pre-prepared template or existing VM to clone
  clone = "ubuntu-2204-cloud-template"
  
  agent       = 1
  os_type     = "cloud-init"
  cores       = 1
  sockets     = 1
  cpu         = "host"
  memory      = 1024
  scsihw      = "virtio-scsi-pci"
  bootdisk    = "scsi0"

  disk {
    size        = "20G"
    type        = "scsi"
    storage     = "local-lvm" # Your target storage
  }

  network {
    model       = "virtio"
    bridge      = "vmbr0"
    firewall    = false
  }
}</code>

</code></pre>



<p><strong>Important:</strong></p>



<ul class="wp-block-list">
<li>Replace <code>YOUR_PROXMOX_IP</code>, <code>YOUR_API_TOKEN_ID</code>, and <code>YOUR_API_TOKEN_SECRET</code> with your actual credentials.</li>



<li>Make sure the <code>clone</code> value points to an existing VM template in your Proxmox server.</li>



<li>Check that <code>target_node</code> and <code>storage</code> match your Proxmox setup.</li>
</ul>



<h3 class="wp-block-heading"><strong>Part 4: Running Terraform from Docker</strong></h3>



<p>Now for the fun part. We will run the standard Terraform commands, but we&#8217;ll execute them through our Docker container.</p>



<ol start="1" class="wp-block-list">
<li><strong>Initialize Terraform:</strong> This downloads the Proxmox provider. <code>docker run -it --rm -v $(pwd):/terraform terraform-proxmox init</code></li>



<li><strong>Create an Execution Plan:</strong> Terraform will check your configuration and show you what it&#8217;s going to do. <code>docker run -it --rm -v $(pwd):/terraform terraform-proxmox plan</code></li>
</ol>



<h3 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f3a8.png" alt="🎨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Image 3: The Terraform Plan</strong></h3>



<p>The output of the <code>plan</code> command is your safety check. It tells you exactly what resources will be created, changed, or destroyed. For our example, it will plan to create one new resource.</p>



<ul class="wp-block-list">
<li><strong>Explanation:</strong> This graphic symbolizes the clear and predictable output of the <code>plan</code> command. The <code>+</code> icon indicates that a new virtual machine will be added to your infrastructure, giving you full confidence before you apply any changes.</li>
</ul>



<ol start="3" class="wp-block-list">
<li><strong>Apply the Plan:</strong> If you&#8217;re happy with the plan, apply it to create the VM. <code>docker run -it --rm -v $(pwd):/terraform terraform-proxmox apply --auto-approve</code></li>
</ol>



<p>That&#8217;s it! After a few moments, you should see your new virtual machine, <code>terraform-vm-01</code>, appear in your Proxmox web interface. You have successfully automated VM deployment using <strong>Terraform</strong> from a clean <strong>Docker</strong> environment.</p>
<p>Сообщение <a href="https://boxvirt.com/deploy-proxmox-vms-with-terraform-in-a-docker-container/">Deploy Proxmox VMs with Terraform in a Docker Container</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/deploy-proxmox-vms-with-terraform-in-a-docker-container/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ultimate Guide: Setting Up Traefik as a Reverse Proxy in Docker (with Let&#8217;s Encrypt, Cloudflare, and Secure Services)</title>
		<link>https://boxvirt.com/ultimate-guide-setting-up-traefik-as-a-reverse-proxy-in-docker-with-lets-encrypt-cloudflare-and-secure-services/</link>
					<comments>https://boxvirt.com/ultimate-guide-setting-up-traefik-as-a-reverse-proxy-in-docker-with-lets-encrypt-cloudflare-and-secure-services/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Sat, 02 Aug 2025 21:48:49 +0000</pubDate>
				<category><![CDATA[Docker]]></category>
		<category><![CDATA[Traefik]]></category>
		<category><![CDATA[Setup]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=134</guid>

					<description><![CDATA[<p>Introduction: Why a Reverse Proxy? In modern self-hosted environments, you&#8217;re often running multiple services — like a photo gallery (e.g., Immich), media server (e.g., Jellyfin), and dashboards. If [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/ultimate-guide-setting-up-traefik-as-a-reverse-proxy-in-docker-with-lets-encrypt-cloudflare-and-secure-services/">Ultimate Guide: Setting Up Traefik as a Reverse Proxy in Docker (with Let&#8217;s Encrypt, Cloudflare, and Secure Services)</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Introduction: Why a Reverse Proxy?</h3>



<p>In modern self-hosted environments, you&#8217;re often running multiple services — like a photo gallery (e.g., Immich), media server (e.g., Jellyfin), and dashboards. If all these services expose themselves directly on different ports, things quickly get messy. Enter the reverse proxy.</p>



<p>A reverse proxy routes incoming HTTP/HTTPS traffic to the right container based on domain or path. It allows you to:</p>



<ul class="wp-block-list">
<li>Use <strong>pretty domain names</strong> like <code>photos.example.com</code></li>



<li>Enforce <strong>HTTPS with Let&#8217;s Encrypt</strong></li>



<li>Route requests internally by hostname instead of IP and port</li>



<li>Apply <strong>access control, rate limits</strong>, or <strong>basic authentication</strong> centrally</li>
</ul>



<p>And Traefik does all that, <strong>automatically</strong>, with minimal config.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f680.png" alt="🚀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why Traefik Over Nginx?</h3>



<p>While Nginx is popular and powerful, it&#8217;s static by default. Every new service requires you to edit config files and reload.</p>



<p>Traefik, on the other hand:</p>



<ul class="wp-block-list">
<li>Automatically discovers Docker containers</li>



<li>Supports <strong>dynamic routing</strong> using Docker labels</li>



<li>Comes with built-in <strong>Let&#8217;s Encrypt integration</strong></li>



<li>Has a <strong>web dashboard</strong> to visualize routes</li>



<li>Requires <strong>minimal config</strong></li>
</ul>



<p>Traefik was <strong>designed for containerized environments</strong> from the start.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2699.png" alt="⚙" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How Traefik Works Internally</h3>



<p>Traefik is composed of three key concepts:</p>



<h4 class="wp-block-heading">1. <strong>EntryPoints</strong></h4>



<p>These define which ports Traefik listens on (e.g., <code>:80</code>, <code>:443</code>). You can think of these as your public gateways.</p>



<h4 class="wp-block-heading">2. <strong>Routers</strong></h4>



<p>Routers match incoming requests (host, path, method) and forward them to services. They also define TLS settings and middleware.</p>



<h4 class="wp-block-heading">3. <strong>Services</strong></h4>



<p>These are the actual Docker containers (or upstream backends) that respond to the requests.</p>



<h4 class="wp-block-heading">4. <strong>Middlewares</strong> (Optional)</h4>



<p>These are like plugins: things that transform requests (e.g., strip path, redirect HTTP to HTTPS, basic auth, etc).</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4e6.png" alt="📦" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Installing Traefik with Docker Compose</h3>



<p>Let’s build a fully functional Traefik setup using Docker Compose.</p>



<pre class="wp-block-code"><code>docker-compose.yml
<code>version: '3.9'

services:
  traefik:
    image: traefik:v3.0
    container_name: traefik
    command:
      - --api.dashboard=true
      - --api.insecure=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --certificatesresolvers.cloudflare.acme.dnschallenge=true
      - --certificatesresolvers.cloudflare.acme.dnschallenge.provider=cloudflare
      - --certificatesresolvers.cloudflare.acme.email=you@example.com
      - --certificatesresolvers.cloudflare.acme.storage=/letsencrypt/acme.json
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./letsencrypt:/letsencrypt
    environment:
      - CF_API_EMAIL=you@example.com
      - CF_API_KEY=your_cloudflare_api_key
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.traefik.rule=Host(`traefik.yourdomain.com`)"
      - "traefik.http.routers.traefik.entrypoints=websecure"
      - "traefik.http.routers.traefik.tls.certresolver=cloudflare"
      - "traefik.http.routers.traefik.service=api@internal"
      - "traefik.http.middlewares.traefik-auth.basicauth.users=admin:$$apr1$$6yLkU..."
      - "traefik.http.routers.traefik.middlewares=traefik-auth"</code></code></pre>



<p>You also need to create the directory <code>./letsencrypt</code> and touch <code>acme.json</code> with permissions <code>600</code>.</p>



<pre class="wp-block-code"><code>mkdir letsencrypt
chmod 600 letsencrypt/acme.json</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f510.png" alt="🔐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Securing the Dashboard</h3>



<p>Never expose the dashboard to the public without auth. Use basic auth like above or restrict access to specific IPs.</p>



<p>Alternative example:</p>



<pre class="wp-block-code"><code><code>- "traefik.http.routers.traefik.middlewares=dashboard-auth"
- "traefik.http.middlewares.dashboard-auth.basicauth.usersfile=/users.htpasswd"</code></code></pre>



<p>Generate passwords with:</p>



<pre class="wp-block-code"><code>htpasswd -nb admin strongpassword</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f30d.png" alt="🌍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Deploying a Sample Service Behind Traefik</h3>



<pre class="wp-block-code"><code><code>services:
  whoami:
    image: traefik/whoami
    container_name: whoami
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.whoami.rule=Host(`whoami.yourdomain.com`)"
      - "traefik.http.routers.whoami.entrypoints=websecure"
      - "traefik.http.routers.whoami.tls.certresolver=cloudflare"</code></code></pre>



<p>Start both containers:</p>



<pre class="wp-block-code"><code>docker compose up -d</code></pre>



<p>Now visit <code>https://whoami.yourdomain.com</code> — you’ll see the container response.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Additional Features to Explore</h3>



<ul class="wp-block-list">
<li>Middleware: redirect, stripPrefix, basicAuth</li>



<li>Rate-limiting</li>



<li>Retry and load balancing</li>



<li>Redirect HTTP to HTTPS automatically</li>



<li>Wildcard TLS certificates</li>



<li>Forward headers to preserve real IP</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4d8.png" alt="📘" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusion</h3>



<p>Traefik makes deploying, securing, and managing multiple services in Docker easy and dynamic. With a few Docker labels and one compose file, you get:</p>



<ul class="wp-block-list">
<li>Auto-routing by domain</li>



<li>HTTPS with Let&#8217;s Encrypt</li>



<li>Centralized auth and middleware</li>



<li>Visibility via dashboard</li>
</ul>



<p>Traefik replaces hours of nginx tinkering with a <strong>declarative, scalable, and elegant</strong> solution.</p>
<p>Сообщение <a href="https://boxvirt.com/ultimate-guide-setting-up-traefik-as-a-reverse-proxy-in-docker-with-lets-encrypt-cloudflare-and-secure-services/">Ultimate Guide: Setting Up Traefik as a Reverse Proxy in Docker (with Let&#8217;s Encrypt, Cloudflare, and Secure Services)</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/ultimate-guide-setting-up-traefik-as-a-reverse-proxy-in-docker-with-lets-encrypt-cloudflare-and-secure-services/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Firewall Logging, Backups &#038; Best Practices</title>
		<link>https://boxvirt.com/firewall-logging-backups-best-practices/</link>
					<comments>https://boxvirt.com/firewall-logging-backups-best-practices/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Sat, 02 Aug 2025 21:36:09 +0000</pubDate>
				<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[MikroTik]]></category>
		<category><![CDATA[Setup]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=131</guid>

					<description><![CDATA[<p>— Keep It Clean, Recoverable, and Easy to Maintain Why This Matters A solid firewall config can take hours to build — but minutes to lose. Whether it’s: [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/firewall-logging-backups-best-practices/">Firewall Logging, Backups &#038; Best Practices</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">— Keep It Clean, Recoverable, and Easy to Maintain</h3>



<h2 class="wp-block-heading">Why This Matters</h2>



<p>A solid firewall config can take hours to build — but minutes to lose.</p>



<p>Whether it’s:</p>



<ul class="wp-block-list">
<li>A reboot gone wrong</li>



<li>A bad rule blocking your access</li>



<li>An upgrade that resets the config</li>



<li>Or simply forgetting what each rule does&#8230;</li>
</ul>



<p>You need a <strong>system</strong> to keep your firewall alive, readable, and resilient.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f501.png" alt="🔁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 1. Regular Backups and Exports</h2>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4cd.png" alt="📍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Difference Between Backup and Export:</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Type</th><th>What it does</th></tr></thead><tbody><tr><td><code>backup</code></td><td>Binary file of full system config (not readable/editable)</td></tr><tr><td><code>export</code></td><td>Human-readable script you can tweak or version control</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4e5.png" alt="📥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How to Backup:</h3>



<pre class="wp-block-preformatted"><code>/system backup save name=firewall_config<br></code></pre>



<p>You’ll get a file like <code>firewall_config.backup</code> in <strong>Files</strong> — download it to your PC!</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4e4.png" alt="📤" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How to Export Firewall Only:</h3>



<pre class="wp-block-preformatted"><code>/export file=firewall_export<br></code></pre>



<p>You’ll get <code>firewall_export.rsc</code>.<br>You can edit, version in Git, or apply on other routers.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f9fc.png" alt="🧼" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 2. Use Comments Everywhere</h2>



<p>Every rule, every address list, every NAT line — <strong>must</strong> have a comment.</p>



<p>Example:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=input src-address-list=TRUSTED_IPS action=accept comment="Allow remote Winbox"<br>/ip firewall nat<br>add chain=dstnat dst-port=443 action=dst-nat to-addresses=192.168.88.100 comment="HTTPS to NAS"<br></code></pre>



<p>It’s not optional — <strong>future you will thank you</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4da.png" alt="📚" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 3. Group Rules Logically</h2>



<p>Use <strong>grouping by chain and purpose</strong>, for example:</p>



<ul class="wp-block-list">
<li>Section 1: Input chain</li>



<li>Section 2: Forward chain (LAN access)</li>



<li>Section 3: Forward chain (guest/VPN)</li>



<li>Section 4: NAT rules</li>



<li>Section 5: Special protections (DoS, brute-force)</li>



<li>Section 6: Logging and drops</li>
</ul>



<p>You can even add <strong>empty comment rules</strong> as section headers:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add comment="=== INPUT CHAIN START ==="<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4c8.png" alt="📈" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 4. Monitor With Logging (But Not Too Much)</h2>



<p>Logging is great — until it crashes your CPU.</p>



<p>Tips:</p>



<ul class="wp-block-list">
<li>Only log <strong>important drops</strong>, like SSH brute-force or port scans</li>



<li>Use <code>log-prefix=</code> to easily grep or filter</li>



<li>Use <strong>log limits</strong> to reduce spam:</li>
</ul>



<pre class="wp-block-preformatted"><code>add chain=input src-address-list=SSH_BRUTE action=drop log=yes log-prefix="SSH_BRUTE " log-disabled=no<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 5. Lock Yourself Out? Here’s the Rescue Plan</h2>



<p>If you apply a bad rule and lose access — do one of the following:</p>



<h3 class="wp-block-heading">Option 1: MAC Winbox</h3>



<ul class="wp-block-list">
<li>Connect directly via Winbox using MAC address</li>



<li>It bypasses IP settings</li>



<li>Only works in L2</li>
</ul>



<h3 class="wp-block-heading">Option 2: Netinstall Reset</h3>



<ul class="wp-block-list">
<li>Use MikroTik’s <strong>Netinstall</strong> to reflash router</li>



<li>You&#8217;ll need physical access and boot from Netinstall server</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 6. Pro Tips From the Field</h2>



<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Use <strong>Address Lists</strong> for everything — even internal networks<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Document <strong>every rule</strong> in a <code>.md</code> or <code>.rsc</code> file<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Export rules monthly and save in Git or cloud<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Use <strong>scheduled scripts</strong> to check config or notify you<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Disable unused services in <code>/ip service</code></p>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Final Summary</h2>



<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f3af.png" alt="🎯" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You’ve now built a fully functional, professional-grade MikroTik firewall with:</p>



<ul class="wp-block-list">
<li>Clear input/forward logic</li>



<li>Dynamic protection against attacks</li>



<li>NAT and Hairpin NAT</li>



<li>Scalable address lists</li>



<li>Clean, well-commented rules</li>



<li>Backups, logging, and recovery plans</li>
</ul>
<p>Сообщение <a href="https://boxvirt.com/firewall-logging-backups-best-practices/">Firewall Logging, Backups &#038; Best Practices</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/firewall-logging-backups-best-practices/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Understanding NAT &#038; Hairpin NAT in MikroTik</title>
		<link>https://boxvirt.com/understanding-nat-hairpin-nat-in-mikrotik/</link>
					<comments>https://boxvirt.com/understanding-nat-hairpin-nat-in-mikrotik/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Sat, 02 Aug 2025 21:33:39 +0000</pubDate>
				<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Setup]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=128</guid>

					<description><![CDATA[<p>— Make Local and External Access Work Seamlessly What is NAT? NAT (Network Address Translation) lets multiple devices on your internal network (usually private IPs like 192.168.x.x) share [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/understanding-nat-hairpin-nat-in-mikrotik/">Understanding NAT &#038; Hairpin NAT in MikroTik</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">— Make Local and External Access Work Seamlessly</h3>



<h2 class="wp-block-heading">What is NAT?</h2>



<p><strong>NAT</strong> (Network Address Translation) lets multiple devices on your internal network (usually private IPs like <code>192.168.x.x</code>) share a single public IP to communicate with the internet.</p>



<p>MikroTik uses <strong>source NAT (src-nat)</strong> with <strong>masquerade</strong> by default to make this happen.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f9ed.png" alt="🧭" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Basic Outbound NAT — Internet Access for LAN</h3>



<p>Let’s make sure devices in your LAN can access the internet.</p>



<pre class="wp-block-preformatted"><code>/ip firewall nat<br>add chain=srcnat out-interface-list=WAN action=masquerade comment="LAN to internet"<br></code></pre>



<p>This tells MikroTik:<br>“All packets leaving the WAN interface should have their source IP replaced with the router’s public IP.”</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4e5.png" alt="📥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What About Incoming Connections?</h2>



<p>Suppose you want to host something like:</p>



<ul class="wp-block-list">
<li>A website on your NAS</li>



<li>An Immich gallery on your home server</li>



<li>A game server on your PC</li>
</ul>



<p>You’ll need to <strong>port-forward</strong> incoming traffic from your public IP to the correct internal IP.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step-by-Step: Create a Destination NAT (Port Forward)</h2>



<p>Let’s say your NAS is at <code>192.168.88.100</code> and you want to expose HTTPS (TCP port 443):</p>



<pre class="wp-block-preformatted"><code>/ip firewall nat<br>add chain=dstnat dst-address=YOUR_PUBLIC_IP protocol=tcp dst-port=443 \<br>    action=dst-nat to-addresses=192.168.88.100 to-ports=443 comment="Forward HTTPS to NAS"<br></code></pre>



<p>If you have a dynamic IP, you can use interface lists instead:</p>



<pre class="wp-block-preformatted"><code>/ip firewall nat<br>add chain=dstnat in-interface-list=WAN protocol=tcp dst-port=443 \<br>    action=dst-nat to-addresses=192.168.88.100 to-ports=443 comment="Forward HTTPS"<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f300.png" alt="🌀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> What Is Hairpin NAT?</h2>



<p>Imagine this:</p>



<ul class="wp-block-list">
<li>Your DNS (e.g., Unbound or Pi-hole) resolves <code>nas.yourdomain.com</code> to your public IP</li>



<li>You’re inside your home network</li>



<li>You open <code>https://nas.yourdomain.com</code></li>
</ul>



<p>Now your request leaves the LAN → goes to the router’s public IP → hits the port forward… and fails <img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p>That’s because by default, <strong>MikroTik doesn’t know how to reflect this back to LAN</strong> — it’s confused because the destination is “external,” but the source is internal.</p>



<p>That’s where <strong>Hairpin NAT</strong> comes in.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How to Enable Hairpin NAT</h2>



<p>You’ll need two extra rules to make it work:</p>



<h3 class="wp-block-heading">1. Accept Internal Reflection in Firewall</h3>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward src-address=192.168.88.0/24 dst-address=192.168.88.100 action=accept \<br>    comment="Allow hairpin access to NAS"<br></code></pre>



<p>Adjust IPs accordingly.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">2. Add NAT Reflection Rule</h3>



<p>This rule rewrites the source address so the internal server sees it as coming from the router:</p>



<pre class="wp-block-preformatted"><code>/ip firewall nat<br>add chain=srcnat src-address=192.168.88.0/24 dst-address=192.168.88.100 \<br>    out-interface=bridge action=masquerade comment="Hairpin NAT"<br></code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Replace <code>bridge</code> with your LAN bridge or interface if different.</p>
</blockquote>



<p>Now you can access <code>https://yourdomain.com</code> <strong>inside your LAN</strong>, and it will hit the internal server without issues.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Troubleshooting Tips</h2>



<ul class="wp-block-list">
<li>Make sure your <strong>port forward is above</strong> the general masquerade rule in NAT</li>



<li>Check that your firewall <strong>forward chain allows</strong> the internal access</li>



<li>If using VLANs, match the correct interfaces/subnets in Hairpin NAT rule</li>



<li>Test from a real client, not the router itself</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Full Example: HTTPS to NAS With Hairpin</h2>



<pre class="wp-block-preformatted"><code># Port forward<br>/ip firewall nat<br>add chain=dstnat in-interface-list=WAN protocol=tcp dst-port=443 \<br>    action=dst-nat to-addresses=192.168.88.100 to-ports=443 comment="HTTPS to NAS"<br><br># Hairpin NAT<br>/ip firewall nat<br>add chain=srcnat src-address=192.168.88.0/24 dst-address=192.168.88.100 \<br>    out-interface=bridge action=masquerade comment="Hairpin NAT"<br><br># Allow forward<br>/ip firewall filter<br>add chain=forward src-address=192.168.88.0/24 dst-address=192.168.88.100 action=accept<br></code></pre>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Summary</h2>



<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You understand what NAT and port forwarding are<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You can expose internal services to the public safely<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You added Hairpin NAT to make them accessible locally<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You troubleshooted common issues like DNS and interfaces</p>
<p>Сообщение <a href="https://boxvirt.com/understanding-nat-hairpin-nat-in-mikrotik/">Understanding NAT &#038; Hairpin NAT in MikroTik</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/understanding-nat-hairpin-nat-in-mikrotik/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Firewall Protection Against Attacks</title>
		<link>https://boxvirt.com/firewall-protection-against-attacks/</link>
					<comments>https://boxvirt.com/firewall-protection-against-attacks/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Sat, 02 Aug 2025 21:31:21 +0000</pubDate>
				<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[MikroTik]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=125</guid>

					<description><![CDATA[<p>— Block, Detect, and Log Like a Pro Why MikroTik Routers Get Targeted If your router has a public IP — it will be scanned.Thousands of bots around [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/firewall-protection-against-attacks/">Firewall Protection Against Attacks</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">— Block, Detect, and Log Like a Pro</h3>



<h2 class="wp-block-heading">Why MikroTik Routers Get Targeted</h2>



<p>If your router has a public IP — it <em>will</em> be scanned.<br>Thousands of bots around the world constantly:</p>



<ul class="wp-block-list">
<li>Look for open Winbox, SSH, Telnet, or API ports</li>



<li>Try brute-force logins</li>



<li>Launch SYN floods and DoS attacks</li>



<li>Abuse open DNS for reflection attacks</li>
</ul>



<p>Even a home router gets hit dozens of times a day.</p>



<p>So let’s build rules that:</p>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Drop malicious traffic</li>



<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f6ab.png" alt="🚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Rate-limit brute-force attempts</li>



<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f575.png" alt="🕵" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Detect scanners</li>



<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f514.png" alt="🔔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Log suspicious activity</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 1: Detect and Drop Port Scanners</h2>



<p>MikroTik has a neat feature to <strong>detect port scanning</strong> automatically.</p>



<p>Add this rule near the top of your input chain:</p>



<pre class="wp-block-preformatted">bashКопироватьРедактировать<code>/ip firewall filter
add chain=input protocol=tcp psd=21,3s,3,1 action=add-src-to-address-list \
    address-list=PORT_SCANNERS address-list-timeout=1d comment="Detect TCP port scan"
</code></pre>



<p>Explanation:</p>



<ul class="wp-block-list">
<li>Detects if 21 different TCP ports are probed in 3 seconds</li>



<li>Adds the source IP to <code>PORT_SCANNERS</code> list</li>



<li>Keeps it blocked for 1 day</li>
</ul>



<p>Now, block those scanners:</p>



<pre class="wp-block-preformatted">bashКопироватьРедактировать<code>/ip firewall filter
add chain=input src-address-list=PORT_SCANNERS action=drop comment="Drop port scanners"
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f6ab.png" alt="🚫" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 2: Drop Bogon and Reserved IPs on WAN</h2>



<p>Bots often spoof invalid IPs — like private ranges or loopback — that should never appear on WAN.</p>



<p>Block them at the input chain (and forward, if needed):</p>



<pre class="wp-block-preformatted">bashКопироватьРедактировать<code>/ip firewall filter
add chain=input src-address=0.0.0.0/8 action=drop comment="Drop bogus src IP"
add chain=input src-address=127.0.0.0/8 action=drop comment="Drop loopback"
add chain=input src-address=10.0.0.0/8 action=drop comment="Drop private src"
add chain=input src-address=169.254.0.0/16 action=drop comment="Drop link-local"
add chain=input src-address=192.168.0.0/16 action=drop comment="Drop private src"
</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4a3.png" alt="💣" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 3: Basic DoS Protection (SYN Flood, Ping Flood)</h2>



<p>MikroTik supports <strong>connection limits and rate matching</strong>.</p>



<h3 class="wp-block-heading">Limit TCP SYN connections per IP:</h3>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=input protocol=tcp tcp-flags=syn connection-limit=30,32 \<br>    action=add-src-to-address-list address-list=SYN_FLOODERS \<br>    address-list-timeout=1d comment="SYN flood detect"<br>add chain=input src-address-list=SYN_FLOODERS action=drop comment="Drop SYN flooders"<br></code></pre>



<h3 class="wp-block-heading">Limit ICMP (Ping) Floods:</h3>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=input protocol=icmp limit=5,10 action=accept comment="Allow limited ping"<br>add chain=input protocol=icmp action=drop comment="Drop excessive ping"<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f511.png" alt="🔑" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 4: Brute Force Protection — SSH, Winbox, etc.</h2>



<p>We’ll use <strong>connection rate limits</strong> to detect brute force:</p>



<h3 class="wp-block-heading">SSH Brute-Force Detection:</h3>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=input protocol=tcp dst-port=22 src-address-list=!TRUSTED_IPS \<br>    connection-state=new src-address-list=!SSH_WHITELIST \<br>    action=add-src-to-address-list address-list=SSH_BRUTE address-list-timeout=1d \<br>    comment="SSH brute force detector"<br><br>add chain=input src-address-list=SSH_BRUTE action=drop comment="Drop SSH brute IPs"<br></code></pre>



<p>You can repeat this for Winbox (port 8291), Telnet, or other services.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4cb.png" alt="📋" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 5: Log Suspicious Behavior (Optional but Useful)</h2>



<p>You can log any drop or suspicious action:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=input src-address-list=SSH_BRUTE action=drop log=yes log-prefix="SSH BRUTE: "<br></code></pre>



<p>Just remember: <strong>log carefully</strong>. If you&#8217;re under a flood, logging every packet can overload your router.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Tip: Use Connection Limits for Other Abuse Scenarios</h2>



<p>If you suspect spamming, malware, or excessive usage — you can add <strong>connection limits</strong> per IP or per subnet.</p>



<p>Example:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward protocol=tcp dst-port=25 src-address-list=LAN_SUBNETS \<br>    connection-limit=10,32 action=drop comment="Limit SMTP spam"<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4c1.png" alt="📁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Example: Full Protection Ruleset Snippet</h2>



<pre class="wp-block-preformatted"><code># Port scan detection<br>add chain=input protocol=tcp psd=21,3s,3,1 action=add-src-to-address-list \<br>    address-list=PORT_SCANNERS address-list-timeout=1d comment="Port scan detect"<br>add chain=input src-address-list=PORT_SCANNERS action=drop<br><br># Brute force protection<br>add chain=input protocol=tcp dst-port=22 connection-state=new \<br>    src-address-list=!TRUSTED_IPS action=add-src-to-address-list \<br>    address-list=SSH_BRUTE address-list-timeout=1d comment="SSH brute detect"<br>add chain=input src-address-list=SSH_BRUTE action=drop<br><br># SYN flood<br>add chain=input protocol=tcp tcp-flags=syn connection-limit=30,32 \<br>    action=add-src-to-address-list address-list=SYN_FLOODERS address-list-timeout=1d<br>add chain=input src-address-list=SYN_FLOODERS action=drop<br><br># ICMP rate limit<br>add chain=input protocol=icmp limit=5,10 action=accept<br>add chain=input protocol=icmp action=drop<br><br># Bogon drop<br>add chain=input src-address=0.0.0.0/8 action=drop<br>add chain=input src-address=10.0.0.0/8 action=drop<br>add chain=input src-address=127.0.0.0/8 action=drop<br></code></pre>



<p></p>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Summary</h2>



<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You’ve implemented rules against port scanners, brute force, SYN floods, and ping floods<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You block reserved and spoofed IPs<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You rate-limit ICMP and connection abuse<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You log and block offenders dynamically<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You’re now <strong>very hard to scan or attack</strong></p>
<p>Сообщение <a href="https://boxvirt.com/firewall-protection-against-attacks/">Firewall Protection Against Attacks</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/firewall-protection-against-attacks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Forward Chain Firewall Rules: Controlling LAN, Guests, and the Internet</title>
		<link>https://boxvirt.com/forward-chain-firewall-rules-controlling-lan-guests-and-the-internet/</link>
					<comments>https://boxvirt.com/forward-chain-firewall-rules-controlling-lan-guests-and-the-internet/#respond</comments>
		
		<dc:creator><![CDATA[eXtre]]></dc:creator>
		<pubDate>Sat, 02 Aug 2025 21:28:24 +0000</pubDate>
				<category><![CDATA[Mikrotik]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[MikroTik]]></category>
		<guid isPermaLink="false">https://boxvirt.com/?p=122</guid>

					<description><![CDATA[<p>What Is the Forward Chain? In MikroTik’s firewall, the forward chain handles traffic that passes through the router — not destined to it. Examples: If it goes through [&#8230;]</p>
<p>Сообщение <a href="https://boxvirt.com/forward-chain-firewall-rules-controlling-lan-guests-and-the-internet/">Forward Chain Firewall Rules: Controlling LAN, Guests, and the Internet</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">What Is the Forward Chain?</h2>



<p>In MikroTik’s firewall, the <strong>forward chain</strong> handles traffic that <strong>passes through</strong> the router — not destined to it.</p>



<p>Examples:</p>



<ul class="wp-block-list">
<li>Your laptop accessing google.com</li>



<li>A guest phone trying to stream Netflix</li>



<li>A surveillance camera sending footage to the cloud</li>



<li>A VPN client accessing a NAS in your LAN</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>If it goes <em>through</em> the router from one interface to another — it hits the <code>forward</code> chain.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f9e0.png" alt="🧠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Default MikroTik Behavior</h2>



<p>By default, MikroTik allows everything in <code>forward</code> chain. That means:</p>



<ul class="wp-block-list">
<li>LAN can access WAN</li>



<li>Devices in different subnets can talk to each other</li>



<li>IoT devices can ping your servers</li>



<li>Anyone on your guest Wi-Fi can scan your home PCs</li>
</ul>



<p>Sounds bad? It is.</p>



<p><strong>We’re going to change that.</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f512.png" alt="🔒" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Our Goal</h2>



<ul class="wp-block-list">
<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Allow LAN to go to the internet</li>



<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Block internet from accessing LAN (unsolicited)</li>



<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Segment guests, IoT, and sensitive networks</li>



<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Only allow specific cross-subnet traffic</li>



<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Detect and log suspicious or brute-force attempts</li>



<li><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Rate-limit scans and flooding</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f9f1.png" alt="🧱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 1: Allow Established and Related Connections</h2>



<p>We always start here:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward connection-state=established,related action=accept comment="Allow related &amp; established"<br></code></pre>



<p>This permits returning traffic like replies to web requests.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f528.png" alt="🔨" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 2: Drop Invalid Connections</h2>



<p>Packets without context or connection tracking often indicate garbage, malware, or errors:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward connection-state=invalid action=drop comment="Drop invalid"<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f310.png" alt="🌐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 3: Allow LAN and VPN to Internet</h2>



<p>We’ll assume you already have <code>LAN_SUBNETS</code> and <code>VPN_SUBNETS</code> address lists. You allow these to go out:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward src-address-list=LAN_SUBNETS out-interface-list=WAN action=accept comment="LAN to internet"<br>/ip firewall filter<br>add chain=forward src-address-list=VPN_SUBNETS out-interface-list=WAN action=accept comment="VPN to internet"<br></code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Optional: Instead of <code>out-interface-list=WAN</code>, you can use <code>dst-address-type=!local</code> or other advanced filtering.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f6b7.png" alt="🚷" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 4: Block Inter-Subnet Traffic (Optional)</h2>



<p>If you don’t want your guest network to access your private network, <strong>drop or restrict it</strong>.</p>



<p>Example:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward src-address=192.168.20.0/24 dst-address=192.168.88.0/24 action=drop comment="Block Guest to LAN"<br></code></pre>



<p>You can also use interface lists or VLANs here.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f440.png" alt="👀" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 5: Log and Drop Everything Else</h2>



<p>At the bottom of the chain, drop all other forward attempts. Optionally log them:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward log=yes log-prefix="Dropped FORWARD: " action=drop<br></code></pre>



<p>Or just quietly drop:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward action=drop comment="Drop all else"<br></code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Pro Tip: If you&#8217;re running services that should be reachable (e.g., port forwards), you&#8217;ll create <strong>exceptions before this drop rule</strong>.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f504.png" alt="🔄" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Optional: Allow Specific Internal Flows</h2>



<p>For example, if a VPN client needs to reach a NAS in your LAN:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward src-address=10.10.10.0/24 dst-address=192.168.88.100 protocol=tcp dst-port=445 action=accept comment="VPN to NAS (SMB)"<br></code></pre>



<p>Or allow ICMP (ping) between LAN and VPN:</p>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward src-address-list=VPN_SUBNETS dst-address-list=LAN_SUBNETS protocol=icmp action=accept comment="VPN ping LAN"<br></code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Forward Chain Example (Clean &amp; Secure)</h2>



<pre class="wp-block-preformatted"><code>/ip firewall filter<br>add chain=forward connection-state=established,related action=accept comment="Allow known connections"<br>add chain=forward connection-state=invalid action=drop comment="Drop invalid"<br><br>add chain=forward src-address-list=LAN_SUBNETS out-interface-list=WAN action=accept comment="LAN internet"<br>add chain=forward src-address-list=VPN_SUBNETS out-interface-list=WAN action=accept comment="VPN internet"<br><br>add chain=forward src-address=192.168.20.0/24 dst-address=192.168.88.0/24 action=drop comment="Guest to LAN — blocked"<br><br>add chain=forward action=drop comment="Drop everything else"<br></code></pre>



<h2 class="wp-block-heading"></h2>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Summary</h2>



<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You&#8217;ve secured the forward chain<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> You allowed legitimate traffic to pass<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Blocked inter-subnet traffic where needed<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dropped unknown or invalid connections<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Laid the groundwork for firewall segmentation</p>
<p>Сообщение <a href="https://boxvirt.com/forward-chain-firewall-rules-controlling-lan-guests-and-the-internet/">Forward Chain Firewall Rules: Controlling LAN, Guests, and the Internet</a> появились сначала на <a href="https://boxvirt.com">Boxvirt - Proxmox &amp; OPNsense Infrastructure Guides</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://boxvirt.com/forward-chain-firewall-rules-controlling-lan-guests-and-the-internet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
