{"id":444,"date":"2022-06-08T13:20:14","date_gmt":"2022-06-08T11:20:14","guid":{"rendered":"https:\/\/tomdus.de\/wp\/?p=444"},"modified":"2022-06-08T14:39:45","modified_gmt":"2022-06-08T12:39:45","slug":"virtualbox-and-two-separates-nats","status":"publish","type":"post","link":"https:\/\/tomdus.de\/wp\/virtualbox-and-two-separates-nats\/","title":{"rendered":"VirtualBox and two separates NATs"},"content":{"rendered":"\n<p>Aim is to create two networks (10.0.2.x and 10.0.3.x) in VirtualBox and be enable ip routing between them. At first there is no default routing (AFAIK) implemented in VirtualBox for such a scenario, thus the creation of a separate router is required.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-449\" src=\"https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/VirtualBox-and-two-separates-NATs.drawio.png\" alt=\"\" width=\"601\" height=\"382\" srcset=\"https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/VirtualBox-and-two-separates-NATs.drawio.png 601w, https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/VirtualBox-and-two-separates-NATs.drawio-300x191.png 300w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/p>\n<p>There are two separates networks 10.0.2.x and 10.0.3.x defined in VirtualBox<\/p>\n<p><a href=\"https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/virtualbox-two-nats.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-446 size-medium alignnone\" src=\"https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/virtualbox-two-nats-300x166.png\" alt=\"\" width=\"300\" height=\"166\" srcset=\"https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/virtualbox-two-nats-300x166.png 300w, https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/virtualbox-two-nats.png 737w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><br \/>Further more we need for such an example 3 virtual machines:<br \/>\u2022 router with two networks (10.0.2.x and 10.0.3.x)<br \/>\u2022 ipa2 network 10.0.2.39\/24<br \/>\u2022 ipa3 network 10.0.3.5\/24<br \/>Both ipa2 and ipa3 have virbr0 for internet connection (i.e. package updates)<\/p>\n<h3>Network on \u201crouter\u201d<\/h3>\n<p><a href=\"https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/virtualbox-two-nats-router.png\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-445 size-medium alignnone\" src=\"https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/virtualbox-two-nats-router-300x112.png\" alt=\"\" width=\"300\" height=\"112\" srcset=\"https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/virtualbox-two-nats-router-300x112.png 300w, https:\/\/tomdus.de\/wp\/wp-content\/uploads\/2022\/06\/virtualbox-two-nats-router.png 767w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><\/p>\n<pre>[tomas@router ~]$ <strong>ip a<\/strong><br \/>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000<br \/>link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br \/>inet 127.0.0.1\/8 scope host lo<br \/>valid_lft forever preferred_lft forever<br \/>inet6 ::1\/128 scope host <br \/>valid_lft forever preferred_lft forever<br \/>2: <strong>enp0s3<\/strong>: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000<br \/>link\/ether 08:00:27:a7:20:28 brd ff:ff:ff:ff:ff:ff<br \/>inet <strong>10.0.2.4\/24<\/strong> brd 10.0.2.255 scope global noprefixroute enp0s3<br \/>valid_lft forever preferred_lft forever<br \/>3: <strong>enp0s8<\/strong>: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000<br \/>link\/ether 08:00:27:ea:77:c4 brd ff:ff:ff:ff:ff:ff<br \/>inet <strong>10.0.3.4\/24<\/strong> brd 10.0.3.255 scope global noprefixroute enp0s8<br \/>valid_lft forever preferred_lft forever<\/pre>\n<pre>[tomas@router ~]$ ip r<br \/>default via 10.0.3.1 dev enp0s8 proto static metric 101 <br \/>10.0.2.0\/24 dev enp0s3 proto kernel scope link src 10.0.2.4 metric 100 <br \/>10.0.3.0\/24 dev enp0s8 proto kernel scope link src 10.0.3.4 metric 101<\/pre>\n<h3>Enable ipv4 forwarding in kernel<\/h3>\n<pre>[tomas@router ~]$ sudo sysctl net.ipv4.ip_forward=1<br \/>net.ipv4.ip_forward = 1[tomas@router ~]$ sudo sysctl net.ipv4.ip_forward<br \/>net.ipv4.ip_forward = 1<\/pre>\n<h2>Network Connection on ipa2 (ipa3 is similar)<\/h2>\n<pre>[tomas@ipa2 ~]$ <strong>ip a<\/strong><br \/>1: lo: &lt;LOOPBACK,UP,LOWER_UP&gt; mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000<br \/>link\/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00<br \/>inet 127.0.0.1\/8 scope host lo<br \/>valid_lft forever preferred_lft forever<br \/>inet6 ::1\/128 scope host <br \/>valid_lft forever preferred_lft forever<br \/>2: enp0s3: &lt;BROADCAST,MULTICAST,UP,LOWER_UP&gt; mtu 1500 qdisc fq_codel state UP group default qlen 1000<br \/>link\/ether 08:00:27:e5:0e:7b brd ff:ff:ff:ff:ff:ff<br \/>inet <strong>10.0.2.39<\/strong>\/24 brd 10.0.2.255 scope global noprefixroute enp0s3<br \/>valid_lft forever preferred_lft forever<br \/>3: virbr0: &lt;NO-CARRIER,BROADCAST,MULTICAST,UP&gt; mtu 1500 qdisc noqueue state DOWN group default qlen 1000<br \/>link\/ether 52:54:00:e1:ad:57 brd ff:ff:ff:ff:ff:ff<br \/>inet 192.168.122.1\/24 brd 192.168.122.255 scope global virbr0<br \/>valid_lft forever preferred_lft forever<\/pre>\n<p>Additional routing for 10.0.3.x network:<\/p>\n<pre>[tomas@ipa2 ~]$ sudo nmcli connection modify enp0s3 +ipv4.routes \"10.0.3.0\/24 10.0.2.4\"[tomas@ipa2 ~]$ sudo nmcli connection down enp0s3 [tomas@ipa2 ~]$ sudo nmcli connection up enp0s3 <\/pre>\n<pre>[tomas@ipa2 ~]$ ip r<br \/>default via 10.0.3.1 dev enp0s3 proto static metric 100 <br \/>10.0.2.0\/24 dev enp0s3 proto kernel scope link src 10.0.2.39 metric 100 <br \/>10.0.3.0\/24 via 10.0.2.4 dev enp0s3 proto static metric 100 <br \/>192.168.122.0\/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown<\/pre>\n<h2>Checks<\/h2>\n<pre>[tomas@ipa2 ~]$ ping 10.0.3.5<br \/>PING 10.0.3.5 (10.0.3.5) 56(84) bytes of data.<br \/>64 bytes from 10.0.3.5: icmp_seq=1 ttl=63 time=1.94 ms<\/pre>\n<pre>[tomas@ipa3 ~]$ ping 10.0.2.39<br \/>PING 10.0.2.39 (10.0.2.39) 56(84) bytes of data.<br \/>64 bytes from 10.0.2.39: icmp_seq=1 ttl=63 time=0.899 ms<\/pre>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[28,27],"class_list":["post-444","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-ipa","tag-virtualbox"],"_links":{"self":[{"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/posts\/444","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/comments?post=444"}],"version-history":[{"count":6,"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/posts\/444\/revisions"}],"predecessor-version":[{"id":457,"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/posts\/444\/revisions\/457"}],"wp:attachment":[{"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/media?parent=444"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/categories?post=444"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tomdus.de\/wp\/wp-json\/wp\/v2\/tags?post=444"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}