OpenVPN s plným tunelom: pridajte internetový výstup na strane servera
Zatlačenie predvolenej trasy je len polovica služby plného tunela. Server tiež potrebuje preposielanie, obmedzené pravidlo preposielania a cestu späť pre pool.
Klient sa overí, dostane adresu z poolu a dosiahne služby na hostiteľovi VPN, no každá verejná destinácia skončí vypršaním času. Tak vyzerá tunel bez výstupu a tak to zostane, kým nie sú splnené štyri oddelené podmienky. Klient musí prijať predvolenú trasu, server musí preposielať, firewall musí povoliť tranzit a odpovede potrebujú cestu späť do poolu. Všetky štyri poruchy majú jeden príznak, preto meňte jednu položku na pokus a výsledok si poznamenajte.
Zatlačte predvolenú trasu a overte, čo klient nainštaloval
Riadok na strane servera je krátky a ovplyvňuje len klientov, ktorí prijímajú zatlačené voľby. Forma def1 inštaluje dve polo-predvolené trasy namiesto vymazania existujúcej predvolenej, čo udrží súčasné spojenie živé a zároveň zachytí každú destináciu.
push "redirect-gateway def1"
Po opätovnom pripojení si prečítajte smerovaciu tabuľku klienta, namiesto toho aby ste verili profilu. V Linuxe sa dva záznamy /1 objavia vedľa pôvodnej predvolenej trasy a Windows zobrazuje ten istý pár ako 0.0.0.0/1 a 128.0.0.0/1. Klient, ktorý zatlačené voľby ignoruje, alebo ten, ktorý je nastavený ich odmietať, si ponechá starú predvolenú trasu a nikdy neodošle internetovú prevádzku do tunela. Vyriešte túto otázku, kým na serveri čokoľvek zmeníte, pretože žiadne pravidlo na strane servera to nenahradí.
Preposielanie je nastavenie servera, nie nastavenie VPN
Prečítajte si príznak preposielania, kým sa dotknete smerovania. Nula tam znamená, že jadro prijme klientov paket a odmietne ho poslať ďalej, čo vyzerá presne ako blokovanie firewallom z opačnej strany. Hodnotu nastavte cez konfiguračný adresár systému, aby prežila reštart.
sysctl net.ipv4.ip_forward
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-vpn-forward.conf
sudo sysctl --system
Ďalej overte, že samotný hostiteľ má funkčnú trasu k internetovému výstupu. Požiadavka z shellu servera dokazuje, že cesta nahor je použiteľná, a nehovorí vôbec nič o preposielaní klientovho paketu, takže ich berte ako dva samostatné testy. Ak sa server k destinácii nedostane, nepomôže žiadne množstvo konfigurácie preposielania.
Povoľte práve ten tranzit, ktorý zamýšľate, a nič iné
Preposielané pakety prechádzajú cestou forward; prevádzka adresovaná samotnému hostiteľovi VPN prechádza cestou input. To sú rôzne rozhodnutia a otvorenie cesty input neumožňuje tranzit strojom. Ich zámena je najčastejším dôvodom, prečo firewall vyzerá, že povoľuje všetko, a klienti napriek tomu dostávajú timeout.
Minimálna politika prijíma nové spojenia z poolu k výstupnému rozhraniu a prijíma odpovede patriace nadviazaným tokom. Umiestnite ju k tomu vlastníkovi sady pravidiel, ktorý používa vaša distribúcia, namiesto pridávania duplicitného pravidla pri každom štarte; duplicity sa hromadia a počítadlá prestanú niečo znamenať.
sudo iptables -A FORWARD -i tun0 -o eth0 -s 10.90.0.0/24 -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o tun0 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
Prepnutie každého reťazca na prijímanie nechá test prejsť a odstráni dôvod existencie firewallu. Držte rozsah na poole a výstupnom rozhraní a nesúvisiace preposielanie nechajte na pokoji.
Dajte odpovediam kam ísť
Adresy poolu sú súkromné, takže verejný server im nemôže doručiť odpoveď priamo. Buď hostiteľ VPN prekladá zdrojovú adresu na ceste von, alebo zariadenie vyššie drží trasu späť do poolu.
sudo iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o eth0 -j MASQUERADE
Pridajte práve jednu prekladovú vrstvu. Druhý NAT vyššie skryje prvý a oba záznamy urobí takmer nepoužiteľnými, keď sa neskôr niečo pokazí. Ak router vyššie už smeruje pool späť, pridanie prekladu na hostiteľovi je zbytočné a cesta späť potom závisí od konfigurácie toho routera, nie od vašej.
Cloudové inštancie pridávajú ešte jednu bránu, pretože niektoré platformy zahadzujú pakety, ktorých zdrojová adresa nie je adresou inštancie, ak sa táto kontrola neuvoľní. Toto nastavenie sedí mimo hosťa a ľahko sa zabudne, keď lokálny testovací stroj funguje.
Dokážte to z klienta, nie z shellu servera
Začnite číselnou požiadavkou IPv4, potom vyhľadaním mena, potom aplikáciou. ping dokazuje preposielanie a preklad;o preklade mien nedokazuje nič, pretože voľby DNS začnú platiť až vtedy, keď ich nainštaluje klientská integrácia.
curl -4 -m 5 http://198.51.100.10/
dig +short example.com
Priebežne zaznamenávajte zmeny aj krok vrátenia, aby sa výstupná politika dala vrátiť jedinou akciou, keď test zlyhá. Tento recept pokrýva len IPv4; inventarizujte IPv6 zvlášť, než budete tvrdiť, že nasadenie nesie všetku prevádzku.