Koko tunnelin OpenVPN: lisää internetin uloskäynti palvelinpuolelle
Oletusreitin työntäminen on vain puolet koko tunnelin palvelusta. Palvelin tarvitsee myös välityksen, rajatun välityssäännön ja paluureitin altaalle.
Asiakas todentaa itsensä, saa osoitteen altaasta ja tavoittaa VPN-isännän palvelut, mutta jokainen julkinen kohde päättyy aikakatkaisuun. Tältä näyttää tunneli ilman uloskäyntiä, ja niin se pysyy, kunnes neljä erillistä asiaa on totta. Asiakkaan on hyväksyttävä oletusreitti, palvelimen on välitettävä, palomuurin on sallittava läpikulku ja vastaukset tarvitsevat reitin takaisin altaaseen. Kaikki neljä vikaa jakavat yhden oireen, joten muuta yhtä asiaa kerrallaan ja kirjaa tulos.
Työnnä oletusreitti ja varmista, mitä asiakas asensi
Palvelinpuolen rivi on lyhyt, ja se vaikuttaa vain asiakkaisiin, jotka hyväksyvät työnnetyt valinnat. def1-muoto asentaa kaksi puoliolettusreittiä sen sijaan että se poistaisi nykyisen oletusreitin, mikä pitää nykyisen yhteyden elossa ja sieppaa silti jokaisen kohteen.
push "redirect-gateway def1"
Kun olet yhdistänyt uudelleen, lue asiakkaan reititystaulukko sen sijaan että luottaisit profiiliin. Linuxissa kaksi /1-merkintää näkyvät alkuperäisen oletusreitin vieressä, ja Windows näyttää saman parin muodossa 0.0.0.0/1 ja 128.0.0.0/1. Asiakas, joka jättää työnnetyt valinnat huomiotta tai on määritetty hylkäämään ne, pitää vanhan oletusreittinsä eikä koskaan lähetä internetliikennettä tunneliin. Ratkaise tämä kysymys ennen kuin muutat palvelimella mitään, sillä mikään palvelinpuolen sääntö ei voi kompensoida sitä.
Välitys on palvelimen asetus, ei VPN:n asetus
Lue välityslipuke ennen kuin kosket reititykseen. Nolla siellä tarkoittaa, että ydin vastaanottaa asiakkaan paketin ja kieltäytyy välittämästä sitä eteenpäin, mikä näyttää täsmälleen palomuurin estolta kaukaa katsottuna. Aseta arvo järjestelmän asetushakemiston kautta, jotta se säilyy uudelleenkäynnistyksen yli.
sysctl net.ipv4.ip_forward
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-vpn-forward.conf
sudo sysctl --system
Varmista seuraavaksi, että isännällä itsellään on toimiva reitti internetin uloskäyntiin. Palvelimen komentotulkista tehty pyyntö todistaa, että ylävirran reitti on käyttökelpoinen, eikä kerro yhtään mitään asiakkaan paketin välittämisestä, joten kohtele niitä kahtena erillisenä testinä. Jos palvelin ei tavoita kohdetta, mikään määrä välitysasetuksia ei auta.
Salli juuri se läpikulku, jonka aiot, ja ei mitään muuta
Välitetyt paketit kulkevat forward-reittiä; VPN-isännälle itselleen osoitettu liikenne kulkee input-reittiä. Nämä ovat eri päätöksiä, eikä input-reitin avaaminen salli läpikulkua koneen kautta. Niiden sekoittaminen on yleisin syy siihen, että palomuuri näyttää sallivan kaiken, kun asiakkaat yhä aikakatkeavat.
Minimaalinen käytäntö hyväksyy uudet yhteydet altaasta ulostuloliitäntää kohti ja hyväksyy vastaukset, jotka kuuluvat muodostettuihin virtoihin. Sijoita se siihen sääntökokonaisuuden omistajaan, jota jakelusi käyttää, sen sijaan että lisäisit kaksoiskappaleen säännön joka käynnistyksellä; kaksoiskappaleet kertyvät ja laskurit menettävät merkityksensä.
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
Jokaisen ketjun vaihtaminen hyväksyväksi saa testin läpi ja poistaa palomuurin olemassaolon syyn. Pidä laajuus altaassa ja ulostuloliitännässä ja jätä asiaankuulumaton välitys rauhaan.
Anna vastauksille paikka, johon mennä
Altaan osoitteet ovat yksityisiä, joten julkinen palvelin ei voi toimittaa vastausta suoraan niihin. Joko VPN-isäntä kääntää lähdeosoitteen ulospäin mennessään tai ylävirran laite pitää reittiä takaisin altaaseen.
sudo iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o eth0 -j MASQUERADE
Lisää täsmälleen yksi käännöskerros. Toinen NAT ylempänä kätkee ensimmäisen ja tekee molemmista lokeista lähes hyödyttömiä, kun jotain hajoaa myöhemmin. Jos ylävirran reititin jo reitittää altaan takaisin, käännöksen lisääminen isännälle on tarpeetonta, ja paluureitti riippuu silloin kyseisen reitittimen asetuksista eikä sinun.
Pilvi-instanssit lisäävät vielä yhden portin, koska jotkin alustat pudottavat paketteja, joiden lähdeosoite ei ole instanssin oma, ellei tuota tarkistusta lievennetä. Tämä asetus sijaitsee vieraan ulkopuolella ja on helppo unohtaa, kun paikallinen testikone toimii.
Todista se asiakkaalta, ei palvelimen komentotulkista
Aloita numeerisella IPv4-pyynnöllä, sitten nimihaulla, sitten sovelluksella. ping todistaa välityksen ja käännöksen;se ei todista mitään nimien ratkaisusta, koska DNS-valinnat tulevat voimaan vasta kun asiakasintegraatio asentaa ne.
curl -4 -m 5 http://198.51.100.10/
dig +short example.com
Kirjaa muutokset ja peruutusvaihe sitä mukaa kun etenet, jotta uloskäyntikäytäntö voidaan peruuttaa yhdellä toimella, kun testi epäonnistuu. Tämä ohje kattaa vain IPv4:n; inventoi IPv6 erikseen ennen kuin väität, että käyttöönotto kuljettaa kaiken liikenteen.