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

Што ўсталёўвае маршрут і чаго ён ніколі не чытае

Запіс маршруту кажа, што прэфікс прызначэння дасягальны праз інтэрфейс. Ядро супастаўляе пакеты з гэтымі прэфіксамі, таму адзіныя задзейнічаныя ідэнтыфікатары — адрасы і маскі. Імя хоста ніколі не з'яўляецца ў рашэнні аб перасылцы, і менавіта таму шаблон там супаставіць немагчыма.

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

Такім чынам, маршрут, пабудаваны з імені, — гэта здымак, а не правіла. Ён ахоплівае тое, у што гэтае імя развязалася ў момант запуску тунэля, і гэта менавіта тое паводзіны, якога вы не хочаце для сямейства хастоў, якое змяняецца. Запіс, які пераедзе заўтра, пакідае маршрут, які паказвае на ўчора.

Калі пункт прызначэння сапраўды з'яўляецца прэфіксам

Калі мэта — вядомая прыватная сетка, запішыце прэфікс. Для прыкладу з прасторы дакументацыі адзін хост і падсетка выглядаюць так:

route 10.60.4.20 255.255.255.255
route 10.60.0.0 255.255.0.0

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

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

Калі адзінка працы — імя хоста

Выбар па дамене патрабуе чагосьці, што чытае дамен, гэта значыць кампанента прыкладнога ўзроўню. Звычайны адказ — HTTP-проксі, які знаходзіцца па іншы бок тунэля, а кліент вырашае, якія запыты яму пасылаць.

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

function FindProxyForURL(url, host) {
    var h = host.toLowerCase();
    if (h === "corp.example" || dnsDomainIs(h, ".corp.example")) {
        return "PROXY 10.60.0.12:3128";
    }
    return "DIRECT";
}

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

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

Чаго не ахоплівае опцыя проксі

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

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

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

Праверка абодвух шляхоў, а не толькі ўдалага

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

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

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