Mac L2TP подељене руте: зашто адреса домаћина не ради
setadditionalroutes тражи парове мреже и маске, замењује целу листу и захтева буквално име услуге. Проверите табелу пре него што окривите мрежни пролаз.
VPN се повезује, мени трака то показује, а унутрашњи домаћин и даље не одговара. У таквој ситуацији постоје три могућа узрока, а који важи зависи од тога како је тунел конфигурисан. Или је команда руте користила адресу домаћина тамо где је била потребна адреса мреже, или сам профил инсталира подразумевану руту која гута одлуку, или је клијент PPP тунел коме треба кука уместо кључа профила. Проверите их тим редом, јер је први најјефтиније искључити.
Одредиште је адреса мреже, маска описује префикс
networksetup -setadditionalroutes узима тројке одредишта, маске подмреже и мрежног пролаза. Позив који шаље једну унутрашњу подмрежу кроз тунел изгледа овако:
sudo networksetup -setadditionalroutes "VPN (L2TP)" 192.168.1.0 255.255.255.0 10.2.0.0
Обратите пажњу шта је одредиште: адреса мреже, а не адреса сервера који покушавате да достигнете. У случају који је створио овај чланак, идентична команда са 192.168.1.20 на том месту није урадила ништа корисно, а замена са 192.168.1.0 је одмах прорадила. Иста маска, исти пролаз, један другачији број. То је цео квар у малом.
Разлог је аритметика, а не политика. Адреса домаћина упарена са маском /24 не описује 192.168.1.0/24; описује нешто што табела рутирања не може корисно да задржи, па се запис одбија или игнорише и тунел на крају преноси мање него што сте намеравали.
Када желите тачно једног домаћина, користите адресу домаћина са маском 255.255.255.255. Мешани парови су место где се то квари, а не употреба адресе домаћина као такве. /32 изграђена од једне адресе је легитимна рута; /24 изграђена од једне адресе је грешка.
Позив замењује листу, а име је буквално
Два понашања изненаде људе на првом покушају. Команда поставља целу листу додатних рута уместо да додаје, па позив који додаје један префикс тихо уклања остале који су били ту раније. Изградите цео скуп једним позивом.
Име услуге такође није ознака коју сте измислили. Прочитајте га из алата и копирајте тачно, укључујући суфикс типа:
networksetup -listallnetworkservices
Име које се разликује за један знак не даје грешку вредну читања ни руту. Копирање и лепљење је исправна техника овде, а не преписивање из памћења.
Када профил захтева подразумевану руту
Подељене руте губе од подразумеване руте за свако одредиште које експлицитно не покривају, а L2TP профил конфигурисан за пуни тунел инсталира управо то. Ако профил каже да све иде кроз тунел, листа додатних рута се мења веома мало. Ваш запис није погрешан; једноставно је небитан за одредишта која никада не именује. Контрола над тим обично се налази у подешавању профила за слање целог саобраћаја, а не у било којој команди руте.
Одлучите који модел заиста желите пре него што уредите још записа. Пуни тунел са изузецима је другачија конфигурација од подељеног тунела са конкретним префиксима, а мешање два даје табелу коју нико не може да предвиди.
Ако организација захтева пуни тунел, престаните да покушавате да га поделите локално и однесите захтев ономе ко поседује политику. Локално додата рута која јој противречи биће ионако уклоњена следећим ажурирањем профила.
PPP тунелима је потребна кука уместо кључа
За тунеле засноване на PPP, defaultroute је кључ профила који ствара подразумевану руту; уклоните га и клијент престаје да захтева свако одредиште. Руте се затим додају након што се интерфејс појави, обично из /etc/ppp/ip-up:
#!/bin/sh
/sbin/route add -net 192.168.1.0 -interface ppp0
Држите скрипту у власништву root и извршном, и додајте заштиту на име интерфејса када на машини постоји више од једног профила тунела. Кука која се извршава за сваку PPP везу и претпоставља једно име уређаја је мала грешка с дугим животом.
Проверите поделу са три захтева
Забележите табелу док сте повезани и означите који интерфејс опслужује тунел. Затим проверите конкретно одредиште уместо да верујете излазном статусу команде која га је створила. Излазни код извештава да ли је алат прихватио аргументе, а не да ли саобраћај иде путем који сте наменили.
Завршите са три захтева који доказују поделу: један унутрашњи домаћин по адреси, једно унутрашње име преко унутрашњег резолвера и један јавни сајт који би и даље требало да користи локалну везу. Ако јавни сајт сада такође пролази кроз тунел, подела се никада није догодила, шта год изгледа да каже листа рута.
Повежите се још једном и поновите унутрашњи захтев, јер руте додате ручно могу надживети интерфејс који их је учинио важећим и тихо претворити саобраћај у црну рупу након пада тунела.