{"id":39,"date":"2023-09-17T21:21:32","date_gmt":"2023-09-17T18:21:32","guid":{"rendered":"https:\/\/blog.twis7.com\/?p=39"},"modified":"2023-10-08T19:00:10","modified_gmt":"2023-10-08T16:00:10","slug":"private-network-with-nat-for-vms-on-proxmox-with-single-public-ipv4","status":"publish","type":"post","link":"https:\/\/blog.twis7.com\/index.php\/2023\/09\/17\/private-network-with-nat-for-vms-on-proxmox-with-single-public-ipv4\/","title":{"rendered":"Private Network with NAT for VMs on Proxmox with Single Public IPv4"},"content":{"rendered":"<p>I have a <a href=\"https:\/\/blog.twis7.com\/index.php\/2023\/09\/14\/dedicated-server-from-oneprovider-first-impressions\/\">dedicated server<\/a> with only 1 Public IPv4, without a router in front to manage the network. So I should use the power of <a href=\"https:\/\/wiki.debian.org\/iptables\">iptables<\/a> and proxmox to create a private network for the VMs. Virtual machines will communicate with the world through NAT. Long story short:<br \/><em>Internet &lt;-&gt; vmbr0 (default bridge with static IP) &lt;-&gt; vmbr2(second bridge, that I will create) &lt;-&gt; Virtual Machines<\/em><\/p>\n<p>Proxmox Firewall, which is just iptables, will take care of network security.<br \/>Port forwarding? no worries, iptables will take care too.<\/p>\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"431\" height=\"557\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-network.png\" alt=\"\" class=\"wp-image-42\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-network.png 431w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-network-232x300.png 232w\" sizes=\"auto, (max-width: 431px) 100vw, 431px\" \/><figcaption class=\"wp-element-caption\"><em>network diagram<\/em><\/figcaption><\/figure>\n\n\n\n<!--more-->\n\n\n\n<h2 class=\"wp-block-heading\">Creating the bridge<\/h2>\n\n\n<p><strong>Let&#8217;s get started<\/strong>! Our server should look like this (expand from menu Datacenter -&gt; click on your node -&gt; System -&gt; Network<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"121\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/default-configuration-1024x121.png\" alt=\"\" class=\"wp-image-45\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/default-configuration-1024x121.png 1024w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/default-configuration-300x36.png 300w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/default-configuration-768x91.png 768w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/default-configuration-1536x182.png 1536w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/default-configuration-2048x243.png 2048w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/default-configuration-1088x129.png 1088w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p>Click on <em>create<\/em> and choose <em>Linux Bridge<\/em><strong>. It is crucial to leave Bridge ports empty<\/strong>, because we have only 1 Pubic IPv4 connected to the Network Device on the server.<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"440\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/create-second-bridge-for-private-network-1024x440.png\" alt=\"\" class=\"wp-image-47\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/create-second-bridge-for-private-network-1024x440.png 1024w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/create-second-bridge-for-private-network-300x129.png 300w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/create-second-bridge-for-private-network-768x330.png 768w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/create-second-bridge-for-private-network-1088x467.png 1088w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/create-second-bridge-for-private-network.png 1518w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\"><em>What is Linux bridge, information from the internet:<\/em><br>A Linux bridge is <strong>a kernel module that behaves like a network switch, forwarding packets between interfaces that are connected to it<\/strong>. It&#8217;s usually used for forwarding packets on routers, on gateways, or between VMs and network namespaces on a host -&gt; read <a href=\"https:\/\/developers.redhat.com\/articles\/2022\/04\/06\/introduction-linux-bridging-commands-and-features\">more<\/a><br>A network bridge is <em>a Link Layer device which forwards traffic between networks based on MAC addresses<\/em> and is therefore also referred to as a Layer 2 device -&gt; read <a href=\"https:\/\/www.ibm.com\/docs\/en\/linux-on-systems?topic=choices-using-linux-bridge\">more<\/a> <br><strong><em>In simple words, It is like the LAN on your home router.<\/em><\/strong><\/figcaption><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Take care of the routing <\/h2>\n\n\n<p>so, our VMs from the private subnet 10.10.10.0\/24,\u00a0 can connect to internet.<br \/>First we need to <strong>enable IP forwarding<\/strong>. This is a way to make our Linux to act like a router.<br \/>SSH to the Proxmox Host or use Shell from web gui:<\/p>\n<p>edit <em>\/etc\/sysctl.conf <\/em>with your favorite text editor and add this in the end of the file.<\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"net.ipv4.ip_forward = 1\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">net<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">ipv4<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">ip_forward<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p>After editing the file, you can run the following command to make the changes take effect right away.<\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"sysctl -p\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">sysctl<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">p<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p>Configure the <strong>NAT <\/strong>with a method called <strong>MASQUERADE<\/strong>. In that way all virtual machines from the private network will connect to the internet from one single public IPv4.<\/p>\n<p>edit the file : <em>\/etc\/network\/interfaces <\/em>adding this under <strong>VMBR2<\/strong><\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"post-up iptables -t nat -A POSTROUTING -s '10.10.10.0\/24' -o vmbr0 -j MASQUERADE\npost-down iptables -t nat -D POSTROUTING -s '10.10.10.0\/24' -o vmbr0 -j MASQUERADE\npost-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1\npost-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">up<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">A<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">POSTROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">s<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">10.10.10.0\/24<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">o<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">MASQUERADE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">POSTROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">s<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">10.10.10.0\/24<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">o<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">MASQUERADE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">up<\/span><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">raw<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">I<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">fwbr<\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">CT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">zone<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">raw<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">fwbr<\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">CT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">zone<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p>The part with &#8220;<em>post-up iptables -t raw -I PREROUTING -i fwbr+ -j CT &#8211;zone 1<\/em>&#8221; is very important, because we will activate the proxmox firewall later. From the <a href=\"https:\/\/pve.proxmox.com\/wiki\/Network_Configuration\">proxmox documentation<\/a>:<br \/><em>&#8220;<strong>In some masquerade setups with firewall enabled, conntrack zones might be needed for outgoing connections. Otherwise the firewall could block outgoing connections since they will prefer the <tt><span class=\"monospaced\">POSTROUTING<\/span><\/tt> of the VM bridge (and not <tt><span class=\"monospaced\">MASQUERADE<\/span><\/tt>).&#8221;<\/strong><\/em><\/p>\n<p>The file <em>\/etc\/network\/interfaces <\/em>should like something like this:<\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"auto vmbr0\niface vmbr0 inet static\n\taddress 202.202.202.202\/24\n\tgateway 202.202.202.1\n\tbridge-ports eno1\n\tbridge-stp off\n\tbridge-fd 0\n\nauto vmbr2\niface vmbr2 inet static\n\taddress 10.10.10.1\/24\n\tbridge-ports none\n\tbridge-stp off\n\tbridge-fd 0\n        post-up   iptables -t nat -A POSTROUTING -s '10.10.10.0\/24' -o vmbr0 -j MASQUERADE\n        post-down iptables -t nat -D POSTROUTING -s '10.10.10.0\/24' -o vmbr0 -j MASQUERADE\n        post-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1\n        post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">auto<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">iface<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">inet<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">static<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">address<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">202.202<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">202.202<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #B48EAD\">24<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">gateway<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">202.202<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">202.1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">ports<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">eno1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">stp<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">off<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">fd<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">auto<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">iface<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">inet<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">static<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">address<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.1<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #B48EAD\">24<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">ports<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">none<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">stp<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">off<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">fd<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">up<\/span><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">A<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">POSTROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">s<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">10.10.10.0\/24<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">o<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">MASQUERADE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">POSTROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">s<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">10.10.10.0\/24<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">o<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">MASQUERADE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">up<\/span><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">raw<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">I<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">fwbr<\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">CT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">zone<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">raw<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">fwbr<\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">CT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">zone<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p>type <em>ifreload -a <\/em>in the terminal to reload the interfaces or reboot the proxmox host.<br \/>If everything is fine, you will be able to start VMs with static IPs, that will have internet connection.<br \/>If it is not working try to add &#8220;<em>post-up echo 1 &gt; \/proc\/sys\/net\/ipv4\/ip_forward<\/em>&#8221; above the MASQUERADES rules.<\/p>\n<\/p>\n\n\n<h2 class=\"wp-block-heading\">Install and Configure the DHCP<\/h2>\n\n\n<p>We need DHCP for our VMs to take IP address automatically. For that we will use <a href=\"https:\/\/wiki.debian.org\/dnsmasq\">DNSMasq<\/a><\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"apt install dnsmasq -y\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">apt<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">install<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">dnsmasq<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">y<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p>edit the file <em>\/etc\/dnsmasq.conf <\/em>and add the following in the end<\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"domain=proxmox.local\ninterface=vmbr2\ndhcp-range=10.10.10.10,10.10.10.220,12h\ndhcp-option=vmbr2,3,10.10.10.1\nserver=1.1.1.1\nserver=8.8.8.8\ndhcp-leasefile=\/var\/lib\/misc\/dnsmasq.leases\n\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">domain<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9\">proxmox<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9\">local<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">interface<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9\">vmbr2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">dhcp<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">range<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.220<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\">12<\/span><span style=\"color: #D8DEE9\">h<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">dhcp<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">option<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9\">vmbr2<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">3<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">server<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">1.1<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">1.1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">server<\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #B48EAD\">8.8<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">8.8<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">dhcp<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">leasefile<\/span><span style=\"color: #81A1C1\">=\/var<\/span><span style=\"color: #D8DEE9FF\">\/<\/span><span style=\"color: #D8DEE9\">lib<\/span><span style=\"color: #D8DEE9FF\">\/misc\/dnsmasq.leases<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n<p>Enable and start the dnsmasq:<\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"systemctl enable dnsmasq &amp;&amp; systemctl start dnsmasq\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">systemctl<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">enable<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">dnsmasq<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">&amp;&amp;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">systemctl<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">start<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">dnsmasq<\/span><\/span><\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Activate Proxmox Firewall<\/h2>\n\n\n<p>Our proxmox host is with Public IP, which means that all ports are open to the world. Everybody from the internet can try to do nasty things with our hypervisor. To secure it, we will enable the built-in firewall.<br \/>Be very careful in this step, if something goes wrong you will be locked out without access to your host. If this happens, the only option will be to ask for IPMI activation to the host and remove the rules manually from the terminal.<br \/>Two ports are essential &#8211; 22 for ssh and 8006 for web-GUI. I will restrict them to be accessed only from my home static IP. My ISP never change my IP, because I am paying for it. If you do not have static IP, it is not a good idea to use dynamic IP. Maybe set a VPN, somewhere in the cloud and use it when access to proxmox is needed.<\/p>\n<p>Click on Datacenter -&gt; Expand Firewall and click options<br \/>Firewall must be off \/\/ atleast for now<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"559\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/firewall-off-1024x559.png\" alt=\"\" class=\"wp-image-70\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/firewall-off-1024x559.png 1024w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/firewall-off-300x164.png 300w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/firewall-off-768x419.png 768w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/firewall-off-1088x594.png 1088w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/firewall-off.png 1454w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p>Click on Firewall -&gt; Add | to make some firewall rules | 160.72.64.51 is my home IP (not really but..) and 8006 is the port for Proxmox web<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/allow-webguin-from-single-ip-1024x518.png\" alt=\"\" class=\"wp-image-71\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/allow-webguin-from-single-ip-1024x518.png 1024w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/allow-webguin-from-single-ip-300x152.png 300w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/allow-webguin-from-single-ip-768x389.png 768w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/allow-webguin-from-single-ip-1536x778.png 1536w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/allow-webguin-from-single-ip-1088x551.png 1088w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/allow-webguin-from-single-ip.png 1592w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p>Do the same but for SSH<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"549\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/ssh-to-proxmox-1024x549.png\" alt=\"\" class=\"wp-image-72\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/ssh-to-proxmox-1024x549.png 1024w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/ssh-to-proxmox-300x161.png 300w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/ssh-to-proxmox-768x412.png 768w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/ssh-to-proxmox-1536x823.png 1536w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/ssh-to-proxmox-1088x583.png 1088w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/ssh-to-proxmox.png 1586w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p>It took me some time to understand why my DHCP is not working, ufc it was the f#**ing firewall, add this rules for <strong>VMBR2 <\/strong>interface<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"509\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-DHCP-firewall-rule-1024x509.png\" alt=\"\" class=\"wp-image-73\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-DHCP-firewall-rule-1024x509.png 1024w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-DHCP-firewall-rule-300x149.png 300w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-DHCP-firewall-rule-768x382.png 768w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-DHCP-firewall-rule-1536x764.png 1536w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-DHCP-firewall-rule-1088x541.png 1088w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-DHCP-firewall-rule.png 1576w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p>&#8230;and rule for DNS (DHCP needs it)<\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"564\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-dns-1024x564.png\" alt=\"\" class=\"wp-image-74\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-dns-1024x564.png 1024w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-dns-300x165.png 300w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-dns-768x423.png 768w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-dns-1536x846.png 1536w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-dns-1088x599.png 1088w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-dns.png 1558w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p>I will allow and the https traffic, because I will port forward port 443 to my webserver from private subnet. <strong>Every time you create a port forwarding, it is needed to create a rule in the firewall!<\/strong><\/p>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"487\" src=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-https-1024x487.png\" alt=\"\" class=\"wp-image-75\" srcset=\"https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-https-1024x487.png 1024w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-https-300x143.png 300w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-https-768x365.png 768w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-https-1536x731.png 1536w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-https-1088x517.png 1088w, https:\/\/blog.twis7.com\/wp-content\/uploads\/2023\/09\/proxmox-firewall-https.png 1598w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n<p><strong>Return to the menu Firewall -&gt; Options and Enable the firewall. If everything is ok, you and only you, will have access to the proxmox administration. Nice <a href=\"https:\/\/www.yougetsignal.com\/tools\/open-ports\/\">tool<\/a> to test for open ports.<\/strong><\/p>\n\n\n<h2 class=\"wp-block-heading\">Port forwarding to VM<\/h2>\n\n\n<p>add at the end of the file <em>\/etc\/network\/interfaces <\/em>where 10.10.10.200 is the webserver<\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to-destination 10.10.10.200:443\npost-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to-destination 10.10.10.200:443\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">up<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">A<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">p<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">tcp<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">dport<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">443<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">DNAT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">to<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">destination<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.200<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #B48EAD\">443<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">p<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">tcp<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">dport<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">443<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">DNAT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">to<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">destination<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.200<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #B48EAD\">443<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p>the file final <em>\/etc\/network\/interfaces<\/em> should look like this<\/p>\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"auto lo\niface lo inet loopback\n\niface eno1 inet manual\n\niface eno2 inet manual\n\nauto vmbr0\niface vmbr0 inet static\n\taddress 202.202.202.202\/24\n\tgateway 202.202.202.1\n\tbridge-ports eno1\n\tbridge-stp off\n\tbridge-fd 0\n\nauto vmbr2\niface vmbr2 inet static\n\taddress 10.10.10.1\/24\n\tbridge-ports none\n\tbridge-stp off\n\tbridge-fd 0\n        post-up   iptables -t nat -A POSTROUTING -s '10.10.10.0\/24' -o vmbr0 -j MASQUERADE\n        post-down iptables -t nat -D POSTROUTING -s '10.10.10.0\/24' -o vmbr0 -j MASQUERADE\n        post-up   iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1\n        post-down iptables -t raw -D PREROUTING -i fwbr+ -j CT --zone 1\n######## open port 443 to the world\n        post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to-destination 10.10.10.200:443\n        post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 443 -j DNAT --to-destination 10.10.10.200:443\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #D8DEE9\">auto<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">lo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">iface<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">lo<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">inet<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">loopback<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">iface<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">eno1<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">inet<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">manual<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">iface<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">eno2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">inet<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">manual<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">auto<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">iface<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">inet<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">static<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">address<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">202.202<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">202.202<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #B48EAD\">24<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">gateway<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">202.202<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">202.1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">ports<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">eno1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">stp<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">off<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">fd<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">auto<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr2<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9\">iface<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr2<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">inet<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">static<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">address<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.1<\/span><span style=\"color: #81A1C1\">\/<\/span><span style=\"color: #B48EAD\">24<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">ports<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">none<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">stp<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">off<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">\t<\/span><span style=\"color: #D8DEE9\">bridge<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">fd<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">0<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">up<\/span><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">A<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">POSTROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">s<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">10.10.10.0\/24<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">o<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">MASQUERADE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">POSTROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">s<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">10.10.10.0\/24<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">o<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">MASQUERADE<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">up<\/span><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">raw<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">I<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">fwbr<\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">CT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">zone<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">raw<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">fwbr<\/span><span style=\"color: #81A1C1\">+<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">CT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">zone<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">1<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">######## <\/span><span style=\"color: #D8DEE9\">open<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">port<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">443<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">to<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">the<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">world<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">up<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">A<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">p<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">tcp<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">dport<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">443<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">DNAT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">to<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">destination<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.200<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #B48EAD\">443<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #D8DEE9\">post<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">down<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">iptables<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">t<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">nat<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">D<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">PREROUTING<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">i<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">vmbr0<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">p<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">tcp<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">dport<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">443<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">j<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #D8DEE9\">DNAT<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">--<\/span><span style=\"color: #D8DEE9\">to<\/span><span style=\"color: #81A1C1\">-<\/span><span style=\"color: #D8DEE9\">destination<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #B48EAD\">10.10<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #B48EAD\">10.200<\/span><span style=\"color: #D8DEE9FF\">:<\/span><span style=\"color: #B48EAD\">443<\/span><\/span><\/code><\/pre><\/div>\n\n\n<p><em>&#8220;ifreload -a&#8221; <\/em>to activate the changes. <br \/>And that should be it. <\/p>\n<p>Enjoy!<\/p>","protected":false},"excerpt":{"rendered":"<p>I have a dedicated server with only 1 Public IPv4, without a router in front to manage the network. So I should use the power of iptables and proxmox to create a private network for the VMs. Virtual machines will communicate with the world through NAT. Long story short:Internet &lt;-&gt; vmbr0 (default bridge with static&hellip; <a class=\"more-link\" href=\"https:\/\/blog.twis7.com\/index.php\/2023\/09\/17\/private-network-with-nat-for-vms-on-proxmox-with-single-public-ipv4\/\">Continue reading <span class=\"screen-reader-text\">Private Network with NAT for VMs on Proxmox with Single Public IPv4<\/span> <span class=\"meta-nav\" aria-hidden=\"true\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,13],"tags":[12,15,14],"class_list":["post-39","post","type-post","status-publish","format-standard","hentry","category-debian","category-proxmox","tag-dedicated-server","tag-network-with-single-ipv4","tag-proxmox"],"_links":{"self":[{"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/posts\/39","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/comments?post=39"}],"version-history":[{"count":35,"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/posts\/39\/revisions"}],"predecessor-version":[{"id":94,"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/posts\/39\/revisions\/94"}],"wp:attachment":[{"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/media?parent=39"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/categories?post=39"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.twis7.com\/index.php\/wp-json\/wp\/v2\/tags?post=39"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}