Кантэйнер праграмы, які сумесна выкарыстоўвае сеткавую прастору імёнаў VPN-кантэйнера, не мае ўласнага інтэрфейсу, таму лёгка выказаць здагадку, што ён не можа нічога адправіць, калі тунель адмаўляе. Гэта здагадка памылковая ў рэжыме збою, які мае значэнне. Калі працэс VPN памірае, а прастора імёнаў застаецца, праграма захоўвае свае сокеты, а прастора імёнаў захоўвае свае маршруты, і трафік працягваецца па шляху, які яшчэ ўсталяваны. Сапраўдны кіл-свіч — гэта яўная палітыка фільтравання плюс тэсты жыццёвага цыклу асяроддзя выканання, а не залежнасць ад запуску.

Чаму супольная прастора імёнаў не кіл-свіч

Супольнае выкарыстанне прасторы імёнаў азначае, што праграма выкарыстоўвае інтэрфейсы, адрасы і табліцу маршрутаў VPN-кантэйнера. Гэта выдаляе незалежны шлях праграмы да сеткі, пакуль супольная прастора імёнаў цэлая, і нічога не кажа пра тое, што гэтая прастора імёнаў зробіць, калі тунель знікне.

Умовы залежнасці Compose могуць адкласці запуск праграмы, пакуль залежнасць не стане здаровай. Гэта ахоплівае адзін момант у часе і ніякага позняга збою, таму гэта інструмент парадку запуску, а не пастаянны знешні файрвол.

Што насамрэч адбываецца, калі кантэйнер выходзіць

Адрознівайце тры падзеі. Працэс VPN унутры кантэйнера можа памерці, пакуль кантэйнер працягвае працаваць. Кантэйнер можа спыніцца або быць выдалены, што знішчае прастору імёнаў. Кантэйнер можна стварыць зноў, што будуе новую прастору імёнаў і новыя правілы.

У першым выпадку прастора імёнаў застаецца, маршрут па змаўчанні можа ўсё яшчэ паказваць на фізічны інтэрфейс, а праграма працягвае адпраўляць напроста. У другім выпадку залежная праграма звычайна цалкам губляе злучнасць, бо яе прастора імёнаў знікла. У трэцім выпадку праграма можа зноў падключыцца да новай прасторы імёнаў, перш чым тунель будзе гатовы. Кожны выпадак патрабуе іншага тэсту, і праект, які ахоплівае толькі акуратнае адключэнне, ахоплівае самы нецікавы выпадак.

Пабудуйце яўную палітыку выхаду

Напішыце палітыку ўнутры супольнай прасторы імёнаў, каб яна прымянялася да пакетаў праграмы. Форма — гэта прадвызначанае скідванне з вузкімі выключэннямі: loopback, інтэрфейс тунеля, а таксама канкрэтны адрас і порт канчатковай кропкі, якія патрэбныя транспарту тунеля.

Выключэнне для канчатковай кропкі павінна быць на месцы, перш чым тунель падымецца, інакш VPN-кліент не зможа дасягнуць свайго сервера. Таму набор правілаў яўна дазваляе знешні транспарт замест таго, каб дазваляць фізічны інтэрфейс наогул. Дадайце таксама правілы IPv6, калі прастора імёнаў мае злучнасць IPv6, бо палітыка толькі для IPv4 пакідае іншае сямейства адкрытым.

DNS таксама належыць да палітыкі. Калі праграма вырашае імёны праз распазнавальнік, даступны толькі ўнутры тунеля, правіла скідвання перапыніць вырашэнне, калі тунель будзе ўнізе, і гэта правільныя паводзіны для кіл-свіча. Вырашыце свядома, ці гэта тое, што вы хочаце.

Тэстуйце жыццёвы цыкл, а не толькі адключэнне

Адпраўце свежы бясшкодны запыт, пакуль тунель здаровы, затым забіце працэс VPN і адпраўце яшчэ адзін. Паўтарыце пасля прыпынку кантэйнера, пасля перазапуску і пасля паўторнага стварэння. Свежы запыт важны, бо існуючае злучэнне можа перажыць змену правілаў, якая блакуе новыя.

Не спадзявайцеся на праверку здароўя або пошук знешняга IP як механізм блакавання. Праверка назірае за станам і паведамляе пра яго; палітыка кіруе трафікам. Абодва належаць да аднаго разгортвання, і яны не замяняюць адно аднаго.

Запішыце правілы, каб тэст перажыў абнаўленне

Напішыце чаканы вынік для кожнага выпадку збою ў дакументацыю разгортвання разам з правіламі, якія яго рэалізуюць. Гэты запіс дазваляе запускаць той жа тэст пасля абнаўлення вобраза або абнаўлення асяроддзя выканання, калі паводзіны прасторы імёнаў або маршруты па змаўчанні могуць змяніцца без таго, каб хтосьці рэдагаваў файл compose.

Трымайце патрэбны знешні шлях канчатковай кропкі VPN асобна ад неабмежаванага выхаду праграмы і трымайце DNS і IPv6 у межах задуманага ахопу. Калі палітыка дазваляе ўвесь фізічны інтэрфейс дзеля зручнасці, кіл-свіч знік. Дакументацыя сетак Docker апісвае ўладкаванне супольнай прасторы імёнаў, на якім будуецца палітыка, і гэта даведнік, які трэба праверыць, калі паводзіны асяроддзя выканання ставяцца пад сумнеў.

Падобныя артыкулы