Host-only adapteri stvaraju lokalnu virtuelnu mrežu, a rutirana TUN tunelska veza prenosi IP pakete između adresa. Nijedno od toga nije most prema drugom, zato radna konfiguracija mora reći ko prosljeđuje i kome pripada povratna ruta. Pogriješite li te dvije dodjele, gost odgovara tunelu izvorom koji klijent tunela nikada nije tražio. Dizajn ispod drži oba prefiksa odvojeno i čini povratni put eksplicitnim.

Dvije mreže, dva prefiksa

Dajte bazenu tunela i host-only mreži različite prefikse i nikada ne koristite jedan za drugi. U ovom primjeru VPN bazen je 10.44.0.0/24, a host-only mreža 192.168.99.0/24, s hostom na 192.168.99.1 i gostom na 192.168.99.20. Dodjela istog prefiksa i TUN uređaju i host-only adapteru ne spaja ih. Ona stvara dva zahtjeva na jedan raspon adresa, a tablica rutiranja tada odgovara za onaj koji je slučajno zadržala.

Host-only adapter postoji na hostu i unutar gosta, i nema sam po sebi puta izvan mašine. Premošteni i NAT priključci imaju različitu izloženost, a prelazak u premošteni način nije uslov za dosezanje jedne usluge gosta.

Host već drži put

Pogledajte šta postoji prije nego što bilo šta dodate. Host ima interfejs na host-only mreži i rutu za taj prefiks, oboje stvoreno kada je adapter podignut.

ip -br addr show
ip route show 192.168.99.0/24
sysctl net.ipv4.ip_forward

Treći red je mehanizam koji host pretvara u hop. Bez njega paket koji dolazi iz tunela adresiran je na mrežu do koje host može doći, ali je neće proslijediti. Prosljeđivanje je neophodno i nije dovoljno. Filter politika i dalje odlučuje da li je određeni tok između interfejsa tunela i host-only interfejsa dozvoljen, a ta odluka pripada napisanom pravilu, a ne podrazumijevanoj politici koju niko nije pročitao.

Gurnite rutu, pa filtrirajte šta ona doseže

Server može dostaviti host-only prefiks klijentima koji prihvataju gurnute rute, što je isti mehanizam koji se koristi za bilo koju drugu podmrežu iza tunela.

push "route 192.168.99.0 255.255.255.0"
iptables -A FORWARD -i tun0 -o vboxnet0 -d 192.168.99.20 -p tcp --dport 5432 -j ACCEPT
iptables -A FORWARD -i vboxnet0 -o tun0 -s 192.168.99.20 -p tcp --sport 5432 -m conntrack --ctstate ESTABLISHED -j ACCEPT

Ta dva pravila dozvoljavaju jednu uslugu u jednom smjeru i njene odgovore. Ruta koja doseže cijeli prefiks i filter koji dozvoljava jedan port namjerna su kombinacija; ruta plus bezuslovno prihvatanje je način na koji laboratorijska usluga postaje izložena. Gurnuta ruta takođe nije autorizacija. Klijent je prihvata, host je prosljeđuje, a firewall gosta i sama usluga i dalje imaju glas.

Gostu treba put nazad

Gost do kojeg se dolazi sa 10.44.0.x mora poslati svoje odgovore na host-only adresu hosta, ili host mora prevesti izvor. Primanje adrese od VirtualBox DHCP-a ne govori ništa ni o jednom od tih aranžmana.

ip route add 10.44.0.0/24 via 192.168.99.1 dev enp0s8
ip route get 10.44.0.15

Dodavanje te rute unutar gosta čuva originalni izvor, što održava politiku i logove po klijentu smislenim. Ograničeno prevođenje izvora na hostu je alternativa i radi, ali po cijeni skrivanja toga koji se klijent povezao. Preklapanje je drugi način kvara. Udaljeni klijent čija domaća LAN mreža već koristi 192.168.99.0/24 pročitat će gurnutu rutu kao vlastitu mrežu, i nikakva promjena na strani servera ne rješava tu dvosmislenost. Prenumerirajte jednu stranu ili odaberite prefiks koji vjerovatno neće kolidirati.

TUN uređaj prenosi IP pakete, pa dodavanje podrazumijevanog gatewaya unutar gosta ne pretvara tunel u Ethernet segment s host-only adapterom. TAP premošćivanje je drugačiji dizajn s vlastitom podrškom za klijente i vlasništvom nad adresama, a miješanje dva opisa vodi konfiguracijama koje se nikada ne slažu.

Provjerite, pa učinite da preživi restart

Testirajte jednu bezopasnu uslugu s običnog udaljenog klijenta, provjerite povratnu rutu gosta i potvrdite da se usluga koju niste dozvolili odbija, a ne da je spora.

ss -lntp '( sport = :5432 )'
conntrack -L | grep 192.168.99.20

Zatim restartujte VPN uslugu i umrežavanje virtuelne mašine i ponovite iste tri provjere. Ruta dodana ručno preživi do sljedećeg restarta, a konfiguracija koja radi samo u toploj sesiji nije dizajn. Zapišite oba prefiksa, politiku prosljeđivanja i rutu gosta zajedno. Onaj ko doda sljedeću virtuelnu mašinu trebat će sve tri i inače će ih iznova otkrivati jednu po jednu neuspjelu vezu.

Povezani članci