Ред на записите в resolvconf на Debian: поставете VPN записа първи
DNS сървърът на VPN постоянно пада под този на LAN, защото resolvconf сортира имената на записите. Редактирайте interface-order, регенерирайте и проверете две заявки.
DNS сървърът на VPN постоянно се озовава под този на LAN, а редактирането на /etc/resolv.conf го оправя за няколко минути. Този файл се генерира, така че поправката никога не остава. В resolvconf на Debian входът за подредбата е /etc/resolvconf/interface-order и той сортира имената на записите, а не DNS адресите. Потвърдете кой стек от resolver-и всъщност отговаря, преди да пипате който и да е от двата файла.
Потвърдете, че resolvconf притежава изхода
Започнете с въпроса какво е записало текущия файл и какво ще го запише отново. Пакетът resolvconf се описва като рамка за динамична конфигурация на resolver, а хост със systemd-resolved или resolver, управляван от NetworkManager, може да изглежда подобен отвън, докато използва напълно различна политика.
readlink -f /etc/resolv.conf
dpkg -l resolvconf 2>/dev/null | tail -n 1
Ако разрешеният път не води до работната директория на resolvconf, спрете тук: това ръководство принадлежи на друг стек.
Едва след тази проверка си струва да изброите записите, които resolvconf държи в момента.
Прочетете записите, преди да пишете шаблони
interface-order съпоставя имената на записите на доставчика, а не адреси и не имена на интерфейси на ядрото. Изброете какво е регистрирано, за да сочат шаблоните ви към съществуващи записи.
ls /run/resolvconf/interfaces
cat /etc/resolvconf/interface-order
Името на записа обикновено носи наставка, която идентифицира доставчика му, така че запис за тунел и запис за DHCP могат да споделят префикс на интерфейс и пак да се сортират различно. Копирайте точните имена от списъка на директорията. Не извеждайте име от името на интерфейса, защото интеграцията на клиента решава какво да регистрира. Измислено име никога няма да съвпадне и записът ще попадне в шаблона за прихващане на всичко без никакво съобщение за грешка.
Напишете подредбата като шаблони за първо съвпадение
Файлът е списък от shell glob шаблони, по един на ред. Записът заема позицията на първия шаблон, на който отговаря, така че широк шаблон над конкретен прави конкретния ред недостъпен.
# /etc/resolvconf/interface-order
lo*
tun_work.*
enp*
*
Поставете конкретния шаблон за тунела над шаблона за всичко и над шаблона за физическия интерфейс.
Запазете другите редове, които файлът вече имаше. Замяната на цялата политика с пример е начинът, по който несвързани доставчици тихо се преместват; променете един ред, регенерирайте и сравнете. Шаблоните не могат да съдържат интервали, наклонени черти или водеща точка или тилда, а празните редове и коментарите с решетка се игнорират.
Регенерирайте и проверете резултата
Подредбата се прилага, когато скриптовете за обновяване преизградят файла. Задействайте поддържания път за обновяване, вместо да редактирате генерирания изход, после прочетете какво всъщност е получил resolver-ът.
resolvconf -u
cat /etc/resolv.conf
Проверете две заявки, не една: частно име, което трябва да се разреши през тунела, и публично контролно име. Ако частното име все още се проваля, докато подредбата изглежда правилна, проблемът е в маршрутизирането на именното пространство, а не в приоритета на записите, и никакво преподреждане няма да го поправи. Сравнявайте всеки отговор със сървъра, който го е върнал, а не само с успеха. Частно име, на което е отговорил грешен resolver, пак е провал и за потребителя изглежда като прекъсване на DNS.
Изведете остарелия запис от употреба, вместо да го понижавате
Остарял VPN запис, който продължава да се появява след прекъсване на връзката, е грешка в жизнения цикъл на интеграцията с клиента. Преместването му най-отдолу скрива симптома и оставя мъртъв resolver в списъка.
Изведете го чрез компонента, който го регистрира, после потвърдете, че директорията на записите вече не го съдържа.
Запишете името на доставчика, шаблона, който сте променили, и двете заявки, които сте изпълнили. На следващия човек тези имена са му нужни повече от историята.