Jums jāizlemj, cik daudz mehānisma ir pelnījusi jūsu VPN laboratorija. Maršrutēta vārtejas VM starp diviem VirtualBox segmentiem atveido adrešu tulkošanu, atgriešanās ceļu un ugunsmūra pozīciju, aiz kura sēž īsts klients. Viens vienīgs tikai resursdatora segments dod vienas kontrolētas durvis un neko vairāk. Vārtejas versija maksā trīs viesus un maršrutēšanas tabulu, kuru uzturat; tikai resursdatora versija maksā vienu viesi un vienu politiku. Trīs jautājumi tos šķir, un trešais izlemj, vai jūsu tests vispār var izturēt.

Atbildiet uz trim jautājumiem, pirms kaut ko klonējat

Sāciet ar to, kas VPN serverim jānovēro. Ja serverim jāredz avota adrese, kas nav testa viesa adrese, kaut kam starp tām jātulko, un tam kaut kam jābūt maršrutētājam, kuru kontrolējat. Tīkls tikai resursdatoram dod resursdatoram adapteri viesa segmentā, nevis tulkotāju. Kad viesim pēc tam jāsasniedz kaut kas ārpusē, jūs pievienojat NAT adapteri, un pats VirtualBox NAT dzinējs pārraksta avotu, neprasot jums.

Pēc tam jautājiet, vai viesis drīkst sasniegt kaut ko citādi kā tikai pa tuneli. Šī atbilde izvēlas iekšējo vai tikai resursdatora, un tieši šo jautājumu lielākā daļa laboratoriju aprakstu izlaiž. Visbeidzot jautājiet, kam jānotiek, kad tunelis krīt, jo tas nosaka politiku, nevis topoloģiju, un laboratorija, kas pierāda tikai laimīgo ceļu, nav pārbaudījusi gandrīz neko.

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

Savienojiet trīs lomas ar iekšējiem tīkliem

Izmantojiet trīs viesus un divus nosauktus segmentus, un vārteja lai ir vienīgā mašīna, kurai ir adapteris abos:

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

Iekšējam tīklam nav atsevišķa izveides soļa. Virkne --intnet1 ir segments: divas mašīnas to dala tikai tad, ja nosaukums sakrīt precīzi, un nekas uz resursdatora tam nav pievienots. Tieši šī pēdējā īpašība ir iemesls, kāpēc laboratorija tīri atkārtojas, jo resursdatora maršruti, tā paša VPN klients un ugunsmūris nevar nejauši sasniegt viesus. Iekšējam segmentam arī nav DHCP servera, ja vien to nepievienojat, tāpēc statiskās adreses ir īsākais ceļš.

Dodiet klientam tikai tā WAN adresi, un noklusējuma vārtejai jānorāda uz vārtejas WAN adresi. Serveris saņem LAN adresi un izmanto vārtejas LAN adresi kā savu noklusējuma vārteju. Viesim, kas tur divas adreses vienā segmentā vai kuram ir nomaldījies maršruts uz otru segmentu, ir ceļš ap maršrutētāju, un zemāk minētie testi jums melos.

Es turu teksta failu blakus VM nosaukumiem ar četrām adresēm un diviem segmentu nosaukumiem, un ielīmēju to katrā čaulā. Nedēļas vēlāk, kad profila izmaiņas kaut ko salauž, šis fails ir atšķirība starp profila atkļūdošanu un savas atmiņas atkļūdošanu.

Izvēlieties iekšējo vai tikai resursdatora segmentu tam segmentam, kuram nedrīkst būt noplūdes

Režīms tikai resursdatoram izveido virtuālu adapteri pašā resursdatorā, parasti vboxnet0, un dod resursdatoram adresi viesa segmentā. Tas ir ērti administrēšanai un nāvējoši izolācijas testam, jo resursdators tagad var tieši sasniegt viesi, un katrs resursdatora puses pakalpojums kļūst par iespējamu ceļu. Iekšējam režīmam resursdatora adaptera vispār nav. Abus režīmus ir viegli sajaukt tīkla iestatījumu panelī, tāpēc pārbaudiet dokumentēto atšķirību, nevis etiķeti (skatiet lapu VirtualBox tīkla detaļas).

Viesim, kuram obligāti jāizmanto tunelis, iekšējais ir drošāka noklusējuma izvēle, un vārteja ir vienīgā izeja. Ja paturat tikai resursdatora režīmu, izturieties pret resursdatora adapteri kā pret pārvaldības ceļu un sakiet to skaļi: resursdators drīkst sasniegt viesi, un viesis nedrīkst varēt izmantot resursdatoru kā izeju.

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

Izolācija, ko varat pierādīt, ir izolācija, ko esat konfigurējis. Viesim ar vienu iekšējo adapteri, noklusējuma maršrutu pie vārtejas un bez NAT adaptera nav ceļa, kas apietu vārteju. Viesim ar tikai resursdatora adapteri un NAT adapteri ir divi ceļi, un tikai viens no tiem ir tas, kuru gribējāt pārbaudīt.

Maršrutējiet un tulkojiet uz vārtejas, un pēc tam lieciet tai slēgti neizdoties

VirtualBox nepārsūta starp segmentiem; to dara viesis. Kad VPN servera VM atrodas aiz vārtejas, ieslēdziet pārsūtīšanu un tulkojiet klienta satiksmi, kad tā iziet uz serveri:

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

Ar šo noteikumu serveris redz vārtejas LAN adresi klienta vietā, un tieši tā īsts klients aiz operatora NAT izskatās tīkla galvai. Saglabājiet sysctl vērtību /etc/sysctl.d/ failā, bet noteikumu tajā ugunsmūra servisā, ko izmanto distribūcija, citādi pārstartēšana klusi atgriezīs laboratoriju maršrutētā, bet netulkotā stāvoklī.

Pārsūtīšana nav autorizācija. Saskaņā ar noklusējuma FORWARD politiku ar vērtību ACCEPT viesis, kura noklusējuma maršruts norāda uz vārteju, iziet pa to saskarni, kuru izvēlēsies maršrutēšanas tabula, ar tuneli vai bez tā. Ja vārtejai ir arī NAT adapters pakešu instalēšanai, šis adapters ir strādājoša nešifrēta izeja tajā mirklī, kad tunelis krīt, un jūsu tikai-VPN tests nekad nav bijis tikai-VPN tests.

Kad serveris ir tālu un tuneli pabeidz pati vārteja, tas pats lēmums norāda uz tuneļa saskarni, nevis uz NIC, kas sasniedz internetu:

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

Turiet paša tuneļa ārējo transportu un ārpusjoslas pārvaldības maršrutu atsevišķi no pārsūtītās satiksmes. Ja vienīgais veids, kā salabot vārteju, ir caur tuneli, kuru atkļūdojat, laboratorija kļūst par izslēgšanas vingrinājumu. Sērijas konsole, tikai resursdatora pārvaldības adapters vai zināma laba stāvokļa momentuzņēmums ir lētāki par salauztu maršrutētāju manuālu atjaunošanu.

Pārbaudiet ceļu no viesa, nevis no resursdatora

Strādājiet uz āru. Apstipriniet, ka klients sasniedz vārtejas WAN adresi, tad serveri caur vārteju, tad ka savienojums uz VPN portu iziet un atgriežas. Uzņemšana abās vārtejas saskarnēs parāda, vai atbilde ierodas un vai tā tiek izmesta atgriešanās ceļā, ko uzņemšana tikai klientā nevar atšķirt:

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

Pēc tam pierādiet izeju. Pajautājiet no viesa adrešu atspoguļošanas servisam, kādu avotu tas redz, un salīdziniet to ar pašas vārtejas izejas adresi; ja atbilde sakrīt ar resursdatora adresi, pastāv ceļš ap tuneli. Pārbaudiet, kuru risinātāju viesis faktiski izmanto, un IPv6 pārbaudiet atsevišķi, jo segments, kurā IPv6 ir ieslēgts, kamēr tunelis nes tikai IPv4, noplūst pēc projekta, nevis nejauši.

Visbeidzot apzināti salauziet to. Apturiet tuneli vai bloķējiet tā ārējo portu un atveriet jaunu savienojumu no viesa. Tam jāizdodas neveiksmīgi, un iemeslam jābūt tādam, ko varat nosaukt: nav maršruta, ir noraidīšanas noteikums vai risinātājs ir miris. Pārstartējiet tuneli un apstipriniet, ka viesis atjaunojas, nepārbuiltot tīklu. Ja mesh VPN, piemēram, Hamachi vai ZeroTier, dala laboratoriju, atcerieties, ka tiltā iekļautais adapters seko adaptera nosaukumam, nevis mesh, tāpēc tilts ir jānovirza no jauna pēc tam, kad klients instalē savu virtuālo adapteri.

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

Viesa tuneļa kopīgošana ar resursdatoru atspoguļo problēmu. Resursdatora noklusējuma maršruta novirzīšana uz viesi darbojas, un starpniekservaiss viesa iekšienē arī; NAT caur resursdatoru nenes viesa tuneli satiksmei, ko uzsācis resursdators. Saglabājiet segmentu nosaukumus un ugunsmūra noteikumus vienā vietā, paņemiet strādājoša stāvokļa momentuzņēmumu un pierakstiet avota adresi, ko novēroja serveris. Tad nākamā profila izmaiņa maksās vienu skripta palaidienu, nevis pārbūvētu laboratoriju.

Saistītie raksti