OpenVPN: local mot tunneladressa, to ulike soklar
Adressa som kontaktar tenaren er ikkje adressa inne i tunnelen. Å lese local, remote og nobind som skilde roller forklarer dei fleste bindfeila.
Klienten nektar å starte og klagar over at han ikkje kan binde ei lokal adresse, og den openberre rettinga ser ut som å peike han mot tunneladressa han ventar å få. Det kan ikkje fungere, og grunnen er verdt å forstå: før tunnelen finst er det inga innsideadresse, og soklen som kontaktar tenaren må finnast først. Det er to ulike adresser med i spelet, og berre éi av dei kan veljast lokalt.
Bindfeilen nemner ei lokal adresse
Når OpenVPN melder at det ikkje kan binde ei lokal adresse, handlar det om transportsoklen: UDP- eller TCP-endepunktet som ber den krypterte sambandet til peer-en.
Eit eksplisitt local-direktiv ber daemonen binde den soklen til ei bestemd lokal adresse. Adressa må finnast i nettverksnamnerommet der prosessen køyrer, og ho må kunne tildelast i det klienten startar.
Ei offentleg adresse som blir omsett i ein ruter eller på ein skylkant er ikkje ei lokal adresse daemonen kan binde, sjølv om det er adressa tenaren ser. Den skilnaden forklarer kvifor éin profil fungerer heime og feilar på ein skyinstans. Han forklarer òg kvifor det ikkje hjelper å leggje den offentlege adressa til eit loopback-grensesnitt, sidan transporten då ville hente kjelda si frå ei adresse nettverket ikkje kan rute tilbake til. Les grensesnittlista før du endrar profilen.
Kva local og remote faktisk vel
remote nemner peer-en som skal kontaktast. local bind den nære enden av same soklen. nobind lèt operativsystemet velje både lokal adresse og port, og difor fungerer klientar bak heimeruterar normalt utan noko av dei to direktiva.
Ingen av dei to direktiva har noko med adressa inne i tunnelen å gjere.
I ein container eller eit nettverksnamnerom gjeld same regelen med trongare grenser: adressene til verten finst ikkje på innsida, så ei local-linje kopiert frå vertskonfigurasjonen feilar av ein heilt annan grunn enn ei feil adresse ville gjere.
ip -brief address show
ip route get 203.0.113.10Innsideadressa kjem frå tenaren
Adressa inne i tunnelen blir forhandla eller tildelt etter at kontrollkanalen er oppretta. Med ein dynamisk pool avgjer tenaren ho ved tilkopling, og med klientbunden konfigurasjon kan ho vere fast per identitet.
Å skrive local med ei innsideadresse ber ikkje tenaren om å tildele den adressa. I beste fall feilar bindinga; i verste fall finn klienten ei urelatert vertsadresse med same verdi og byrjar å bruke ho til transporten.
Grensesnitta ein skal lese er òg andre. ifconfig-parametrar og poolkonfigurasjon skildrar innsida, medan remote, local, proto og nobind skildrar utsida. Å halde dei to listene frå kvarandre forklarer nesten kvart forvirrande døme du finn i eit forum. Derfor dokumenterer OpenVPN 2.6-handboka dei i eigne avsnitt.
Fella: ein full tunnel som fangar sin eigen transport
Når tunnelen er oppe og ber standardruta, må pakkane som held han oppe ikkje rutast inn i han. Det er eit ruteproblem og ikkje eit adresseringsproblem, og daemonen handterer det ved å leggje inn ei meir spesifikk rute til tenaren si eiga adresse gjennom den opphavlege gatewayen.
Viss du festar transporten til ei bestemd lokal adresse og seinare endrar vegen den adressa brukar, kan den ytre sambandet miste retninga medan innsida held seg konfigurert. Tunnelen held fram med å melde tilkopla fordi innsida er i orden. Berre transporten er broten, og difor les loggane som motsetnader.
Symptoma ser då ut som ein tunnel som koplar til og frys, eller ein som koplar til på nytt i ei løkke utan nyttig feil. Sjekk ruta til adressa til peer-en før du sjekkar noko inne i tunnelen, og stadfest at den lokale adressa du bant, framleis høyrer til grensesnittet du venta.
Ein vane som hindrar forvirringa
Les kvar adresse i ein profil og avgjer kva lag ho høyrer til før du endrar ho.
Viss ho nemner den fjerne enden av transporten eller bind den nære enden av han, er ho ei utsideadresse og må finnast før oppstart. Viss ho skildrar det som skjer inne i tunnelen, kjem ho frå tenaren eller frå topologien, og ingen lokalt direktiv kan erstatte ho.
Skriv dei to listene i utrullingsnotatane ved sida av profilen. Den neste feilsøkingsøkta byrjar då med laget i staden for med ein gissing.