VirtualBox udostępnianie usług dla danego ip

Konfiguracja serwerów, usług, itp.
kamilfr
Posty: 3
Rejestracja: 28 sierpnia 2016, 23:39

VirtualBox udostępnianie usług dla danego ip

Post autor: kamilfr »

Na początku cześć wszystkim, proszę o wyrozumiałość to jest mój pierwszy post.

Opis problemu:
Posiadam sieć WLAN w domu, komputery i inne hosty podłączone są do routera i pracują w sieci 192.168.1.0/24. Jeden z komputerów posiada adres ip 192.168.1.7. Są na nim dwie wirtualne maszyny (używam VirtualBox, obydwie maszyny pracują pod systemem Debian8). Pierwsza maszyna ma zainstalowaną usługę, którą chcę udostępniać innym komputerom w sieci 192.168.1.0/24. Posiada interfejs eth0 skonfigurowany statycznie, działający w trybie Internal Network. Druga maszyna posiada 2 interfejsy, pierwszy z nich jest bramą NAT, korzysta z dhcp. Drugi podobnie jak w przypadku pierwszej maszyny jest skonfigurowany statycznie i działa w trybie Internal Network. Na eth0 jest włączone przekierowanie portów, tak aby z komputerów rzeczywistych korzystać z usługi na pierwszej maszynie wirtualnej. Usługa działa na porcie 8080. W ustawieniach Vbox maszyny z NAT przekierowanie host port 8080, guest port 80.

Poniżej konfiguracja interfejsów maszyn wirtualnych:

Maszyna nr1
auto eth0
allow-hotplug eth0
iface eth0 inet static
address 10.110.34.1
netmask 255.255.254.0
gateway 10.110.34.2

Maszyna nr2
auto eth0 //ip jakie dostaje interfejs to 10.0.2.15
allow-hotplug eth0
iface eth0 inet dhcp

auto eth1
allow-hotplug eth1
iface eth1 inet static
address 10.110.34.2
netmask 255.255.254.0

Skrypt do PF uruchamiany na maszynie wirtualnej nr2

echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -F
iptables -t nat -F
iptables -t mangle -F

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

iptables -A PREROUTING -t nat -i eth0 -p tcp -d 0/0 --dport 80 -j DNAT --to-destination 10.110.34.1:8080

Sedno sprawy:
Używając telefonu, który podłączony jest do sieci WLAN wpisuje w przeglądarkę adres 192.168.1.7:8080 (adres komputera z wirtualnymi maszynami) i mogę korzystać z usługi zainstalowanej na pierwszej maszynie wirtualnej. Z każdego innego urządzenia w tej sieci oczywiście też. Chciałbym ograniczyć teraz dostęp do usługi urządzeniom z sieci WLAN o konkretnych adresach ip i nie wiem jak to zrobić. Jak napisać regułę, żeby podczas połączenia przychodzącego np z ip 192.168.1.8, połączenie było odrzucane, natomiast dla innych ip usługa była dostępna? Czy w ustawieniach maszyny wirtualnej w VirtualBox także należy ustawić konkretny adres ip? Zamiast -i eth0 próbowałem wstawić -s [ip ktore mogą korzystać z usługi], ale w końcu wszystkie urządzenia łączą się przez adres 192.168.1.7:8080 żeby połączyć się z usługą, NAT ma wewnętrzny adres 10.0.2.15 i nie mam pojęcia skąd eth0 ma wiedzieć że żadanie połączenia przyszło z adresu 192.168.1.8 a nie np 192.168.1.40? A może trzeba zmienić coś w konfiguracji interfejsów? Z góry dziękuję za podpowiedzi.
Awatar użytkownika
dedito
Moderator
Posty: 3512
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: VirtualBox udostępnianie usług dla danego ip

Post autor: dedito »

Jeśli dobrze rozumiem to komputery z sieci 192.168.1.0/24 łączą się z komputerem 192.168.1.7:8080, który przekierowuje to połączenie na VM nr 2, która ostatecznie przekierowuje połączenie na VM nr1?
kamilfr
Posty: 3
Rejestracja: 28 sierpnia 2016, 23:39

Re: VirtualBox udostępnianie usług dla danego ip

Post autor: kamilfr »

Na 192.168.1.7 nie ma ustawionego żadnego przekierowania. Pracuje pod win10. Zapomnialem dodac ze jedyne co widze po ipconfig /all to adres ip karty sieciowej wifi czyli ten 192.168.1.7 oraz 192.168.1.20 ktory jest adresem sieci host only dla vbox. Wpisujac ten adres w przeglądarce 192.168.1.20:8080 usluga jest dostepna tylko dla 192.168.1.7
Awatar użytkownika
dedito
Moderator
Posty: 3512
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: VirtualBox udostępnianie usług dla danego ip

Post autor: dedito »

Tak więc w trybie host-only to vbox-y raczej będą mogły łączyć się tylko z hostem. Inne komputery nie będą miały dostępu do vbox-ów.
Tu by raczej trzeba wybrać tryb 'Bridged networking' i za pomocą Iptables limitować dostęp do usługi.
kamilfr
Posty: 3
Rejestracja: 28 sierpnia 2016, 23:39

Re: VirtualBox udostępnianie usług dla danego ip

Post autor: kamilfr »

Problem istnieje nadal. O host only można zapomnieć. W dokumentacji virtual box przeczytałem, że karta pracująca w trybie NAT przypisuje sobie zewnętrzne ip, takie samo jakie ma komputer rzeczywisty (192.168.1.7), na którym znajdują się wirtualne maszyny. Tak więc korzystając z innej maszyny rzeczywistej w tej samej sieci i wpisując w przeglądarce jej adres:port uzyskuję dostęp do usługi. Także korzystając z tabletu mogę połączyć się np z apache2 zainstalowanym na wm1, bo łączę się najpierw z NAT a on sobie przekieruje połączenie (używając iptables) na interfejs eth0 wm1, bo jego druga karta jest w tej samej podsieci. No ale jakby tu zablokować taki właśnie tablet o przykładowym adresie ip 192.168.1.8. Nie mogę zmienić trybów pracy interfejsów, bo jest to wymogiem zaliczenia (chyba że dr się sam pogubił, a tylko ten przedmiot blokuje mi obronę dlatego muszę to jakoś zrobić).
Awatar użytkownika
dedito
Moderator
Posty: 3512
Rejestracja: 18 listopada 2013, 21:07
Lokalizacja: Gliwice

Re: VirtualBox udostępnianie usług dla danego ip

Post autor: dedito »

Oprócz wspomnianego Iptables masz też taki plik hosts.deny (choć dawno go nie używałem i nie wiem czy się sprawdzi w przypadku apacha), ewentualnie jak to ma być tylko apache to w jego konfiguracji zablokuj.
Jako, że jest to zadanie szkolne więcej szczegółów nie podaje, w końcu ma to być praca samodzielna.
ODPOWIEDZ