OpenVPN: local kundrejt adresës së tunelit, dy socket-e të ndryshme
Adresa që kontakton serverin nuk është adresa brenda tunelit. Leximi i local, remote dhe nobind si role të ndara shpjegon shumicën e gabimeve të bind.
Klienti refuzon të nisë dhe ankohet se nuk mund të lidhë një adresë lokale, dhe rregullimi i dukshëm duket sikur duhet ta drejtojë atë te adresa e tunelit që pret të marrë. Kjo nuk mund të funksionojë, dhe arsyeja ia vlen të kuptohet: përpara se tuneli të ekzistojë nuk ka adresë të brendshme, dhe socket-i që kontakton serverin duhet të ekzistojë së pari. Janë të përfshira dy adresa të ndryshme, dhe vetëm njëra prej tyre mund të zgjidhet lokalisht.
Gabimi i bind-it emërton një adresë lokale
Kur OpenVPN raporton se nuk mund të lidhë një adresë lokale, flet për socket-in e transportit: pikën fundore UDP ose TCP që mbart lidhjen e kriptuar drejt peer-it.
Një direktivë e qartë local i kërkon daemon-it ta lidhë atë socket me një adresë lokale të caktuar. Adresa duhet të ekzistojë në hapësirën e emrave të rrjetit ku ekzekutohet procesi, dhe duhet të jetë e caktueshme në momentin kur klienti niset.
Një adresë publike e përkthyer në një router ose në skajin e një cloud-i nuk është adresë lokale që daemon-i mund ta lidhë, edhe pse është adresa që sheh serveri. Ky dallim shpjegon pse një profil funksionon në shtëpi dhe dështon në një instancë cloud. Shpjegon gjithashtu pse shtimi i adresës publike në një ndërfaqe loopback nuk ndihmon, pasi transporti atëherë do të kishte burim një adresë ku rrjeta nuk mund të kthejë trafikun. Lexoni listën e ndërfaqeve përpara se të modifikoni profilin.
Çfarë zgjedhin në të vërtetë local dhe remote
remote emërton peer-in që duhet kontaktuar. local lidh skajin e afërt të të njëjtit socket. nobind lë sistemin operativ të zgjedhë si adresën lokale ashtu edhe portin, dhe kjo është arsyeja pse klientët pas router-ave shtëpiakë zakonisht funksionojnë pa asnjërën nga dy direktivat.
Asnjëra direktivë nuk ka lidhje me adresën brenda tunelit.
Në një kontejner ose në një hapësirë emrash rrjeti zbatohet i njëjti rregull me kufij më të ngushtë: adresat e hostit nuk janë të pranishme brenda, prandaj një rresht local i kopjuar nga konfigurimi i hostit dështon për një arsye krejt tjetër sesa do të dështonte një adresë e gabuar.
ip -brief address show
ip route get 203.0.113.10Adresa e brendshme vjen nga serveri
Adresa brenda tunelit negociohet ose caktohet pasi vendoset kanali i kontrollit. Me një pool dinamik serveri vendos për të në momentin e lidhjes, dhe me konfigurim specifik për klientin mund të jetë fikse për çdo identitet.
Të shkruash local me një adresë të brendshme nuk i kërkon serverit ta caktojë atë adresë. Në rastin më të mirë bind-i dështon; në rastin më të keq klienti gjen një adresë hosti të palidhur me të njëjtën vlerë dhe fillon ta përdorë për transportin.
Ndërfaqet që duhen lexuar janë gjithashtu të tjera. Parametrat ifconfig dhe konfigurimi i pool-it përshkruajnë brendësinë, ndërsa remote, local, proto dhe nobind përshkruajnë jashtësinë. Mbajtja e këtyre dy listave të ndara shpjegon pothuajse çdo shembull konfuz që do të gjeni në një forum. Për këtë arsye manual i OpenVPN 2.6 i dokumenton në seksione të veçanta.
Kurthi: një tunel i plotë që kap transportin e vet
Pasi tuneli është ngritur dhe mbart rrugën e parazgjedhur, paketat që e mbajnë gjallë nuk duhet të drejtohen brenda tij. Ky është një problem rrugëtimi dhe jo adresimi, dhe daemon-i e trajton duke instaluar një rrugë më specifike drejt adresës së vetë serverit përmes gateway-it origjinal.
Nëse e lidhni transportin me një adresë lokale të caktuar dhe më vonë ndryshoni rrugën që përdor ajo adresë, lidhja e jashtme mund të humbasë rrugën ndërsa pjesa e brendshme mbetet e konfiguruar. Tuneli vazhdon të raportojë i lidhur sepse brendësia është në rregull. Vetëm transporti është prishur, dhe prandaj regjistrat lexohen si kontradikta.
Simptomat atëherë duken si një tunel që lidhet dhe ngrihet, ose si një tunel që rilidhet në cikël pa një gabim të dobishëm. Kontrolloni rrugën drejt adresës së peer-it përpara se të kontrolloni çdo gjë brenda tunelit, dhe konfirmoni se adresa lokale që lidhët i përket ende ndërfaqes që prisnit.
Një zakon që parandalon konfuzionin
Lexoni çdo adresë në një profil dhe vendosni se cilit shtresë i përket përpara se ta modifikoni.
Nëse emërton skajin e largët të transportit ose lidh skajin e afërt të tij, është adresë e jashtme dhe duhet të ekzistojë përpara nisjes. Nëse përshkruan çfarë ndodh brenda tunelit, vjen nga serveri ose nga topologjia, dhe asnjë direktivë lokale nuk mund ta zëvendësojë.
Shkruajini dy listat në shënimet e vendosjes pranë profilit. Sesioni i radhës i zgjidhjes së problemeve fillon atëherë me shtresën dhe jo me një hamendësim.