Dvi vartų sąsajos, vienas VPN: kodėl OpenVPN pasirenka netinkamą išėjimo kanalą
Tunelis tvarkingas; lizdas išeina per netinkamą WAN. Perskaitykite aktyvų porininko adresą, prisegkite maršrutą į mazgą ir pirmiausia patikrinkite politikos taisykles.
Du išėjimo kanalai, vienas tunelis, o srautas išeina per tą, kurio nepasirinkote. Privatūs potinkliai pasiekiami, žurnalas praneša apie sėkmingą ryšį, ir būtent apskaitinis kanalas jį neša. OpenVPN išvestyje nieko neužsimenama apie vartus, nes klientas niekada jų nepasirinko. Jis atidarė lizdą į nuotolinį adresą ir paliko branduoliui nuspręsti, kaip pasiekti tą adresą.
Tunelio adresas nėra galutinis taškas
Kiekvienoje sesijoje yra du skirtingi keliai. Išorinis kelias neša šifruotą transportą į serverio viešąjį adresą. Vidinis kelias neša viską, ką serveris stumia į tunelį, o vieno maršrutų taisyklės neturi įtakos kitam.
Profilio remote įrašas nurodo išorinę paskirties vietą, tad tai yra adresas, kurį reikia prisegti. Tai ir reikšmė, kuri keičiasi, kai mazgo vardas išsprendžiamas kitaip arba profilis išvardija kelis remote įrašus.
Raskite adresą, kuriuo klientas iš tikrųjų skambino
Skaitome gyvą lizdą, o ne konfigūracijos failą. Lizdų lentelė rodo porininką, su kuriuo procesas iš tikrųjų susijungė, ir tai yra reikšmė, kurią išimtis turi atitikti. Profilį galima redaguoti jau prasidėjus sesijai, o lizdas yra vienintelis įrodymas, kuo buvo skambinta:
ss -tunp | grep -i openvpn
journalctl -u openvpn-client@work --no-pager | grep -i "Peer Connection Initiated"
Žurnalo eilutė nurodo porininko adresą ir prievadą prisijungimo metu. Jei ji nesutampa su profiliu, kažkas prieš klientą perrašo paskirties vietą dar prieš prasidedant ryšiui.
Patikrinkite ir adresų šeimą. Dvigubos krūvos profilis gali jungtis per IPv6, nors jūsų išimtis apima tik IPv4, ir tada srautas vadovaujasi kita taisykle nei ta, kurią parašėte. Tas pats galioja tarpinių serveriui, kuris atsako galinio taško vardu. Abiem atvejais gaunamas veikiantis tunelis, nors jūsų maršrutas nieko nedaro.
Prisekite galinį tašką ir perskaitykite politikos eilę
Maršrutas į mazgą yra konkretesnis už bet kurį numatytąjį. Todėl porininko adreso /32 laimi toje lentelėje, kuri jį turi. Įprasta forma aiškiai nurodo vartus ir įrenginį:
ip route add 203.0.113.40/32 via 192.168.10.1 dev eth0
Tas maršrutas padeda tik tada, kai paieška pasiekia tą lentelę. Politikos taisyklės vertinamos iš eilės, ir pirmasis atitikimas nusprendžia, tad taisyklė, siunčianti viską į antrą lentelę, apeina jūsų maršrutą į mazgą main lentelėje. Perskaitykite taisykles prieš manydami, kad maršrutas yra autoritetingas:
ip rule show
ip route get 203.0.113.40
Užklauskite antros komandos su tuo pačiu šaltinio adresu ar žyme, kurią klientas naudoja, kai politika nuo jų priklauso. Ji praneša maršrutą, kurį branduolys pasirinktų, ir tai yra įrodymas apie paiešką, o ne įrodymas, kad gyvas lizdas naudoja tą kelią.
Kai galinis taškas pasislenka
Mazgo vardas, išsprendžiamas į kelis adresus, padaro nuolatinį /32 negaliojantį vos pasikeitus atsakymui. Profilis su keliomis remote eilutėmis turi tą pačią problemą, nes klientas gali nusileisti ant bet kurios jų. Atnaujinkite maršrutą iš paties kliento gyvavimo ciklo kabliukų, o ne pridėkite rankiniu būdu. up scenarijus, kuris nuskaito suderintą porininką ir įdiegia maršrutą į mazgą, išlaiko išimtį suderintą su realybe, o atitinkamas down scenarijus ją pašalina.
Užrašykite atnaujinimą toje pačioje vietoje kaip ir likusi mazgo maršrutizavimo konfigūracija. Maršrutas, egzistuojantis tik iki kito paleidimo, yra bandymas, o ne pataisymas.
Laikykite vidinę politiką atskirai
Išorinio kelio perkėlimas nesuteikia prieigos prie naujo privataus potinklio ir nekeičia, kokias paskirties vietas serveris stumia į tunelį. Apatinio sluoksnio maršrutas pasirenka laidą; įstumti maršrutai pasirenka, kas patenka į tunelį. Būtent šių dviejų sprendimų atskyrimas daro skaidymą nuspėjamą.
Jei tikslas tik atitolinti šifruotą transportą nuo apskaitinio kanalo, palikite numatytąjį maršrutą ramybėje ir pridėkite vienintelę mazgo išimtį. Visos mašinos numatytojo maršruto pakeitimas vienam VPN ryšiui perkelti sugadina kiekvieną kitą programą mazge.
Patvirtinkite rezultatą dviem nepriklausomais stebėjimais: lizdo vietiniu adresu ir įrenginiu bei maršrutu, į kurį išsprendžiama privati paskirties vieta. Kai abu atitinka jūsų ketinimą, skaidymas yra tikras. OpenVPN 2.6 vadove aprašytos remote ir vietinio susiejimo parinktys, kurios nusprendžia, kokiu adresu klientas skambina.