Раздзелены DNS праз OpenVPN: што мусіць рабіць маршрутны дамен на кожнай АС
Суфікс пошуку, маршрутны дамен і IP-маршрут — тры розныя рэчы. Наладзьце палітыку для кожнай платформы, а затым дакажыце, які сервер адказаў на запыт.
Кожны запыт раздзеленага DNS пачынаецца з аднаго сказа: назвы кампаніі ідуць у DNS кампаніі, усё астатняе працягвае працаваць. Ператварэнне гэтага сказа ў канфігурацыю азначае адказы на тры пытанні для кожнай аперацыйнай сістэмы, і адказы выкарыстоўваюць розныя механізмы на кожнай з іх. Профілі, якія працуюць на ноўтбуку з Linux, часта не працуюць на Windows па прычынах, не звязаных з тунелем. Разрыў звычайна ў тым, што наладу рэзалвера блытаюць з маршрутам.
Спачатку назавіце палітыку, потым выберыце прымітыў платформы, які яе выяўляе.
Тры налады, якія лёгка пераблытаць
Суфікс пошуку пашырае кароткае імя: увёўшы files, вы атрымаеце files.corp.example, калі рэзалвер перабірае суфіксы па чарзе. Маршрутны дамен вызначае, які рэзалвер адказвае на запыты ўнутры прасторы імён. IP-маршрут толькі робіць выбраны рэзалвер дасяжным. Гэтыя тры жывуць у розных пластах, і замена аднаго другім дае канфігурацыю, якая выглядае правільнай і нічога не вырашае.
Блытаніна мае кошт: даданне суфікса пошуку адпраўляе ўсе кароткія імёны да працоўнага рэзалвера, уключаючы імёны, якія належаць іншаму месцу. Выбар маршрутнага дамена пакідае незвязаныя запыты на лакальным рэзалверы, а *.corp.example па-ранейшаму ідзе праз тунель.
Linux: дамен толькі для маршрутызацыі, а не суфікс пошуку
У systemd-resolved дамен з прэфіксам у выглядзе тыльды — гэта дамен толькі для маршрутызацыі, што значыць: запыты для гэтай прасторы імён ідуць да звязанага рэзалвера і не робяцца суфіксам пошуку. resolvectl domain tun0 '~corp.example' усталёўвае гэта, а resolvectl dns tun0 10.8.0.1 называе сервер. Абедзве налады належаць інтэрфейсу, таму знікаюць разам з ім. Тыльда — гэта тая частка, якую людзі прапускаюць, і без яе кароткія імёны пачынаюць вырашацца праз працоўны рэзалвер.
Не ўсталёўвайце той жа дамен яшчэ і як глабальны суфікс пошуку. Гэтыя дзве налады не дубліруюць адна адну; адна маршрутызуе, другая перапісвае тое, што вы ўвялі.
Windows патрэбна палітыка прасторы імён, а не суфікс
Windows трымае палітыку раздзеленага DNS у табліцы палітык развязання імён, а не ў суфіксе DNS адаптара. Правіла супастаўляе прастору імён з пэўнымі серверамі: Add-DnsClientNrptRule -Namespace .corp.example -NameServers 10.8.0.1. Устаноўка аднаго суфікса змяняе толькі выгляд кароткіх імён; яна не накіроўвае запыт на іншы сервер.
Праверце дзейную палітыку праз Get-DnsClientNrptPolicy пасля падключэння, бо правіла з папярэдняга злучэння можа перажыць тунель. Выдаляйце правілы па назве, калі тунель падае, і трымайце адлюстраваную назву стабільнай, каб ачыстка трапляла ў патрэбны запіс.
Трымайце аднаго ўладальніка рэзалвера на кожную платформу
Кіраўнік працоўнага стала, скрыпт up для OpenVPN і лакальны дэман рэзалвера могуць адначасова спрабаваць запісаць адну канфігурацыю. Калі яны разыходзяцца, перамагае той, хто запісаў апошні, і вынік залежыць ад парадку сыходу. Выберыце адзін кампанент, які валодае станам рэзалвера, дазвольце астатнім паведамляць, а не запісваць, і праверце перападключэнне: палітыка павінна яго перажыць без дублявання правілаў. Праверце таксама адключэнне, бо менавіта пакінуты стан прымушае наступнае злучэнне паводзіць сябе інакш.
Праграмы, якія пастаўляюць уласны шыфраваны рэзалвер, цалкам ігнаруюць палітыку аперацыйнай сістэмы. Гэта ўласцівасць праграмы, а не дэфект тунеля.
Правярайце вынік, а не тэкст профілю
Вырашыце адно імя, якое мусіць ісці праз тунель, і адно, якое не мусіць, на кожнай платформе, і пацвердзіце, які сервер адказаў. resolvectl query host.corp.example і Resolve-DnsName host.corp.example абедзве паведамляюць сервер, які адказаў. Паўтарыце пасля перападключэння. Затым пацвердзіце, што рэзалвер тунеля дасяжны па адрасе, які прадпісвае профіль, бо правільная палітыка, накіраваная на недасяжны сервер, збаўляе гэтак жа, як і адсутнасць палітыкі.
Запішыце меркаваныя паводзіны ў нататкі профілю: які суфікс маршрутызуецца, які сервер на яго адказвае і што адбываецца з усім астатнім. Наступнай платформе, якую вы падтрымаеце, гэты сказ спатрэбіцца больш, чым файл канфігурацыі.