Покрените исти профил сервера два пута и други процес се завршава грешком да је адреса већ у употреби за порт 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

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

Повезани чланци