Labb 1: NAT

VirtualBox nätverkstyp som default är NAT. Observera att en virtuellmaskin från VirtualBox kan använda fyra nätverksadaptrar (egentligen åtta, men syns endast fyra).

Bild 1: NAT

Hur fungerar NAT anslutning på VirtualBox?

När en virtuellmaskin startar tilldelas nödvändiga IP-adresser via en intern DHCP server. Syftet med detta är virtuella maskiner får åtkomst till Internet. Det intressanta är att alla virtuella maskiner får samma IP-konfiguration, det vill säga samma IP-adress!

Det gör att varje virtuellmaskin i NAT-läge ansluts till sitt eget isolerat nätverk och att virtuella maskiner är omedvetna om varandra. Nätverkstrafiken från virtuella maskiner görs om till värddators nätverkstrafik. Det är detta som är känd som NAT, Network Address Translation.

Bild 2 NAT

Varje virtuellmaskin har den default IP address 10.0.2.15 och har för Default Gateway 10.0.2.2

Linux nätverksadapter

Red Hat Enterprise Linux tillhandahåller metoder för lokalisering och identifiering av nätverkskort genom att namnge nätverkskort i en viss ordning. Traditionellt har nätverksinterface betecknats i Linux som eth [0123 …] i ett deterministiskt sätt. Men dessa namn motsvarar inte nödvändigtvis de faktiska placeringar i ett system. Moderna serverplattformar med flera nätverksadaptrar kan stöta på icke-deterministisk namngivning.

I Red Hat Enterprise Linux stödjas ett antal olika namngivningssystem. Standard är att tilldela fasta namn baserat på firmware, topologi och platsinformation. Detta har fördelen att namnen är helt automatiska, fullt förutsägbara och att de stannar fast även om hårdvaran läggs till eller tas bort. Nackdelen är att de ibland är svåra att läsa. Till exempel: enp0s3.

  • en – ethernet network
  • p – peripheral (PCI Network Card)
  • 0 – indexnummer
  • s – serial
  • 3 – nummer

Del 1 – Nätverksadapters namn

I centos7 starta en terminal och exekvera: ifconfig  -a

Bild 3: Nätverksadpater – enp0s3

Nu stänger centos7 av och inaktiverar [Adapter 1 ] och aktiverar [Adapter 2] med default NAT. Efter ändringarna startar vi centos7 om och kontrollerar namnet för den nya nätverksadaptern:

Bild 4: Nätverksadpater – enp0s8

Nu stänger vi centos7 av, inaktiverar [Adapter 2], aktiverar [Adapter 1] och startar den igen. Därefter kontrollerar vi namn för nätverksadaptern (tillbaka till enp0s3).

Sammanfattning

Namn bindas fast med respektive nätverksadapter och återstår även om nätverksadaptern tas bort.

Del 2 – Nätverkskonfigurationer: NAT

I ett VirtualBox virtuellmaskin kan användas upp till 8 nätverksadaptrar, fyra är synliga som default därav en nätverksadapter är aktiverad. Den aktiverad nätverksadaptern placeras i en NAT nätverkstyp. Vad innebär det?

Studera bilden nedan som illustrerar ett hemnätverk:

Bild 5: Hemnätverk

VM centos7 får åtkomst till Internet via en virtuell router i värddatorn och som översätter IP-adresser. Exekvera kommandot ifconfig -a på en terminal hos VM centos7:

Bild 6: NAT nätverksadapter

Nu vet vi att nätverksadaptern enp0s3 är ett interface för NAT nätverkstrafik. IP-adressen 10.0.2.15 tillhör inte till det lokala hemnätverket (192.168.1.0/24).

Exekvera kommandot route -n för att få fram centos7 routing-tabellen:

Bild 7: NAT som gateway

Det kan konstateras att NAT-nätverksadaptern fungerar som gateway för VM centos7. Se bilden nedan:

Bild 8: NAT nätverkstrafik

NAT nätverkstrafiken är trådlöst fram till hemrouter även om på bilden ovan illustreras som en röd linje. När fler virtuella maskiner läggs till skapar VirtualBox flera virtuella NAT router, en för varje virtuellmaskin.

Bild 9: En NAT-router för varje VM
  • För att verifiera kommunikationen med externa nätverk exekvera ping www.google.se  -c  4
  • Det bör fungera
  • För att verifiera kommunikationen med värddatorn ping 192.168.1.112  -c  4
  • Det bör fungera
  • Det går inte att pinga till NAT-gateway 10.0.2.2
  • Det går inte heller att kommunicera från värddatorn till VM centos7 eftersom denna har ingen IP-adress.

Port Forwarding

Med denna teknik kan vi ändå forcera kommunikationen från värddatorn till virtuella maskinen med hjälp av SSH. Stäng av centos7 och ta fram Network inställningar, klicka på [Advanced] och därefter på [Port forwarding].

Bild 10: Port Forwarding

När du klickar på [Port Forwarding] skapar du en regel som är portnummer-baserad. Konfigurera Port Forwarding enligt bilden nedan och därefter starta om centos7

Bild 11: Host Port 2281 och Guest Port 22

Verifiera IP konfigurationen och att centos7 lyssnar på nätverkstrafik via port 22:

  • # ifconfig -a
  • inet 10.0.2.15 (NAT routers IP adress)
  • # systemctl status sshd
  • netstat -an | grep 22

Från värddatorn starta Putty och ansluta till VM centos7 via SSH. Logga in som root eller en användare och därefter ta fram IP konfigurationen genom att exekvera # ifconfig -a:

Bild 12: SSH anslutning från värddator till VM centos7

Sammanfattning

Virtuella maskiner kan inte komma åt varandra. Däremot kan virtuella maskiner i NAT-läge komma åt värddatorn och externa nätverk samt Internet.

Från värddatorn kan man inte komma åt VM centos7, men det kan forceras via Port Forwarding. Men komihåg att pinga från värddatorn till VM centos7 kommer inte att fungera eftersom ping har inget portnummer.