Уклањање застарелог VPN записа из resolvconf базе података
На домаћину на ком Debian resolvconf поседује стање, брисање уноса је лако. Прво докажите да је запис застарео и без власника, а затим проверите преписивање.
Интерно име се и даље разрешава на VPN сервер дан након што се тунел затворио, а датотека резолвера се изнова враћа са тим уносом. Тамо где Debian resolvconf поседује стање, та датотека се саставља од записа добављача, а један од њих је остатак. Брисање записа траје минут; доказивање да је безбедно да се обрише је прави посао. Ове капије се извршавају по реду, а неуспела капија завршава поступак уместо да вас пошаље на следећи корак.
Потврдите да resolvconf поседује стање
Прво идентификујте власника, јер исти симптом под systemd-resolved захтева другачије наредбе и другачију поправку. Пакет resolvconf држи базу података у /run/resolvconf и упућује /etc/resolv.conf на датотеку коју гради из те базе. Два читања решавају питање: одредиште симболичке везе и то да ли је пакет инсталиран и активан. Одредиште у /run/systemd/resolve значи други дизајн, у ком ништа испод не важи.
dpkg -l resolvconf | tail -1
ls -l /etc/resolv.conf
systemctl is-active resolvconf.service
Ако веза показује негде другде или пакет недостаје, зауставите се овде. Компатибилни омотач који је позајмио име и који испоручује други менаџер резолвера није власник ове базе.
База држи улазе, а не одговор
База држи улазе, а датотека је излаз, па је навођење улаза једини начин да видите који је програм инсталирао унос којег желите да се решите. Записи су кратки, а њихови кључеви су ручке које ће вам требати касније. Прочитајте их пре него што одлучите који је застарео, јер име које изгледа као VPN интерфејс може припадати другом клијенту. Држите приватне адресе и интерне домене претраге изван заједничке дијагностике; сам кључ обично идентификује запис.
sudo resolvconf --list
sudo resolvconf -i
Прва наредба штампа достављене записе без њихове обраде, а друга наводи интерфејсе који тренутно пружају DNS конфигурацију. Кључеви се уобичајено граде од имена интерфејса и програма који га доставља. Приручник за resolvconf описује базу којој ти кључеви упућују.
Копирајте кључ из излаза уместо да га поново градите. Унос се не зове tun0 само зато што је стара скрипта користила то име.
Докажите да запис нема власника
Запис је безбедан за брисање када га није инсталирала ниједна жива веза. Повежите кључ са везом која га је створила, а затим потврдите да те везе више нема. Та корелација је цела капија и то је корак који се најчешће прескочи на путу до наредбе за брисање. Ако су докази двосмислени, третирајте запис као жив и зауставите се.
Имена процеса су слаб доказ. OpenConnect позива vpnc-script, па провера процеса vpnc не говори ништа о томе који је запис актуелан. Нова веза може и поново да употреби име интерфејса које је стара оставила, због чега кључ изгледа старији него што јесте. Упоредите адресу сервера у запису са адресама тунела који су још активни и зауставите се ако се поклапају.
Уобичајено искључивање преко менаџера који поседује везу је први лек. Оно повлачи оно што је та веза инсталирала и оставља друге добављаче нетакнутима.
Проверите уклањање и преписивање
Када је запис потврђено застарео, обришите га тачним кључем и затим прочитајте резултат уместо да га претпоставите. Наредба мења стање резолвера за сваку апликацију на домаћину, зато је извршите у прозору који контролишете. Ставите кључ под наводнике, јер садржи знакове које би љуска иначе проширила. Заменски знак у блоку означава кључ који сте копирали из списка, а не буквални низ.
sudo resolvconf -d "RECORD_KEY_FROM_THE_LIST"
sudo resolvconf --list
resolvectl query host.corp.example || getent hosts host.corp.example
Брисање извршава скрипте за ажурирање када је ажурирање омогућено; када је ажурирање онемогућено, одлаже ажурирање, па су уклоњен запис и поново записана датотека два одвојена догађаја. Поново прочитајте списак и потврдите да кључа нема пре него што погледате датотеку. Затим питајте за једно име које би и даље требало да се разрешава преко преосталих добављача и за једно јавно име, и упоредите оба са оним што сте видели пре измене. Ако неко приватно име потпуно престане да се разрешава, тај запис га је још носио.
resolvconf -u извршава само те скрипте за ажурирање. Никада не идентификује нити брише застарео запис, а поновна изградња из застарелих улаза ствара исту непожељну датотеку.
Убијена кука за искључивање оставља запис
Једнократно чишћење враћа данашње стање, а следеће прекинуто искључивање враћа запис. Прођите путањом расклапања: кука за искључивање клијента, помоћник који та кука позива и шта се дешава када је било који од њих убијен. Прекинуто искључивање је уобичајено порекло, јер се кука уопште није извршила. Забележите једном излазни статус куке и знаћете да ли тихо не успева.
Држите подешавање и чишћење под једним власником. Друга скрипта која нагађа имена интерфејса на крају ће обрисати запис друге везе, што је горе од застарелог уноса са којим сте почели. Власник би требало да одлучи и када је запис застарео, јер зна која је веза инсталирала запис.
Затим вежбајте животни циклус: повежите се, искључите се, поново наведите записе. Самостално нестајање уноса једини је доказ да поправка држи.