Стартувајте го истиот серверски профил двапати и вториот процес излегува со грешка дека адресата е веќе во употреба за портата 1194. Во вообичаениот случај дијагностичкото стартување го создаде конфликтот, а оригиналната инстанца сѐ уште сосема добро ги опслужува клиентите. Оваа приказна објаснува голем дел од овие извештаи и вреди да се препознае пред нешто да се рестартира. Тоа е и најевтината верзија за решавање.

Грешката опишува локално поврзување и ништо надвор од тоа. Таа не е доказ дека давател ја блокира портата, дека клиент испратил погрешна лозинка или дека синџирот на сертификати е скршен.

Прочитајте ја точната грешка при поврзување

Две грешки од ова семејство значат различни работи и нивното мешање ве носи на погрешен слој. „Адресата е веќе во употреба“ значи дека друг сокет ја држи бараната крајна точка. „Адресата не е достапна“ значи дека бараната адреса сѐ уште не постои на овој домаќин, што е проблем со подготвеноста, а не дупликат.

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

Копирајте го текстот на грешката пред да смените нешто, вклучително адресата и портата што ги наведува. Услуга што чека да се појави интерфејс ќе ја запишува втората грешка постојано и потоа успешно ќе се поврзе кога адресата ќе постои; услуга што ја запишува првата грешка никогаш нема да успее додека дупликатот не се реши. Забележувањето која од двете сте ја виделе не чини ништо и штеди залудно барање интерфејс.

Пописете го сокетот, а не портата

Бројот на портата е нецелосен попис. Крајната точка е транспорт, фамилија адреси, локална адреса и порта, сето во еден мрежен именски простор. UDP слушач и TCP слушач на ист број се различни сокети, а два процеса на ист број во различни именски простори никогаш не се среќаваат.

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

Прво стартувајте го транспортот што профилот навистина го користи. Потоа погледнете ја колоната на локалната адреса, а не само бројот: џокер-поврзувањето ги опфаќа сите локални адреси, така што втор процес што бара една конкретна адреса може да се судри со него, дури и кога испечатените низи се разликуваат. Опциите за повторно користење на сокетот и правилата на платформата го одредуваат точниот исход, затоа ова треба да биде набљудување, а не правило што го применувате на секое распоредување.

Откријте кој процес го поседува

Бројчаните крајни точки плус информациите за процесот го идентификуваат сопственикот кога вашите привилегии го дозволуваат, а сопственикот е она што ви треба, не името на програмата. Два OpenVPN процеса можат да работат различни профили, а оној што го држи слушачот може да биде најнеочекуваниот.

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

Споредете го она што го најдовте со менаџерот на услуги, контејнерско извршно опкружување или терминален процес што останал од претходен тест. Отсуството на детали за процесот не е доказ дека сокетот нема сопственик; обично значи дека барањето е извршено без доволно дозвола. Исто така, список само со TCP не отстранува UDP конфликт, затоа проверете го транспортот наведен во грешката. Само името на процесот никогаш не кажува кој профил е вчитан, и токму профилот ја одредува крајната точка.

Еден сопственик или две проектирани инстанци

Ако распоредувањето предвидува еден сервер, држете еден сопственик на животниот циклус и читајте го дневникот на таа инстанца или конфигурираниот лог, наместо да стартувате втора копија за да ја набљудувате. Кога контролирано извршување во преден план е навистина потребно, намерно запрете ја управуваната инстанца и пред тоа земете ги предвид клиентите што ги опслужува.

Ако се предвидени две инстанци, дајте им различни слушачи и различно сѐ друго: базени со адреси, виртуелни интерфејси, политика за рутирање и сопственост на конфигурацијата. Само различен порт одделува само сокетот и двата сервери сѐ уште ќе се караат за истиот базен и истите рути.

Три кратенки вреди да се именуваат бидејќи се појавуваат во секоја дискусија за оваа грешка. Не убивајте произволен PID што изгледа како виновникот. Не овозможувајте споделување на сокетот за да ја замолчите пораката. Не префрлајте серверски профил на клиентска неврзана конфигурација бидејќи тоа ја прави грешката при поврзување да исчезне; серверот станува недостапен на начин што е потешко да се дијагностицира од оригиналниот конфликт.

Менувањето на портата е легитимен одговор само кога новиот слушач е дел од одобрен дизајн, кој вклучува правило за проследување и крајна точка на клиентот. Ако тие не се ажурирани, сте го преместиле конфликтот на место каде никој не може да го најде.

Проверете го поврзувањето пред сѐ друго

По ограничената корекција, потврдете дека предвидената инстанца е активна, дека нејзиниот слушач се појавува на транспортот што го очекувате и дека клиент може да се поврзе. Успешното поврзување само ја завршува фазата на локалниот сокет; не потврдува ништо за автентикацијата или за сообраќајот откако тунелот ќе се подигне.

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

Ако сокетот е присутен и клиентот сѐ уште не успева, преостанатиот проблем е низводно и грешката при поврзување сега е историја. Токму тоа раздвојување е целата поента на првото читање на точната порака: една грешка, еден слој, еден сопственик. Читајте така и следниот симптом ќе започне од позната состојба, а не од претпоставка.

Поврзани статии