OpenVPN iroute pret kodola maršrutu: kura trūkst?
Serverim ir maršruts, un satiksme tomēr apstājas. Viens ceļa lēmums pieder kodolam, otrs – partnerim; noskaidrojiet, kura trūkst un kas jāpārbauda.
10.77.20.0/24 paredzēta pakete OpenVPN serverī pieņem divus atsevišķus lēmumus: operētājsistēmai tā jānodod VPN saskarnei, un OpenVPN jāzina, kurš pievienotais klients pieder šim prefiksam. Ja trūkst kodola maršruta, pakete tiek nomesta pirms tuneļa, un, ja trūkst partnera maršruta, – pēc tam. Abas kļūmes no attālā LAN izskatās vienādi, un, lai diagnosticētu, kura no tām jums ir, katrā pusē vajadzīga viena komanda.
Klasiskajā lietotāja telpas datu ceļā kodola maršruts nogādā paketi tuneļa procesā, un iroute šim procesam pasaka, kuram partnerim tā jāsaņem. Neviens neaizstāj otru, un konfigurācija, kurā ir tikai viens no tiem, izskatīsies saprātīga līdz pirmajam ping.
Divi lēmumi, nevis viens maršruts
Iedomājieties savienojumu starp vietnēm, kur 10.77.20.0/24 atrodas aiz viena klienta. Servera kodola maršruts, piemēram, ip route add 10.77.20.0/24 dev tun0, sūta atbilstošās paketes uz tuneļa ierīci. Pēc tam OpenVPN ieskatās savā iekšējā tabulā, kas veidota no iroute ierakstiem klienta konfigurācijas mapē, lai izlemtu, kurš partnera savienojums tās saņems. Bez kodola maršruta pakete nekad nesasniedz procesu, un bez partnera maršruta tā sasniedz procesu un nekur nenonāk.
Šo sadalījumu ir viegli aizmirst, jo viena maršruta rinda klienta profilā var izskatīties tā, it kā tā veiktu abus darbus. Tā neveic: maršruta piespiešana klientiem pasaka, ko sūtīt pa tuneli, savukārt iroute serverim pasaka, kam pieder adrešu diapazons aiz klienta. Tie dzīvo dažādos failos, tos lasa dažādas puses, un tie neizdodas pretējos virzienos.
Kur pieder iroute un ko tas saka
Ieraksts nonāk atsevišķā klienta failā, kas nosaukts pēc klienta common_name, mapē client-config-dir, kā iroute 10.77.20.0/24. Faila nosaukuma atbilstība nav kosmētiska: OpenVPN meklē autentificēto identitāti un lasa failu ar tieši šo nosaukumu, tāpēc fails ar nosaukumu site-a iedarbojas tikai uz klientu, kura kopējais nosaukums ir site-a. Pievienojiet ccd-exclusive, ja klienti bez šāda faila ir pilnībā jānoraida, kas ir pareizais iestatījums, kad katrs klients ir vietnes vārteja. Turiet vienu failu katrai vārtejai un nosaucot to pēc sertifikāta subjekta, ko jūs patiešām izsniedzat.
Pārbaudiet ierakstu no servera, pirms vainojat attālo LAN. Statusa fails uzskaita pievienotos klientus ar viņu kopējiem nosaukumiem, un serveris, kas darbojas ar --verb 4, reģistrē iroute instalēšanu brīdī, kad partneris pieslēdzas. Ja pieslēgšanās laikā nekas neparādās, fails atrodas nepareizā mapē vai nosauc nepareizo identitāti.
Slazds: fails ir, identitāte ir nepareiza
Pareizi izskatošs iroute, kas piesaistīts nepareizajam partnerim, izšķērdē vairāk laika nekā trūkstošs fails, jo diskā viss izskatās pareizi. Sertifikātu pārdēvēšana, atkārtoti kopējie nosaukumi un efektīvo identitāti mainošais username-as-common-name to visu rada. Pārbaudiet, kādu identitāti serveris autentificēja, nevis kādu jūs gaidījāt: statusa izvade ir noteicošā, bet faila nosaukums ir tikai meklēšanas atslēga.
Maršruts var pārdzīvot savu īpašnieku. Statiskie maršruti un iroute ieraksti apraksta prefiksu, nevis pieejamības garantiju, tāpēc satiksme var turpināt tikt maršrutēta uz partneri, kas šobrīd ir atvienots.
Pabeidziet ceļu aiz partnera
Partnera piederība ir ceļa vidus, nevis beigas. Klientam ir jāpārsūta paketes no tuneļa uz savu LAN, kas nozīmē, ka šajā resursdatorā ir iespējota IP pārsūtīšana un ugunsmūra noteikums atļauj caureju. Attālā LAN resursdatoriem vajadzīgs atgriešanās ceļš tuneļa adresei: vai nu maršruts, kas norāda atpakaļ uz vārteju, vai apzināti projektēts NAT klienta pusē. Apstipriniet pārsūtīšanas iestatījumu klientā ar sysctl net.ipv4.ip_forward, nevis pieņemot distribūcijas noklusējumu.
Ja citiem VPN klientiem jāsasniedz šis apakštīkls, izkārtojums atkal aug: serverim vajadzīgs client-to-client, un tiem klientiem prefikss jāmaršrutē pa tuneli. Nekas no tā neizriet no paša servera maršrutu tabulas.
Pārbaudiet vienu galamērķi no īsta avota, nevis no paša servera. Ping no nesaistīta LAN resursdatora uz resursdatoru aiz klienta vienā kustībā pārbauda atgriešanās ceļu, pārsūtīšanas noteikumu un partnera piederību, savukārt veiksmīga rokasspiediena tikai apliecina identitāti. Pēc tam atvienojiet īpašnieku partneri un pierakstiet, ko dara maršruts, jo šī atbilde ir jūsu kļūmes režīms.