Klient odmieta naštartovať a sťažuje sa, že nemôže priradiť lokálnu adresu, a zjavná oprava vyzerá tak, že ho treba nasmerovať na adresu tunela, ktorú očakáva dostať. To nemôže fungovať a dôvod stojí za pochopenie: kým tunel neexistuje, vnútorná adresa neexistuje a socket, ktorý sa spája so serverom, musí existovať najprv. Ide o dve rôzne adresy a len jednu z nich možno zvoliť lokálne.

Chyba väzby pomenúva lokálnu adresu

Keď OpenVPN hlási, že nemôže priradiť lokálnu adresu, hovorí o transportnom sockete: koncovom bode UDP alebo TCP, ktorý nesie šifrované spojenie k peerovi.

Explicitná direktíva local žiada démona, aby ten socket priradil ku konkrétnej lokálnej adrese. Adresa musí existovať v sieťovom mennom priestore, v ktorom proces beží, a musí byť priraditeľná v okamihu, keď klient štartuje.

Verejná adresa prekladaná na routeri alebo na okraji cloudu nie je lokálna adresa, ktorú môže démon priradiť, aj keď je to adresa, ktorú vidí server. Tento rozdiel vysvetľuje, prečo jeden profil funguje doma a na cloudovej inštancii zlyháva. Vysvetľuje aj to, prečo pridanie verejnej adresy na loopback rozhranie nepomáha, keďže transport by potom čerpal zdroj z adresy, na ktorú sieť nedokáže smerovať späť. Prečítajte si zoznam rozhraní, skôr než profil upravíte.

Čo local a remote skutočne vyberajú

remote pomenúva peera, s ktorým sa treba spojiť. local priraďuje bližší koniec toho istého socketu. nobind necháva operačný systém vybrať lokálnu adresu aj port, a preto klienti za domácimi routermi zvyčajne fungujú bez oboch direktív.

Ani jedna z direktív nemá nič spoločné s adresou vnútri tunela.

V kontajneri alebo v sieťovom mennom priestore platí to isté pravidlo s užšími hranicami: adresy hostiteľa tam vnútri nie sú, takže riadok local skopírovaný z konfigurácie hostiteľa zlyhá z úplne iného dôvodu, než by zlyhala nesprávna adresa.

ip -brief address show
ip route get 203.0.113.10

Vnútorná adresa prichádza zo servera

Adresa vnútri tunela sa dohaduje alebo prideľuje po vytvorení riadiaceho kanála. Pri dynamickom pulle o nej rozhoduje server v čase pripojenia a pri konfigurácii špecifickej pre klienta môže byť pevná pre každú identitu.

Zápis local s vnútornou adresou nežiada server, aby túto adresu pridelil. V najlepšom prípade väzba zlyhá; v najhoršom klient nájde nesúvisiacu adresu hostiteľa s rovnakou hodnotou a začne ju používať na transport.

Rozhrania, ktoré treba čítať, sú tiež iné. Parametre ifconfig a konfigurácia poolu opisujú vnútro, zatiaľ čo remote, local, proto a nobind opisujú vonkajšok. Oddelenie týchto dvoch zoznamov vysvetľuje takmer každý mätúci príklad, ktorý na fóre nájdete. Práve preto ich manuál OpenVPN 2.6 dokumentuje v samostatných častiach.

Pasca: plný tunel, ktorý zachytí vlastný transport

Keď je tunel hore a nesie predvolenú trasu, pakety, ktoré ho udržiavajú, sa nesmú smerovať doň. Je to problém smerovania, nie adresovania, a démon ho rieši tak, že cez pôvodnú bránu nainštaluje konkrétnejšiu trasu k vlastnej adrese servera.

Ak transport pripnete ku konkrétnej lokálnej adrese a neskôr zmeníte cestu, ktorú táto adresa používa, vonkajšie spojenie môže stratiť smer, kým vnútro zostane nakonfigurované. Tunel naďalej hlási pripojenie, pretože vnútro je v poriadku. Pokazený je iba transport, a preto sa záznamy čítajú ako protirečenia.

Príznaky potom vyzerajú ako tunel, ktorý sa pripojí a zamrzne, alebo ako tunel, ktorý sa v slučke pripája znova bez užitočnej chyby. Skontrolujte trasu k adrese peera, skôr než skontrolujete čokoľvek vnútri tunela, a potvrďte, že lokálna adresa, ktorú ste priradili, stále patrí rozhraniu, ktoré ste očakávali.

Návyk, ktorý zabraňuje zámene

Prečítajte si každú adresu v profile a rozhodnite, do ktorej vrstvy patrí, skôr než ju upravíte.

Ak pomenúva vzdialený koniec transportu alebo priraďuje jeho bližší koniec, je to vonkajšia adresa a musí existovať pred štartom. Ak opisuje, čo sa deje vnútri tunela, prichádza zo servera alebo z topológie a žiadna lokálna direktíva ju nemôže nahradiť.

Zapíšte oba zoznamy do poznámok k nasadeniu vedľa profilu. Nasledujúca relácia riešenia problémov sa potom začne vrstvou, nie dohadom.

Súvisiace články