Konfiguracja sieci w VM

Sieć w VirtualBox

Kompletny przewodnik (po angielsku): https://www.nakivo.com/blog/virtualbox-network-setting-guide/

Chcąc łączyć się z internetem powinniśmy zdefiniować interfejs typu "mostkowana karta sieciowa" (bridged). Warunkiem jest oczywiście to, że komputer-gospodarz (na którym zainstalowano VirtualBox) ma dostęp do internetu.


Konfiguracja sieci w systemie Debian jest standardowo zapisana w pliku /etc/network/interfaces.

Natomiast do jej obsługi w Debianie 10 służą dwa polecenia:

1) systemctl - uruchamia usługi; na przykład restart usług sieci (rekonfiguracja interfejsów) wykonujemy poleceniem:

systemctl restart networking 

2) ip - rozbudowane narzędzie do zarządzania siecią (niędzy innymi zastępuje ifup, ifdown, ifconfig etc);

Konfigurację sieci rozpoczynamy (o ile nie wykonaliśmy tego w czasie instalacji systemu) od ustalenia, jakie interfejsy sieciowe są dostępne:

cat /proc/net/dev

Załóżmy, że znaleźliśmy tam interfejs enp0s3

Jeśli w naszej sieci mamy dostępny serwer DHCP - wystarczy do pliku /etc/network/interfaces dopisać:

allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet dhcp

Po restarcie (systemctl restart networking) sprawdzamy status usługi: 

sudo systemctl status networking

Następnie wyświetlamy konfigurację sieci:

ip link
ip address

Jeśli wszystko wygląda poprawnie - próbujemy połączenie z serwerem DNS firmy Google:

ping 8.8.8.8

Adres statyczny

Jeśli nie mamy serwera DHCP lub chcemy nadać własne (statyczne) adresy - musimy zmienić konfigurację w pliku /etc/network/interfaces.

Załóżmy, że chcemy mieć adres 10.0.0.229/21 (/21 jest równoważne masce podsieci 255.255.248.0) z bramą 10.0.0.6 (router).

W pliku interfaces wpisujemy:

allow-hotplug enp0s3
auto enp0s3
iface enp0s3 inet static
  address 10.0.0.229/21
  gateway 10.0.0.6

Restartujemy i testujemy.

Na koniec możemy chcieć dodać swoje adresy DNS. Załóżmy, że jest to 10.0.0.13 i 10.0.0.8. Poniżej wiersza gateway dopisujemy:

  dns-nameservers 10.0.0.8 10.0.0.13

Restart jak poprzednio. Możemy sprawdzić:

ping otwartaedukacja.pl

Wirtualna maszyna jako serwer internetowy

Dla bezpieczeństwa dobrze jest stworzyć odrębne podsieci do administracji oraz udostępniania usług sieciowych na zewnątrz. Załóżmy, że nasza sieć zewnętrzna będzie miała adres 10.0.0.0/21 (karta enp0s3, gateway 10.0.0.6), a sieć z usługami 10.11.0.0/16 (karta enp0s8, gateway 10.11.0.13).

W interfejsach sieciowych utworzymy:

auto enp0s3
iface enp0s3 inet static
address 10.0.0.229/21
gateway 10.0.0.6
dns-nameservers 10.0.0.8 10.0.0.13

auto enp0s8
iface enp0s8 inet static
address 10.11.0.230/16
gateway 10.11.0.13

Do celów testowych to nam w zasadzie wystarczy. Jeśli chcemy, by nasze usługi pojawiły się rzeczywiście w internecie, musimy skonfigurować router odpowiednio.

Te zagadnienia (routing) wykraczają poza ramy niniejszego kursu, ale na zakończenie pokażemy jak w prosty sposób skonfigurować komputer bramy, który może nam router zastąpić.

Przyjmijmy zatem, że mamy komputer z interfejsem eth0 z adresem 10.11.0.13 - który podaliśmy jako brama oraz wyjściem na internet po interfejsie eth1. Na komputerze tym zainstalowano firewall ufw.

W tej konfiguracji wystarczy dodać translacje adresów DNAT - tak jak opisano tutaj:

https://gist.github.com/kimus/9315140

Na początku pliku  /etc/ufw/before.rules zapisujemy (1.2.3.4 to przykładowy adres internetowy - zdefiniowany na eth1):


*nat
:POSTROUTING ACCEPT [0:0]
:PREROUTING ACCEPT [0:0]
-A PREROUTING -d 1.2.3.4 -p tcp -j DNAT --to-destination 10.11.0.230
COMMIT
....
Dla pewności na końcu dodajemy przepuszczenie takiego ruchu:
-A ufw-before-forward -p tcp -i eth1 -d 10.11.0.230 -j ACCEPT

Jeśli na naszym serwerze brama 10.11.0.13 (enp0s8) jest domyślną - to wystarczy.
Pod adresem 1.2.3.4 pojawi się nasz wirtualny serwer.
Aby jednak z niego można było sięgać swobodnie do internetu - musimy na naszej bramie
zdefiniować SNAT albo tak zwaną maskaradę.
Dodajemy do powyższego wpisu (przed COMMIT):

-A POSTROUTING -s 10.11.0.230/32 -o eth1 -j MASQUERADE


Więcej informacji:
https://www.systutorials.com/setting-up-gateway-using-iptables-and-route-on-linux

Użyteczne programy i komendy.

Podstawowym programem do operowania na interfejsach i tablicach routingu jest program ip.

Przykładowe komendy:

1) zmiana domyślnego interfejsu w tablicy routingu (UWAGA - możesz utracić połączenie z serwerem!):

ip route del default via 10.11.0.13 dev enp0s8
ip route add default via 10.0.0.6 dev enp0s3

2) Wyświetlenie tablicy: ip route list

3) Wyświetlenie interfejsów: ip link

4) wyświetlenie adresów: ip address

5) sprawdź jaka ścieżka routigu jest używana do  łączenia się z podanym adresem:

ip route get 8.8.8.8

W razie problemów - możemy wyświetlić ruch na wybranym interfejsie programem tcpdump (instalujemy apt install tcpdump). Na przykład:

tcpdump -i enp0s8  host 10.11.0.13

Zmiany NAT (konfiguracja ufw) możemy wyświetlić:

iptables -t nat -v -L -n

 

Last modified: Tuesday, 7 April 2020, 11:18 PM