Spusťte stejný profil serveru dvakrát a druhý proces skončí s chybou, že adresa je již používána pro port 1194. V obvyklém případě konflikt vytvořilo diagnostické spuštění a původní instance klientům stále bez problémů slouží. Tento příběh vysvětluje velkou část těchto hlášení a vyplatí se ho rozpoznat dřív, než cokoli restartujete. Je to také nejlevnější varianta řešení.

Chyba popisuje lokální navázání a nic za ním. Není důkazem, že poskytovatel port blokuje, že klient poslal špatné heslo nebo že je řetěz certifikátů poškozený.

Přečtěte si přesnou chybu navázání

Dvě chyby z této rodiny znamenají různé věci a jejich záměna vás pošle na špatnou vrstvu. „Adresa je již používána“ říká, že jiný socket drží koncový bod, který jste požadovali. „Adresa není dostupná“ říká, že požadovaná adresa na tomto hostiteli ještě neexistuje, což je problém připravenosti, ne duplikát.

systemctl status openvpn-server@lab --no-pager
journalctl -u openvpn-server@lab -n 20 --no-pager

Zkopírujte text chyby, než cokoli změníte, včetně adresy a portu, které uvádí. Služba, která čeká na objevení rozhraní, bude druhou chybu opakovaně zapisovat a poté se úspěšně naváže, jakmile adresa existuje; služba, která zapisuje první chybu, nikdy neuspěje, dokud se duplikát nevyřeší. Zapsat si, kterou z nich jste viděli, nic nestojí a ušetří zbytečné hledání rozhraní.

Zmapujte socket, ne port

Číslo portu je neúplný inventář. Koncový bod je transport, adresní rodina, lokální adresa a port, to vše v jednom síťovém jmenném prostoru. UDP posluchač a TCP posluchač na stejném čísle jsou různé sockety a dva procesy na stejném čísle v různých jmenných prostorech se nikdy nesetkají.

ss -lunp | grep -F ':1194'
ss -ltnp | grep -F ':1194'
ss -lunp 'sport = :1194'

Nejprve spusťte transport, který profil skutečně používá. Potom se podívejte na sloupec lokální adresy, ne jen na číslo: navázání na zástupnou adresu pokrývá všechny lokální adresy, takže druhý proces žádající jednu konkrétní adresu se s ním může střetnout, i když se vytištěné řetězce liší. Možnosti opětovného použití socketu a pravidla platformy rozhodují o přesném výsledku, a proto by to mělo být pozorování, ne pravidlo, které aplikujete na každé nasazení.

Zjistěte, který proces ho vlastní

Číselné koncové body plus informace o procesu identifikují vlastníka, když vám to oprávnění dovolí, a vlastník je to, co potřebujete, ne název programu. Dva procesy OpenVPN mohou spouštět různé profily a ten, který drží posluchač, může být ten, kterého byste čekali nejméně.

sudo ss -lunp 'sport = :1194'
sudo fuser -v -n udp 1194

Porovnejte, co najdete, se správcem služeb, běhovým prostředím kontejnerů nebo terminálovým procesem zbylým z dřívějšího testu. Nepřítomnost podrobností o procesu není důkazem, že socket nemá vlastníka; obvykle znamená, že dotaz proběhl bez dostatečného oprávnění. Stejně tak výpis jen TCP neodstraňuje konflikt UDP, proto zkontrolujte transport uvedený v chybě. Samotný název procesu nikdy neřekne, který profil byl načten, a právě profil rozhoduje o koncovém bodu.

Jeden vlastník, nebo dvě navržené instance

Pokud nasazení zamýšlí jeden server, udržujte jednoho vlastníka životního cyklu a čtěte žurnál této instance nebo nakonfigurovaný log místo spouštění druhé kopie kvůli pozorování. Když je řízené spuštění v popředí skutečně nutné, záměrně zastavte spravovanou instanci a předtím zohledněte klienty, kterým slouží.

Pokud jsou zamýšleny dvě instance, dejte jim odlišné posluchače a odlišné vše ostatní: fondy adres, virtuální rozhraní, směrovací politiku a vlastnictví konfigurace. Jiný port sám odděluje jen socket a oba servery se budou stále hádat o stejný fond a stejné trasy.

Tři zkratky stojí za pojmenování, protože se objevují v každém vlákně o této chybě. Nezabíjejte libovolný PID, který vypadá jako viník. Nezapínejte sdílení socketu, abyste zprávu umlčeli. Nepřepínejte profil serveru na klientskou nesvázanou konfiguraci, protože tím chyba navázání zmizí; server přestane být dostupný způsobem, který se diagnostikuje hůř než původní konflikt.

Změna portu je legitimní odpověď jen tehdy, když je nový posluchač součástí schváleného návrhu, který zahrnuje pravidlo přesměrování a klientský koncový bod. Pokud nebyly aktualizovány, přesunuli jste konflikt na místo, kde ho nikdo nenajde.

Ověřte navázání dřív než cokoli jiného

Po omezené opravě ověřte, že zamýšlená instance je aktivní, že se její posluchač objevuje na očekávaném transportu a že se klient může připojit. Úspěšné navázání dokončuje jen fázi lokálního socketu; nic nepotvrzuje o autentizaci ani o provozu po zvednutí tunelu.

ss -lunp 'sport = :1194'
systemctl is-active openvpn-server@lab
journalctl -u openvpn-server@lab -f

Pokud socket existuje a klient stále selhává, zbývající problém je níž po proudu a chyba navázání je nyní minulostí. Právě toto oddělení je smyslem toho nejdřív přečíst přesnou zprávu: jedna chyba, jedna vrstva, jeden vlastník. Čtěte to tak a další příznak začne ze známého stavu, ne z dohadu.

Související články