Зашто џокер знак у OpenVPN директиви руте не може да ради
рута инсталира префиксе адреса, па шаблон имена хоста нема са чим да се упореди. Користите префикс за мреже и прокси или PAC датотеку када домени треба да одлучују.
Намера је разумна: послати све за један домен компаније кроз тунел и оставити остало на миру. Директива која се уређује инсталира руте, а рута нема никакав појам имена хоста са којим би се упоредила. Сваки покушај да се у њу упише џокер знак даје или грешку при парсирању или, што је горе, руту која данас случајно ради зато што се име решило на једну адресу. Од два различита механизма се тражи да обављају посао један другог.
Шта рута инсталира и шта никада не чита
Запис руте каже да је префикс одредишта доступан преко интерфејса. Језгро пореди пакете са тим префиксима, па су једини укључени идентификатори адресе и маске. Име хоста се никада не појављује у одлуци о прослеђивању, и зато се тамо шаблон не може упоредити.
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 датотеку, па ти случајеви захтевају подржан механизам за појединачну апликацију или други дизајн. Пописните клијенте који су важни пре него што обећате да правило прегледача покрива радни ток.
Враћање директно такође није излаз. Ако политика рутирања машине већ шаље све у тунел, захтев означен као директан остаје унутра, зато што су избор проксија и табела рута различите одлуке донете на различитим слојевима.
Решавање имена је треће одвојено питање. Избор који захтеви иду на прокси не говори ништа о томе који резолвер им одговара, а третирање обоје као једног подешавања ствара цурења која су невидљива док неко не тестира споља. Одлучите где се одговара на сваки упит и запишите ту одлуку поред правила проксија. Резолвер који се промени зато што се тунел подигао тихо ће померити одговор.
Тестирање оба пута, не само срећног
Тестирајте име хоста које треба да се поклопи, име хоста које не треба, и врх домена, јер врх је случај који се најчешће прескаче правилом само са суфиксом. Затим потврдите којим је путем сваки захтев заиста прошао уместо да то закључујете из тога да ли се страница учитала.
На крају, тестирајте грану неуспеха. Недоступан прокси треба да пропадне на начин који сте одредили унапред, уместо да се тихо врати на директну везу. Референца за мрежне опције прецизно документује параметре руте; доменска половина овог дизајна живи потпуно изван ње.