Внатрешното име продолжува да се резолвира на 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 ги извршува само тие скрипти за ажурирање. Тој никогаш не идентификува или брише застарен запис, а повторното градење од застарени влезови ја создава истата непосакувана датотека.

Убиената кука за исклучување го остава записот

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

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

Потоа вежбајте го животниот циклус: поврзете се, исклучете се, наведете ги записите повторно. Самото исчезнување на записот е единствениот доказ дека поправката се држи.

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