Sinun on päätettävä, kuinka paljon koneistoa VPN-laboratoriosi ansaitsee. Reititetty yhdyskäytävä-VM kahden VirtualBox-segmentin välissä toistaa osoitteenmuunnoksen, paluupolun ja palomuurin sijainnin, jonka takana todellinen asiakas istuu. Yksi ainoa vain isäntäkoneen segmentti antaa sinulle yhden valvotun oven eikä mitään muuta. Yhdyskäytäväversio maksaa kolme vierasta ja reititystaulun, jota ylläpidät; vain isäntäkoneen versio maksaa yhden vieraan ja yhden käytännön. Kolme kysymystä erottaa ne, ja kolmas ratkaisee, voiko testisi ylipäätään mennä läpi.

Vastaa kolmeen kysymykseen ennen kuin kloonaat mitään

Aloita siitä, mitä VPN-palvelimen on havaittava. Jos palvelimen on nähtävä lähdeosoite, joka ei ole testivieraan, jonkin on muunnettava niiden välillä, ja sen jonkin on oltava reititin, jota sinä hallitset. Vain isäntäkoneen verkko antaa isäntäkoneelle sovittimen vieraan segmentissä, ei kääntäjää. Kun vieras sitten tarvitsee päästä johonkin ulkopuolelle, kiinnität NAT-sovittimen, ja VirtualBoxin oma NAT-moottori kirjoittaa lähteen uudelleen kysymättä sinulta.

Kysy seuraavaksi, saako vieras päästä mihinkään muuten kuin tunnelin kautta. Tämä vastaus valitsee sisäisen tai vain isäntäkoneen, ja se on kysymys, jonka useimmat laboratorio-kuvaukset ohittavat. Kysy lopuksi, mitä on tapahduttava, kun tunneli putoaa, koska se ratkaisee käytännön eikä topologiaa, ja laboratorio, joka todistaa vain onnellisen polun, ei ole testannut juuri mitään.

What the test requiresRouted gateway VMHost-only guest
Server sees a translated source addressYes, from your own MASQUERADE ruleNo, VirtualBox NAT does it instead
The guest has exactly one egressYes, while the second adapter faces the tunnelOnly until a NAT adapter is attached
Policy is testable during a tunnel failureRules live in one placeRules live on each guest

Yhdistä kolme roolia sisäisillä verkoilla

Käytä kolmea vierasta ja kahta nimettyä segmenttiä, ja yhdyskäytävä on ainoa kone, jolla on sovitin molemmissa:

VBoxManage modifyvm lab-client --nic1 intnet --intnet1 WAN
VBoxManage modifyvm lab-server --nic1 intnet --intnet1 LAN
VBoxManage modifyvm lab-gw --nic1 intnet --intnet1 WAN --nic2 intnet --intnet2 LAN

Sisäiselle verkolle ei ole erillistä luontivaihetta. Merkkijono --intnet1:ssa on segmentti: kaksi konetta jakaa sen vain, jos nimi täsmää tarkalleen, eikä mikään isäntäkoneella ole siihen kytketty. Juuri tämä viimeinen ominaisuus on syy siihen, että laboratorio toistuu puhtaasti, koska isäntäkoneen reitit, sen oma VPN-asiakasohjelma ja sen palomuuri eivät voi vahingossa tavoittaa vieraita. Sisäisellä segmentillä ei myöskään ole DHCP-palvelinta, ellet lisää sellaista, joten staattiset osoitteet ovat lyhin polku.

Anna asiakkaalle vain sen WAN-osoite, ja oletusyhdyskäytävä osoittaa yhdyskäytävän WAN-osoitteeseen. Palvelin saa LAN-osoitteen ja käyttää yhdyskäytävän LAN-osoitetta oletusyhdyskäytävänään. Vieraalla, joka pitää kahta osoitetta yhdessä segmentissä tai jolla on harhautunut reitti toiseen segmenttiin, on polku reitittimen ohi, ja alla olevat testit valehtelevat sinulle.

Pidän VM-nimien vieressä tekstitiedostoa, jossa on neljä osoitetta ja kaksi segmentin nimeä, ja liitän sen jokaiseen kuoreen. Viikkoja myöhemmin, kun profiilimuutos rikkoo jotain, tuo tiedosto on ero profiilin virheenjäljityksen ja oman muistini virheenjäljityksen välillä.

Valitse sisäinen tai vain isäntäkoneen segmentti segmentille, joka ei saa vuotaa

Vain isäntäkoneen tila luo virtuaalisen sovittimen isäntäkoneelle itselleen, yleensä vboxnet0, ja antaa isäntäkoneelle osoitteen vieraan segmentissä. Se on kätevää hallinnolle ja kohtalokasta eristystestille, koska isäntäkone voi nyt tavoittaa vieraan suoraan ja jokaisesta isäntäpuolen palvelusta tulee mahdollinen polku. Sisäisessä tilassa ei ole isäntäsovitinta lainkaan. Kaksi tilaa sekoittuvat helposti verkkoyhteysasetusten paneelissa, joten tarkista dokumentoitu ero etiketin sijaan (katso VirtualBoxin verkkotiedot -sivu).

Vieraalle, jonka on käytettävä tunnelia, sisäinen on turvallisempi oletus, ja yhdyskäytävä on ainoa ulospääsy. Jos pidät vain isäntäkoneen, kohtele isäntäsovitinta hallintapolkuna ja sano se ääneen: isäntäkone saa tavoittaa vieraan, eikä vieras saa voida käyttää isäntäkonetta ulostulona.

VBoxManage modifyvm lab-client --nic1 hostonly --hostonlyadapter1 vboxnet0

Eristys, jonka voit todistaa, on eristys, jonka olet määrittänyt. Vieraalla, jolla on yksi sisäinen sovitin, oletusreitti yhdyskäytävälle eikä NAT-sovitinta, ei ole polkua, joka ohittaisi yhdyskäytävän. Vieraalla, jolla on vain isäntäkoneen sovitin ja NAT-sovitin, on kaksi polkua, ja vain toinen niistä on se, jota aioit testata.

Reititä ja muunna yhdyskäytävällä ja pakota se sitten sulkeutumaan vikatilanteessa

VirtualBox ei välitä segmenttien välillä; vieras tekee sen. Kun VPN-palvelimen VM on yhdyskäytävän takana, ota välitys käyttöön ja muunna asiakkaan liikennettä, kun se lähtee palvelinta kohti:

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

Tällä säännöllä palvelin näkee yhdyskäytävän LAN-osoitteen asiakkaan osoitteen sijaan, ja juuri siltä näyttää todellinen asiakas operaattorin NAT:n takana verkon päätepisteelle. Tallenna sysctl-arvo /etc/sysctl.d/:een ja sääntö siihen palomuuripalveluun, jota jakelu käyttää, muuten uudelleenkäynnistys palauttaa laboratorion hiljaa reititettyyn mutta muuntamattomaan tilaan.

Välitys ei ole valtuutus. Oletusarvoisen FORWARD-käytännön ACCEPT alla vieras, jonka oletusreitti osoittaa yhdyskäytävälle, lähtee sitä kautta, minkä liittymän reititystaulu valitsee, tunnelilla tai ilman. Jos yhdyskäytävällä on myös NAT-sovitin pakettien asennusta varten, se sovitin on toimiva salaamaton ulostulo hetkellä, jolloin tunneli putoaa, eikä vain-VPN-testisi ollut koskaan vain-VPN-testi.

Kun palvelin onkin etäinen ja yhdyskäytävä itse päättää tunnelin, sama päätös osoittaa tunneliliittymään, ei verkkokorttiin, joka tavoittaa internetin:

iptables -P FORWARD DROP
iptables -A FORWARD -i eth0 -o tun0 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Pidä tunnelin oma ulompi kuljetus ja kaistanulkoinen hallintareitti erillään välitetystä liikenteestä. Jos ainoa tapa korjata yhdyskäytävä on sen tunnelin kautta, jota virheenjäljität, laboratoriosta tulee ulos lukittumisen harjoitus. Sarjakonsoli, vain isäntäkoneen hallintasovitin tai tunnetun hyvän tilan tilannekuva ovat halvempia kuin rikkinäisen reitittimen käsityönä palauttaminen.

Vahvista polku vieraasta, ei isäntäkoneesta

Työskentele ulospäin. Vahvista, että asiakas tavoittaa yhdyskäytävän WAN-osoitteen, sitten palvelimen yhdyskäytävän kautta, sitten että yhteys VPN-porttiin lähtee ja palaa. Tallenne yhdyskäytävän molemmilla liittymillä näyttää, saapuuko vastaus ja pudotetaanko se paluupolulla, mitä vain asiakkaalla tehty tallenne ei voi erottaa:

tcpdump -ni eth0 udp port 1194
tcpdump -ni tun0 udp port 1194

Todista sitten ulostulo. Kysy vieraasta osoitteenheijastuspalvelulta, minkä lähteen se näkee, ja vertaa sitä yhdyskäytävän omaan lähtöosoitteeseen; jos vastaus täsmää isäntäkoneen osoitteen kanssa, tunnelin ympäri on polku. Tarkista, mitä nimipalvelinta vieras todella käyttää, ja tarkista IPv6 erikseen, koska segmentti, jossa IPv6 on käytössä samalla kun tunneli kuljettaa vain IPv4:ää, vuotaa suunnittelun eikä vahingon vuoksi.

Riko se lopuksi tarkoituksella. Pysäytä tunneli tai estä sen ulompi portti ja avaa uusi yhteys vieraasta. Sen on epäonnistuttava, ja syyn on oltava sellainen, jonka voit nimetä: ei reittiä, hylkäyssääntö tai kuollut nimipalvelin. Käynnistä tunneli uudelleen ja vahvista, että vieras toipuu rakentamatta verkkoa uudelleen. Jos mesh-VPN kuten Hamachi tai ZeroTier jakaa laboratorion, muista, että sillattu sovitin seuraa sovittimen nimeä, ei meshiä, joten silta on suunnattava uudelleen sen jälkeen, kun asiakas asentaa oman virtuaalisen sovittimensa.

VBoxManage list bridgedifs
VBoxManage modifyvm lab-client --bridgeadapter1 <mesh-adapter-name>

Vieraan tunnelin jakaminen isäntäkoneen kanssa kuvastaa ongelman. Isäntäkoneen oletusreitin osoittaminen vieraalle toimii, samoin kuin välityspalvelin vieraan sisällä; NAT isäntäkoneen kautta ei kanna vieraan tunnelia liikenteelle, jonka isäntäkone aloitti. Tallenna segmenttien nimet ja palomuurisäännöt yhteen paikkaan, ota tilannekuva toimivasta tilasta ja kirjaa lähdeosoite, jonka palvelin havaitsi. Seuraava profiilimuutos maksaa silloin yhden skriptiajon uudelleen rakennetun laboratorion sijaan.

Aiheeseen liittyvät artikkelit