OpenVPN клијент за цео LAN на OpenWrt-у: радни редослед
Власништво над интерфејсом, политика зоне, маскарада и табеле по SSID су четири одвојена посла. Урадите их по реду и тунел који покрива цео рутер престаје да се бори с вама.
Четири независна посла стављају цео LAN рутера иза једног тунела. Уређају тунела потребан је власник, зона заштитног зида, циљ превода ка горњој вези и, ако неки клијенти морају да остану ван VPN-а, рутирање по изворној адреси. Тунел који се повеже а ништа не пролази обично нема једно од та четири. Рад по реду зависности значи да неуспех на крају припада кораку који сте управо променили. Сваки корак испод завршава се нечим што можете да видите, а то спречава да следећи постане нагађање.
Одлучите шта дели тунел
Рутер који дели Wi-Fi и DHCP може сам да води клијента. То ставља сваки повезани уређај иза тунела без подешавања по уређају, и то је распоред који већина малих локација жели. То је и онај са најширим опсегом удара када тунел падне, јер сваки уређај одједном губи своју путању. На LAN-у ништа не задржава радни излазни пут.
Други рутер иза првог, који води клијента са сопственом подмрежом, ограничава тунел на своје уређаје. Лакше се уклања и лакше објашњава ономе ко га наследи. Цена је доступност између две стране без руте или прослеђивања порта.
Како год, учините подмреже LAN-а различитим. Исти опсези чине да једна страна изгледа директно повезана, и настала црна рупа чита се као квар VPN-а сатима.
Дајте тунелу власника
Прогласите тунел мрежним интерфејсом са именом, уређајем и без сопственог протокола. Мрежни систем затим ствара и управља уређајем, и све даље се позива на интерфејс по имену, а не по уређају. То је оно што зони омогућава да га нађе.
Не стварајте исти уређај на два места. Руком направљен тунел поред проглашеног интерфејса даје уређај који постоји али није ни у једној зони, или онај који нестаје при поновном учитавању. Оба изгледају као отказ клијента, и ниједан не даје грешку која именује прави узрок. Изаберите декларативни пут и избришите ручни.
Држите име истим у конфигурацији мреже, заштитног зида и VPN-а. Зона наводи мреже по имену, па једна грешка у куцању оставља тунел ван сваке зоне док сам интерфејс изгледа здраво. Здрав интерфејс без политике је најтеже уочљиво стање.
Ставите га у зону, па проследите у њу
Зона заштитног зида је место где живи политика: улаз, излаз, прослеђивање и маскарада. Тунел ван зоне управља се подразумеваним вредностима које нисте изабрали, а то ретко одговара клијенту рутера. Блокови испод проглашавају интерфејс, стављају га у зону и дозвољавају LAN саобраћају да уђе у ту зону.
config interface 'vpn'
option device 'tun0'
option proto 'none'
config zone
option name 'vpn'
list network 'vpn'
option input 'REJECT'
option output 'ACCEPT'
option forward 'REJECT'
option masq '1'
config forwarding
option src 'lan'
option dest 'vpn'
У издањима старијим од 21.02 иста линија интерфејса пише се као option ifname, зато проверите који облик инсталирани фирмвер разуме пре лепљења. Блок прослеђивања је дозвола која LAN саобраћају уопште омогућава да користи тунел. Без њега уређај је укључен, клијент повезан, и ниједан LAN домаћин не стиже до тунела. То је најчешћа пријава повезано али без интернета код клијената рутера.
Маскарада на VPN зони сабија сваку LAN адресу у адресу тунела рутера пре него што пакет изађе. То уклања потребу за повратном рутом до ваше подмреже на даљој страни.
Ако даља страна већ рутира ваш LAN, искључивање маскараде оставља изворне адресе видљивим и чини дневнике по клијенту смисленим. Изаберите једну и запишите коју, јер два избора касније дају различита питања подршке. Уклањање подразумеваног прослеђивања од LAN ка WAN је одвојена одлука са сопственом последицом. Уклоните га и интернет приступ самог рутера одлази с њим.
Именујте праву горњу везу у NAT-у
У фирмверу где је правило превода написано руком, излазни интерфејс је поље које се квари. Правило које именује vlan2 не ради ништа када се сесија заврши на ppp0. Правило без интерфејса уопште може да преведе саобраћај који је требало да остане приватан. Ниједна од грешака не објављује себе, јер тунел наставља да ради.
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Замените ppp0 у том правилу интерфејсом из ip route или из листе активних интерфејса, па гледајте бројач док LAN домаћин учитава страницу. На рутеру са једним провајдером једно правило маскараде за горњу везу обично је довољно. Друго правило за интерфејс тунела није замена за прво.
Затим додајте опције клијента које одлучују шта улази у тунел. Директива redirect-gateway шаље интернет саобраћај клијента кроз VPN, и без ње тунел носи само руте које сервер гура. Проверите добијену табелу рута пре него што дирнете DNS.
Поделите Wi-Fi другом табелом
Једна табела рутирања не може да држи две подразумеване руте. Други SSID који мора да заобиђе тунел зато тражи своју подмрежу и своју табелу. Доделите тунелском SSID-у сопствени опсег, па пошаљите само тај опсег у тунел правилом које бира табелу.
Пакети за рутирање по политици на OpenWrt-у изражавају управо ту комбинацију. Може и ручно, са изворним правилом и табелом чија подразумевана рута показује на уређај тунела.
Проверите поделу из обе мреже. Клијент на тунелском SSID-у треба да прикаже излазну адресу VPN-а, а клијент на обичном SSID-у адресу провајдера. Када оба изгледају исто, правило се поклапа са погрешним извором или се табела уопште не чита. Тестирајте и после поновног повезивања, јер правило које зависи од имена интерфејса пуца када уређај добије нови број.
Посумњајте на сат и заставицу уређаја
Заставица persist-tun оставља уређај тунела на месту између рестартовања. То одговара серверу и збуњује клијента чије стање треба поново изградити од нуле. Уклоните је док решавате проблем са клијентом рутера, јер уређај који преживи неуспешно преговарање крије који се корак заиста сломио. Вратите је пошто се клијент поуздано повеже, а не пре.
Сат је други тихи отказ. Рутер без батеријског сата почиње од епохе, што значи да провере сертификата падају док NTP не стигне. Упоредите временске ознаке у дневнику са стварним временом пре него што дирнете сертификат, јер клијент који се повеже минут после подизања обично чека синхронизацију времена.