Dva profily, které se liší jediným řádkem, se chovají jinak ve chvíli, kdy na stejném hostiteli začne druhý klient. Jeden nese nobind a bere jakýkoli místní port, který mu jádro přidělí; druhý rezervuje 1194 a druhá instance umírá s adresou, která je již používána. Tento řádek rozhoduje, kdo vybírá zdrojový port, což zase rozhoduje, zda může profil koexistovat s čímkoli dalším na stroji. Tři otázky to vyřeší a první odpovídá za většinu profilů, než se dostanete ke zbývajícím dvěma.

Co nobind vlastně přeskakuje

Ve výchozím nastavení klient před připojením naváže místní socket a místní port je 1194, pokud profil neříká jinak. nobind ruší toto vyhrazení, takže zásobník při připojení přidělí nepoužívaný port. Je to výjimka, ne výchozí hodnota, a klient bez tohoto řádku drží 1194, což je přesně důvod, proč nepřipnutá druhá instance koliduje. Většina dodávaných klientských profilů nese tuto direktivu právě proto, a to, že ukázkový soubor něco dělá, není totéž jako že to mechanismus dělá ve výchozím nastavení.

Co se nemění, je vzdálená strana. Server stále naslouchá tam, kde profil říká, že naslouchá, a cílový port v konfiguraci je stále cílový port. Dynamický zdrojový port mění návratovou adresu vašeho socketu a nic na serverovém.

Také nic neskrývá. Vaše veřejná adresa je to, na co ji cesta přeloží, paket stále prochází místní sítí a kdokoli tuto síť provozuje, stále vidí tok. nobind není ani funkce soukromí, ani obejití firewallu.

Tři podmínky, které to rozhodují

Jedna otázka rozhoduje ostatní dvě, takže na ni odpovězte, než cokoli upravíte. Pokud se protějšek připojuje ven, zbývající otázky jen zpřesňují již učiněné rozhodnutí. Pokud přijímá příchozí spojení, žádné ladění místního portu ho neudělá dostupným.

Iniciuje tento protějšek spojení? Pokud se připojuje ven, je dynamický zdrojový port neškodný a obvykle lepší, protože odpověď jde stejnou cestou zpět. Pokud čeká na příchozí spojení, dynamický port ho udělá nedostupným, pokud něco vpředu port nezveřejní. Tato jediná odpověď odděluje každý klientský profil od každého serverového.

Filtruje cesta zdrojový port? Přísné pravidlo napsané pro jeden známý port vynucuje výslovný místní port a profil by měl zaznamenat, kterému pravidlu vyhovuje. Většina sítí filtruje pouze podle cíle, takže tato podmínka je vzácnější než první. Kde se uplatňuje, přebíjí preferenci dynamického portu.

Sdílí hostitel několik instancí? Jeden pevný port nemůže obsloužit dvě z nich a restartovaná instance může najít 1194 ještě ve stavu zavírání. Dynamické porty tento konflikt odstraňují, aniž by měnily cokoli jiného. Pokud na tuto otázku nedokážete s jistotou odpovědět, předpokládejte ano a nechte jádro vybrat.

Kde je připnutý port správnou odpovědí

Některé sítě filtrují jak podle zdrojového portu, tak podle cíle, takže operátor mohl napsat pravidlo, které propouští provoz jen z jednoho známého portu. Připnutí místního portu je pak správné a profil by měl nést komentář pojmenovávající pravidlo, kterému vyhovuje. Připínání kvůli symetrii se serverovým portem není důvod, protože ta dvě čísla spolu nemají nic společného. Pokud připnutí existuje jen proto, že ho měla šablona, smažte ho.

Jinak si připnutý port kupuje potíže: dva klienti na jednom stroji nemohou oba držet 1194, a druhý selže s chybou, která ukazuje na port, a ne na profil. Kontejner, který se rychle restartuje, narazí na stejnou zeď. Opravou je direktiva, kterou dodávané profily už obsahovaly.

Server a klient nejsou symetrické

příručka OpenVPN 2.6 staví nobind vedle lport, což je argument v jedné řádce: jedna volba říká, že vybírá jádro, druhá, že vybíráte vy. Dynamický místní port funguje jen pro protějšek, který se připojuje ven, protože odpovídající strana nemůže port předem znát. Proto kopírování klientského profilu na server vytváří posluchače, ke kterému se nikdo nedostane.

Na hostiteli s více síťovými rozhraními je adresa samostatné rozhodnutí od portu. Navázání konkrétní místní adresy a navázání konkrétního portu jsou dvě různá nastavení a server se dvěma odchozími linkami obvykle připíná obojí. Klient, který připíná obojí, na sebe vzal stejnou tuhost bez jakéhokoli užitku.

Shrnutí se týká rolí, ne zabezpečení: kdo se připojuje ven, může být ohledně svého zdroje flexibilní, a kdo odpovídá, nemůže. Ani jedna volba nemění to, co se druhá strana dozví o vaší identitě. Proto se direktiva objevuje v klientských ukázkách a téměř nikdy v serverových.

Ověřte port, který jádro vybralo

Po připojení čtěte socket, ne konfiguraci, protože konfigurace vyjadřuje záměr a socket to, co se stalo. Údaje, které stojí za záznam, jsou místní port, vzdálený koncový bod a zda ještě něco naslouchá. Na Linuxovém hostiteli jsou všechny tři vzdálené jeden příkaz.

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

Klient s nobind ukazuje vysoký místní port a nakonfigurovaný vzdálený port, což je očekávaný tvar. Server ukazuje naslouchající socket na svém nakonfigurovaném portu, a pokud tento socket chybí, profil buď není posluchač, nebo se nepodařilo navázat. Když tok existuje, ale pakety se nevracejí, porovnejte zvolený zdrojový port s jakýmkoli filtrem portů na cestě, než upravíte profil. Změňte jednu věc, připojte se znovu a přečtěte socket znovu.

Související články