Pilna tuneļa OpenVPN: pievienojiet interneta izeju servera pusē
Noklusējuma maršruta izstumšana ir tikai puse no pilna tuneļa pakalpojuma. Serverim vajag arī pārsūtīšanu, ierobežotu pārsūtīšanas noteikumu un atgriešanās ceļu uz kopu.
Klients autentificējas, saņem adresi no kopas un sasniedz pakalpojumus VPN resursdatorā, tomēr katrs publiskais galamērķis beidzas ar taimautu. Šādi izskatās tunelis bez izejas, un tā tas paliek, līdz ir izpildītas četras atsevišķas lietas. Klientam jāpieņem noklusējuma maršruts, serverim jāpārsūta, ugunsmūrim jāatļauj caureja, un atbildēm vajadzīgs ceļš atpakaļ uz kopu. Visiem četriem bojājumiem ir viens simptoms, tāpēc mainiet vienu vienumu katrā mēģinājumā un pierakstiet rezultātu.
Izstumiet noklusējuma maršrutu un pārbaudiet, ko klients instalēja
Servera puses rinda ir īsa, un tā ietekmē tikai klientus, kas pieņem izstumtos parametrus. def1 forma instalē divus pusnoklusējuma maršrutus, nevis dzēš esošo noklusējumu, kas uztur pašreizējo savienojumu dzīvu un tomēr uztver katru galamērķi.
push "redirect-gateway def1"
Pēc atkārtotas savienošanas lasiet klienta maršrutēšanas tabulu, nevis uzticieties profilam. Linux divi /1 ieraksti parādās blakus sākotnējam noklusējumam, un Windows rāda to pašu pāri kā 0.0.0.0/1 un 128.0.0.0/1. Klients, kas ignorē izstumtos parametrus, vai tāds, kas konfigurēts tos noraidīt, patur savu veco noklusējumu un nekad nesūta interneta satiksmi tunelī. Atrisiniet šo jautājumu pirms kaut kā maiņas serverī, jo neviens servera puses noteikums to nekompensēs.
Pārsūtīšana ir servera iestatījums, nevis VPN iestatījums
Izlasiet pārsūtīšanas karodziņu pirms maršrutēšanas aizskaršanas. Nulle tur nozīmē, ka kodols saņem klienta paketi un atsakās to pārsūtīt tālāk, kas izskatās tieši kā ugunsmūra bloķēšana no tālās puses. Iestatiet vērtību caur sistēmas konfigurācijas direktoriju, lai tā pārdzīvotu restartu.
sysctl net.ipv4.ip_forward
echo 'net.ipv4.ip_forward=1' | sudo tee /etc/sysctl.d/99-vpn-forward.conf
sudo sysctl --system
Pēc tam pārbaudiet, vai pašam resursdatoram ir strādājošs maršruts uz interneta izeju. Pieprasījums no servera čaulas pierāda, ka augšupējais ceļš ir lietojams, un pilnīgi neko nepasaka par klienta paketes pārsūtīšanu, tāpēc uzskatiet tos par diviem atsevišķiem testiem. Ja serveris nevar sasniegt galamērķi, nekāds pārsūtīšanas konfigurācijas daudzums nepalīdzēs.
Atļaujiet tieši to caureju, ko domājat, un neko citu
Pārsūtītās paketes šķērso forward ceļu; satiksme, kas adresēta pašam VPN resursdatoram, šķērso input. Tie ir atšķirīgi lēmumi, un input ceļa atvēršana neļauj caureju caur mašīnu. To sajaukšana ir visbiežākais iemesls, kāpēc ugunsmūris šķiet atļaujam visu, kamēr klienti joprojām saņem taimautu.
Minimālā politika pieņem jaunus savienojumus no kopas uz izejas saskarni un pieņem atbildes, kas pieder izveidotām plūsmām. Ievietojiet to tajā noteikumu kopas īpašniekā, ko izmanto jūsu distributīvs, nevis pievienojiet dublētu noteikumu katrā palaišanā; dublētie noteikumi uzkrājas un skaitītāji pārstāj kaut ko nozīmēt.
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
Katras ķēdes pārslēgšana uz pieņemšanu liek testam iziet un noņem ugunsmūra pastāvēšanas iemeslu. Turiet tvērumu uz kopu un izejas saskarni, un atstājiet nesaistītu pārsūtīšanu mierā.
Dodiet atbildēm vietu, kurp doties
Kopas adreses ir privātas, tāpēc publisks serveris nevar tām tieši piegādāt atbildi. Vai nu VPN resursdators iztulko avota adresi izejā, vai augstāka ierīce tur maršrutu atpakaļ uz kopu.
sudo iptables -t nat -A POSTROUTING -s 10.90.0.0/24 -o eth0 -j MASQUERADE
Pievienojiet tieši vienu tulkošanas slāni. Otrs NAT augstāk paslēpj pirmo un padara abus žurnālus gandrīz nederīgus, kad vēlāk kaut kas salūzt. Ja augstāks maršrutētājs kopu jau maršrutē atpakaļ, tulkošanas pievienošana resursdatorā ir lieka, un atgriešanās ceļš tad ir atkarīgs no tā maršrutētāja konfigurācijas, nevis no jūsējās.
Mākoņa instanču gadījumi pievieno vēl vienus vārtus, jo dažas platformas izmet paketes, kuru avota adrese nav instances adrese, ja vien šī pārbaude netiek mīkstināta. Šis iestatījums atrodas ārpus viesa un to ir viegli aizmirst, kad lokāla testa mašīna strādā.
Pierādiet to no klienta, nevis no servera čaulas
Sāciet ar skaitlisku IPv4 pieprasījumu, tad vārda meklēšanu, tad lietojumprogrammu. ping pierāda pārsūtīšanu un tulkošanu;tas neko nepierāda par vārdu izšķiršanu, jo DNS parametri stājas spēkā tikai tad, kad klienta integrācija tos instalē.
curl -4 -m 5 http://198.51.100.10/
dig +short example.com
Pierakstiet izmaiņas un atsaukšanas soli gaitā, lai izejas politiku varētu atgriezt ar vienu darbību, kad tests neizdodas. Šī recepte aptver tikai IPv4; atsevišķi uzskaitiet IPv6, pirms apgalvojat, ka izvietojums pārvadā visu satiksmi.