OpenVPN klijent za cijelu LAN mrežu na OpenWrtu: redoslijed koji radi
Vlasništvo nad interfejsom, politika zone, maskiranje i tabele po SSID-u četiri su odvojena posla. Uradite ih po redu i tunel za cijeli ruter prestaje da se bori s vama.
Četiri nezavisna posla stavljaju cijelu LAN mrežu rutera iza jednog tunela. Uređaju tunela treba vlasnik, firewall zona, cilj prevođenja prema uplinku i, ako neki klijenti moraju ostati izvan VPN-a, rutiranje po izvorišnoj adresi. Tunelu koji se poveže a ništa ne prolazi obično nedostaje jedan od ta četiri. Rad po redu zavisnosti znači da kvar na kraju pripada koraku koji ste upravo promijenili. Svaki korak ispod završava nečim što možete posmatrati, i to čuva sljedeći od nagađanja.
Odlučite šta dijeli tunel
Ruter koji dijeli Wi-Fi i DHCP može sam pokrenuti klijenta. Time svaki priključeni uređaj završava iza tunela bez podešavanja po uređaju, i to je raspored koji želi većina malih lokacija. To je ujedno raspored s najširim efektom kada tunel padne, jer svi uređaji izgube put odjednom. Ništa na LAN-u ne zadržava radnu rutu prema van.
Drugi ruter iza prvog, koji pokreće klijenta s vlastitom podmrežom, ograničava tunel na vlastite uređaje. Lakše ga je ukloniti i lakše objasniti onome ko ga naslijedi. Cijena je dostupnost između dvije strane bez rute ili prosljeđivanja porta.
Kako god, neka LAN podmreže budu različite. Identični opsezi čine da jedna strana izgleda direktno povezana, a crna rupa koja nastane satima izgleda kao kvar VPN-a.
Dajte tunelu vlasnika
Deklarišite tunel kao mrežni interfejs s imenom, uređajem i bez vlastitog protokola. Mrežni sistem tada stvara i upravlja uređajem, a sve dalje se poziva na interfejs po imenu, ne po uređaju. To je ono što zoni omogućava da ga nađe.
Ne stvarajte isti uređaj na dva mjesta. Ručno napravljen tunel pored deklarisanog interfejsa daje uređaj koji postoji ali nije u zoni, ili onaj koji nestane pri ponovnom učitavanju. Oba izgledaju kao da je klijent pao, i nijedan ne daje grešku koja imenuje pravi uzrok. Odaberite deklarativni put i obrišite ručni.
Držite ime isto u konfiguraciji mreže, firewall-a i VPN-a. Zona navodi mreže po imenu, pa tipfeler ostavlja tunel izvan svake zone dok sam interfejs izgleda zdrav. Zdrav interfejs bez politike najteže je uočljivo stanje.
Stavite ga u zonu, pa prosljeđujte u nju
Firewall zona je mjesto gdje živi politika: input, output, forward i masquerade. Tunel koji nije ni u jednoj zoni vode zadane postavke koje niste odabrali, a to rijetko treba klijent rutera. Blokovi ispod deklarišu interfejs, stavljaju ga u zonu i dozvoljavaju LAN saobraćaju ulaz u tu zonu.
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'
Na izdanjima starijim od 21.02 isti red interfejsa piše se option ifname, pa provjerite koji oblik instalirani firmware razumije prije lijepljenja. Blok prosljeđivanja je dozvola koja uopšte pušta LAN saobraćaj kroz tunel. Bez njega uređaj je gore, klijent povezan, a nijedan LAN host ne stiže do tunela. To je najčešća prijava povezano ali bez interneta kod klijenata rutera.
Masquerade na VPN zoni sabija svaku LAN adresu u adresu tunela rutera prije nego paket izađe. Time uklanja potrebu za povratnom rutom do vaše podmreže na daljoj strani.
Ako dalja strana već rutira vaš LAN, isključivanje masquerade-a drži izvorišne adrese vidljivim i čini zapise po klijentu smislenim. Odaberite jedno i zapišite koje, jer dva izbora kasnije stvaraju različita pitanja podrške. Uklanjanje zadanog prosljeđivanja s LAN-a na WAN posebna je odluka s vlastitom posljedicom. Uklonite ga i vlastiti pristup rutera internetu odlazi s njim.
Imenujte pravi uplink u NAT-u
Na firmware-u gdje je pravilo prevođenja napisano ručno, polje koje se kvari je odlazni interfejs. Pravilo koje imenuje vlan2 ne radi ništa kada sesija završi na ppp0. Pravilo bez ikakvog interfejsa može prevoditi saobraćaj koji je trebao ostati privatni. Nijedna greška se ne najavljuje sama, jer tunel nastavlja raditi.
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Zamijenite ppp0 u tom pravilu interfejsom iz ip route ili liste aktivnih interfejsa, pa gledajte brojač dok LAN host učitava stranicu. Na ruteru s jednim provajderom jedno pravilo masquerade-a za uplink obično je dovoljno. Drugo pravilo za interfejs tunela nije zamjena za prvo.
Zatim dodajte opcije klijenta koje odlučuju šta ulazi u tunel. Direktiva redirect-gateway šalje internet saobraćaj klijenta kroz VPN, a bez nje tunel nosi samo rute koje server gura. Provjerite dobijenu tabelu rutiranja prije nego dirate DNS.
Podijelite Wi-Fi drugom tabelom
Jedna tabela rutiranja ne može držati dva zadana izlaza. Zato drugi SSID koji mora zaobići tunel treba vlastitu podmrežu i vlastitu tabelu. Dodijelite tunelovanom SSID-u vlastiti opseg, pa rutirajte samo taj opseg u tunel pravilom koje bira tabelu.
Paketi rutiranja po politici na OpenWrtu izražavaju upravo tu kombinaciju. Ručno također radi: pravilo po izvoru i tabela čiji zadani izlaz pokazuje na uređaj tunela.
Provjerite podjelu s obje mreže. Klijent na tunelovanom SSID-u treba pokazivati izlaznu adresu VPN-a, a klijent na običnom SSID-u adresu provajdera. Kada oba izgledaju isto, pravilo pogađa pogrešan izvor ili se tabela nikad ne konsultuje. Testirajte i nakon ponovnog povezivanja, jer pravilo koje zavisi od imena interfejsa puca kada se uređaj prenumeriše.
Sumnjajte na sat i zastavicu uređaja
Zastavica persist-tun ostavlja uređaj tunela na mjestu između restarta. To odgovara serveru i zbunjuje klijenta čije stanje treba graditi iznova. Uklonite je dok tražite kvar klijenta rutera, jer uređaj koji preživi neuspješno pregovaranje skriva koji se korak stvarno slomio. Vratite je kada se klijent bude pouzdano povezivao, i ne prije.
Sat je drugi tihi kvar. Ruter bez sata na bateriju počinje od epohe, što znači da provjere certifikata padaju dok NTP ne sustigne. Uporedite vremenske oznake iz dnevnika sa stvarnim vremenom prije nego dirate certifikat, jer klijent koji se poveže minutu nakon podizanja obično čeka sinhronizaciju vremena.