Парадак запісаў 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.
Выведзіце яго праз кампанент, які яго рэгіструе, затым пацвердзіце, што каталог запісаў больш яго не змяшчае.
Запішыце імя пастаўшчыка, шаблон, які вы змянілі, і два запыты, якія выканалі. Наступнаму чалавеку гэтыя імёны патрэбныя больш, чым гісторыя.