Лаптоп се повезује на канцеларијски VPN и све иде за њим, укључујући веб страницу штампача и један интранет који одговара само на локалној мрежи. Ручно направљена рута то поправља на сат времена, затим веза падне, врати се и изузетак нестане. Са тунелом ништа није у реду: Windows држи једну табелу рутирања, а VPN адаптер преписује свој део те табеле при сваком повезивању. Оно што преживи јесте све што живи изван сопствених уноса адаптера.

Који унос тунел преузима

Забележите табелу два пута, једном са спуштеним тунелом и једном са подигнутим, и упоредите подразумеване редове. Када профил захтева подразумевани префикс, унос адаптера је најшири ред у табели, па сваки изузетак мора бити ужи од њега. То је аритметика о дужини префикса, а не изјава о поверењу или политици. Она такође одређује који интерфејс изузетак мора да наведе.

Запишите индекс интерфејса и локални гејтвеј пре него што наставите, јер се обоје мењају када машина уђе у другу мрежу. Команде испод их читају са машине, а не из памћења.

route print -4
Find-NetRoute -RemoteIPAddress 198.51.100.30

Друга команда пријављује интерфејс и следећи хоп који би та адреса користила управо сада, што је боље од читања четрдесет редова и нагађања. Покрените је пре и после повезивања и имате пар вредан прилагања уз запис о промени. Оба излаза дају бројеве који се користе у остатку ове странице.

Рута домаћина побеђује специфичношћу

Најдуже подударање префикса одлучује победника, па /32 кроз физички гејтвеј побеђује подразумевану руту кроз тунел, а да се тунел не дира. Саобраћај ка тој адреси излази са локалног интерфејса док све остало задржава постојећу путању. Тунел и даље носи подразумевану руту и једноставно престаје да буде једини кандидат за ту одредишну адресу. Дужина префикса је једина полуга коју табела излаже, и за овај посао је довољна.

Специфичност такође искључује очигледну пречицу искључивања имена домена, јер табела упоређује адресе, а једно име може да се разреши у неколико њих. Прво разрешите домаћина, па онда одлучите која од његових адреса заслужује изузетак.

За све ниже претпоставите везу која се зове Office, локални гејтвеј 10.0.0.1 на интерфејсу 7 и одредиште на 198.51.100.30. То су места за попуњавање, а не подразумеване вредности, и горње команде дају вредности које ваша машина заиста користи. Држите ову напомену о замени уз промену, да следећи читалац не би копирао бројеве.

Учините да рута надживи следеће поновно повезивање

Windows не нуди никакву инструкцију за изузимање на VPN вези, па изузетак мора да живи на физичком интерфејсу, где га адаптер неће преписивати. Cmdlet који изгледа као одговор ради супротно: Add-VpnConnectionRoute премешта префикс у тунел, што је огледалски случај у ком подељени профил треба да носи једно одредиште, а остатак остави локално. Ако га овде употребите, загарантовано ће саобраћај који сте хтели да задржите напољу ући унутра.

Ручни облик је једна команда. Његова слабост је промена мреже, а не поновно повезивање.

route -p add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

То преживљава поновно покретање захваљујући -p и шаље једну адресу кроз интерфејс 7, док тунел носи све остало. Преместите лаптоп на другу мрежу и и гејтвеј и индекс постану застарели, па унос тихо откаже. Запишите ко га поседује и када треба да се уклони.

Скрипта за повезивање је чвршћа верзија, јер поново додаје изузетак после сваке везе, уместо да се нада да је унос преживео. Два реда испод припадају ономе што покреће тунел, а не пријавној скрипти.

rasdial Office
route add 198.51.100.30 mask 255.255.255.255 10.0.0.1 metric 1 if 7

Шта год да подигне тунел, то је право место за други ред, а rasdial се враћа тек када је веза успостављена, па рута пада иза сопствених уноса адаптера. Покрените је поново после буђења из сна, јер суспензија може да уклони руту и остави тунел подигнутим. Ако је задатак обрнут, да се један префикс гурне у тунел док остатак остаје локалан, онда је Add-VpnConnectionRoute прави алат.

Рутирање не може да изабере процес

Понекад је захтев ужи од одредишта: један програм треба да иде локалном путањом док све остало остаје у тунелу. Рутирање то не може да изрази, јер упоређује адресе, а не процесе. Изводљиви образац гура проблем у покретач.

Држите профил ван подразумеване руте и покрените тај један програм везан на адресу локалног интерфејса, па изузетак постаје команда за покретање, а тунел задржава оно што је већ обрађивао. Ништа се у табели рутирања не мења, зато ово преживљава поновна повезивања. То такође значи да тунел уопште не сме да поседује подразумевану руту, па је ово други дизајн, а не закрпа на претходном.

Његова слабост је оперативна, а не техничка. Програм увек мора да се покрене кроз омотач, а ако везивање недостаје после буђења из сна, он тихо узима путању коју табела понуди. То је подношљиво за прегледач који отварате намерно и неприхватљиво за све што никада не сме да напусти тунел.

Везе по кориснику ни ово не решавају. Windows може да ограниче везу на налог док табела рутирања остаје за целу машину, па веза ограничена на налог која држи подразумевану руту и даље преусмерава сваки процес на машини, укључујући друге сесије. Ограничење постаје стварно тек када се опсег руте поклопи са налогом. Две особе које деле један лаптоп деле и једну табелу, а друга наслеђује онај тунел који је прва покренула.

Потврдите да је изузетак преживео поновно повезивање

Тестирајте промену онако како ће да не успе: прекините везу, поново се повежите, отворите нову апликацију, затим затражите једну адресу која мора да остане локална и једну која мора да користи тунел. Упоредите обе са Find-NetRoute у повезаном стању.

Ако префикс недостаје у табели после поновног повезивања, он живи у погрешном објекту, а не у погрешном формату. Преместите га на физички интерфејс и поновите тест. Сачувајте оба излаза команди уз запис о промени, јер снимак радног стања касније одговара на више питања него пасус објашњења. Следећа особа ће хтети да зна шта је повезивање произвело, а не шта сте намеравали да произведе.

Повезани чланци