Uređaji koji rutiraju za LAN i istovremeno se spajaju na VPN upadaju u istu raspravu sami sa sobom: tunel želi da posjeduje zadanu rutu, a LAN je treba natrag. Kada se OpenVPN poveže, može instalirati zadanu rutu kroz tunel ili par polu-zadanih ruta, što je ispravno za laptop a pogrešno za mrežni prolaz čiji susjedi očekuju odgovore sa njegove LAN adrese. Odgovor nije preskočiti VPN. Odgovor je dati tim dvjema odlukama različite tabele.

Jedna zadana ruta, dva vlasnika

Proslijeđeni saobraćaj i saobraćaj nastao lokalno ne moraju ići istim putem. LAN klijentima treba tunel samo za odredišta koja odaberete, dok vlastitim upravljačkim sesijama hosta i njegovim odgovorima tim klijentima treba LAN zadana ruta. Miješanje obojega u glavnoj tabeli nameće jedan odgovor na dva različita pitanja.

OpenVPN ima prekidač upravo za to. route-noexec sprječava klijenta da uopšte dira glavnu tabelu, a vrijednosti koje bi koristio izvoze se u skriptu route-up kao route_vpn_gateway, dev i adrese interfejsa. Zatim vi odlučujete koja tabela dobija koju rutu, u kodu koji možete kasnije pročitati.

Tabela politika nasuprot prepisivanju glavne

ApproachWhat it buysWhat it costs
Separate table plus source ruleLAN traffic and host traffic keep independent defaultsEvery lookup now depends on rule order
Editing the main table onlyFewer moving parts on a single-purpose hostOne mistake takes the gateway offline entirely
Two half-default routesWorks for a full-tunnel clientAmbiguous on a host that must answer on its LAN address

Zasebna tabela jedina je opcija koja se skalira dalje od jedne podmreže. Dajte joj ime jednom, pa je pominjite po imenu da niko ne mora pamtiti broj:

echo "10 vpn" >> /etc/iproute2/rt_tables
ip rule add from 192.168.50.0/24 table vpn
ip route add default via 10.8.0.1 dev tun0 table vpn

Adrese su ovdje rezervisani primjeri. Zamijenite LAN prefiks, prolaz tunela i ime uređaja iz vlastitog raspoređivanja prije nego što bilo šta pokrenete.

Pravilo mora odgovarati i hostu

Pravilo koje odgovara samo LAN prefiksu pokriva proslijeđene pakete. Ono ne pokriva saobraćaj koji sam prolaz stvara, niti pokriva odgovore koje vraća LAN klijentima, a oni nose LAN adresu prolaza kao svoj izvor. Ta pretraživanja padaju na main i još uvijek mogu izaći kroz tunel.

Dodajte drugo pravilo za vlastitu LAN adresu prolaza ili proširite prvo pravilo na skup koji uključuje oboje. Redoslijed je važan: stavite konkretnije pravilo prvo i provjerite rezultat pretraživanjem koje izričito navodi izvor.

ip route get 203.0.113.9 from 192.168.50.1

Ako to prijavi uređaj tunela za odredište koje treba ostati lokalno, skup pravila je pogrešan bez obzira na to šta tabela sadrži.

NAT ili ruta na drugoj strani

VPN server poznaje tunelsku podmrežu i ništa drugo. Paketi koji dolaze sa LAN izvornom adresom nemaju povratni put osim ako ga neko ne obezbijedi, a postoje tačno dva načina da se on obezbijedi. Dodavanje rute za LAN prefiks na serveru čuva originalni izvor vidljivim s kraja na kraj, što revidirani dizajn obično želi. Maskiranje na prolazu prepisuje izvor na adresu tunela i ne zahtijeva saradnju servera.

iptables -t nat -A POSTROUTING -s 192.168.50.0/24 -o tun0 -j MASQUERADE

Odaberite NAT kada ne kontrolišete server i ne možete tamo dodati rute. Odaberite rutu na strani servera kada su dnevnici, kontrola pristupa ili simetrija povratnog puta važni, jer maskiranje briše originalnu adresu iz svega što druga strana bilježi.

U oba slučaja prosljeđivanje mora biti omogućeno, a strogo filtriranje povratnog puta može odbaciti odgovor kada main ne bi odabrao tunel za taj izvor. Provjerite stvarnu vrijednost prije nego okrivite tunel.

Neka podjela preživi ponovno povezivanje

Ručno dodana pravila i rute nestaju kada se interfejs ponovo stvori, a zastario unos u tabeli može nadživjeti sesiju koja ga je opravdavala. Stavite pravilo tabele, rutu tunela i unos maskiranja u klijentsku skriptu route-up i ispraznite tabelu na početku skripte da stari prolaz ne može preživjeti u novu sesiju.

Provjerite s oba kraja: pretraživanje na prolazu sa LAN izvorom i stvarni zahtjev sa LAN klijenta prema odredištu koje treba proći kroz tunel. Ruta koja postoji ali se nikad ne bira ponaša se tačno kao nikakva ruta dok ne pročitate brojače.

Povezani članci