Dva profily, ktoré sa líšia jediným riadkom, sa správajú inak v momente, keď na tom istom hostiteľovi začne druhý klient. Jeden nesie nobind a berie akýkoľvek miestny port, ktorý mu jadro pridelí; druhý rezervuje 1194 a druhá inštancia zomrie s adresou, ktorá sa už používa. Ten riadok rozhoduje, kto vyberá zdrojový port, čo zase rozhoduje, či môže profil koexistovať s čímkoľvek iným na stroji. Tri otázky to vyriešia a prvá odpovedá za väčšinu profilov, skôr než sa dostanete k zvyšným dvom.

Čo nobind vlastne preskakuje

Predvolene klient pred pripojením naviaže miestny socket a miestny port je 1194, ak profil nehovorí inak. nobind ruší túto rezerváciu, takže zásobník pri pripojení pridelí nepoužívaný port. Je to výnimka, nie predvolená hodnota, a klient bez riadku drží 1194, čo je presne dôvod, prečo nepripnutá druhá inštancia koliduje. Väčšina dodávaných klientskych profilov nesie túto direktívu práve preto, a to, že ukážkový súbor niečo robí, nie je to isté ako že to mechanizmus robí predvolene.

Čo sa nemení, je vzdialená strana. Server stále počúva tam, kde profil hovorí, že počúva, a cieľový port v konfigurácii je stále cieľový port. Dynamický zdrojový port mení návratovú adresu vášho vlastného socketu a nič na serverovom.

Tiež nič neskrýva. Vaša verejná adresa je to, na čo ju cesta preloží, paket stále prechádza miestnou sieťou a ktokoľvek ju prevádzkuje, stále vidí tok. nobind nie je ani funkcia súkromia, ani obídenie firewallu.

Tri podmienky, ktoré to rozhodujú

Jedna otázka rozhoduje ostatné dve, takže na ňu odpovedzte, skôr než čokoľvek upravíte. Ak sa partner pripája von, zostávajúce otázky len spresňujú už prijaté rozhodnutie. Ak prijíma prichádzajúce spojenia, žiadne ladenie miestneho portu ho neurobí dostupným.

Iniciuje tento partner spojenie? Ak sa pripája von, dynamický zdrojový port je neškodný a zvyčajne lepší, lebo odpoveď ide tou istou cestou späť. Ak čaká na prichádzajúce spojenia, dynamický port ho spraví nedostupným, ak niečo vpredu port nezverejní. Táto jediná odpoveď oddeľuje každý klientsky profil od každého serverového.

Filtruje cesta zdrojový port? Prísne pravidlo napísané pre jeden známy port vynucuje výslovný miestny port a profil by mal zaznamenať, ktorému pravidlu vyhovuje. Väčšina sietí filtruje len podľa cieľa, takže táto podmienka je zriedkavejšia ako prvá. Kde sa uplatňuje, prebíja preferenciu dynamického portu.

Zdiela hostiteľ viac inštancií? Jeden pevný port nemôže obslúžiť dve z nich a reštartovaná inštancia môže nájsť 1194 ešte v stave zatvárania. Dynamické porty odstraňujú ten konflikt bez zmeny čohokoľvek iného. Ak na to neviete s istotou odpovedať, predpokladajte áno a nechajte jadro vybrať.

Kde je pripnutý port správnou odpoveďou

Niektoré siete filtrujú podľa zdrojového portu aj podľa cieľa, takže operátor mohol napísať pravidlo, ktoré prepúšťa prevádzku len z jedného známeho portu. Pripnutie miestneho portu je potom správne a profil by mal niesť komentár pomenúvajúci pravidlo, ktoré spĺňa. Pripínanie kvôli symetrii so serverovým portom nie je dôvod, lebo tie dve čísla nemajú nič spoločné. Ak pripnutie existuje len preto, že ho mala šablóna, zmažte ho.

Inak si pripnutý port kupuje problémy: dva klienty na jednom stroji nemôžu obaja držať 1194, a druhý zlyhá s chybou, ktorá ukazuje na port, nie na profil. Kontajner, ktorý sa rýchlo reštartuje, narazí na tú istú stenu. Opravou je direktíva, ktorú dodávané profily už obsahovali.

Server a klient nie sú symetrické

príručka OpenVPN 2.6 stavia nobind vedľa lport, čo je argument v jednom riadku: jedna voľba hovorí, že vyberá jadro, druhá, že vyberáte vy. Dynamický miestny port funguje len pre partnera, ktorý sa pripája von, lebo odpovedajúca strana nemôže port vopred poznať. Preto kopírovanie klientskeho profilu na server vytvára poslucháča, ku ktorému sa nikto nedostane.

Na hostiteľovi s viacerými sieťovými rozhraniami je adresa samostatným rozhodnutím od portu. Naviazanie konkrétnej miestnej adresy a naviazanie konkrétneho portu sú dve rôzne nastavenia a server s dvoma odchádzajúcimi linkami zvyčajne pripína obe. Klient, ktorý pripína obe, na seba vzal rovnakú tuhosť bez akéhokoľvek úžitku.

Zhrnutie sa týka rolí, nie zabezpečenia: kto sa pripája von, môže byť ohľadom svojho zdroja flexibilný, a kto odpovedá, nemôže. Ani jedna voľba nemení to, čo sa druhá strana dozvie o vašej identite. Preto sa direktíva objavuje v klientskych ukážkach a takmer nikdy v serverových.

Overte port, ktorý vybralo jadro

Po pripojení čítajte socket, nie konfiguráciu, lebo konfigurácia vyjadruje zámer a socket to, čo sa stalo. Údaje, ktoré stoja za záznam, sú miestny port, vzdialený koncový bod a či ešte niečo počúva. Na Linuxovom hostiteľovi sú všetky tri na vzdialenosť jedného príkazu.

ss -unp | grep openvpn
ss -lunp | grep openvpn
sudo lsof -nP -i | grep openvpn

Klient s nobind ukazuje vysoký miestny port a nakonfigurovaný vzdialený port, čo je očakávaný tvar. Server ukazuje počúvajúci socket na svojom nakonfigurovanom porte, a ak ten socket chýba, profil buď nie je poslucháč, alebo sa nepodarilo naviazať. Keď tok existuje, ale pakety sa nevracajú, porovnajte zvolený zdrojový port s akýmkoľvek filtrom portov na ceste, skôr než upravíte profil. Zmeňte jednu vec, pripojte sa znova a prečítajte socket znova.

Súvisiace články