In OpenVPN-klant kiest ien adres, de tsjinner antwurdet fan in oar, en de tunnel komt nea omheech. It tsjinnerloch lit sjen dat it pakket oankomt en in opname lit in antwurd sjen dat fuortgiet, dat de flater wurdt by de klant lein. Op in host mei ferskate ynterfaces, of ferskate adressen op ien ynterface, binne de beide kanten it der gewoan net oer iens hokker adres brûkt wurdt. It antwurd is jildich op de IP-laach, dochs in protte klanten smite in datagram fuort wêrfan't de boarne net it adres is dat se benadere hawwe.

Wat de klant sjocht as de boarne feroaret

In UDP-sokkel dy't net oan in beskaat lokaal adres bûn is, hat gjin fêste boarne, dat de kernel kiest ien op it stuit fan ferstjoeren. Dy kar komt fan in rûtesyk nei it adres fan de klant, en de boarne wurdt it adres fan 'e ynterface dy't de syk kiest. Op in masine mei ien ynterface is de kar ûnsichtber; op in host mei in beheardersadres, in iepenbier adres en in sekundêr adres op deselde netwurkkaart hinget it ôf fan rûtemetrics en belied. Beliedsrûtering makket de misferhâlding wierskynliker ynstee fan minder, want in regel kin in uplink kieze dy't de klant nea berikt hat. In standertrûte leard fan ien oanbieder plus in boarneregel dy't nei in oare wiist is genôch om it te meitsjen.

Klanten dy't antwurden filterje, en ferbiningstracking dy't it krekte fjouwertal en de boarne ferwachtet, smite it antwurd fuort sûnder nuttige melding. Dan ferrint de tunnel as wie der neat oankommen, en dêrom wurdt dit fersjoen foar in firewallprobleem oan 'e klantekant. In opname dy't allinnich op de tsjinner nommen is, befêstiget de flater ynstee fan him te ferklearjen, want it antwurd giet wier fuort. Fergelykje de boarne fan it antwurd mei it adres dat de klant keazen hat foardat jo eat oars feroarje.

Wat de opsje multihome eins docht

De rjochtline wurdt as multihome yn in konfiguraasjebestân skreaun en as --multihome op de kommandorigel, en hy makket dat in UDP-tsjinner antwurdet fan it adres dat it pakket fan de klant berikt hat. De kernel leveret it oarspronklike bestimmingsadres as bykommende gegevens by ûntfangst, en OpenVPN brûkt dy wearde as boarne foar it antwurd. Sa gedraacht in tsjinner dy't op in wyldkaartadres harket, local 0.0.0.0 foar IPv4 of syn IPv6-ekwivalint, him as hie elke klant in eigen harker berikt. Klanten dy't troch it iepenbiere adres binnenkamen, krije antwurden fan it iepenbiere adres, en klanten op in yntern adres krije se fan dat adres. Neat oars yn it pakketpaad beweecht: de rûte, de filterregels en de tunnelkonfiguraasje bliuwe krekt sa't se wiene.

Krekt dy lêste eigenskip is wêrom't de opsje feilich is om ta te foegjen oan in oars goed wurkjende tsjinner, en ek wêrom't er in filter net reparearje kin dat mar ien adres talit. It pakket moat noch altyd akseptearre wurde op it paad dat it nimt, dat de boarnekorreksje feroaret de oarsprong fan it antwurd en neat mear. Hy is ek allinnich foar UDP: in TCP-harker hat dit probleem net yn deselde foarm, want de ferbining wurdt identifisearre troch it fjouwertal en net troch it boarnextadres fan it antwurd.

Wannear't in fêst lokaal adres de ferkearde standert is

Foardat jo nei de opsje gripe, kontrolearje oft de tsjinner ien beskaat lokaal adres bynt, want in bûne harker antwurdet altyd fan dat adres. Dat is goed foar in ynset mei ien ynterface en ferkeard sa gau't klanten legitym mear as ien adres brûke. As de bining opsetlik wie, beslute dan oft de tsjinner ferkear op ekstra adressen akseptearje moat. It fuortheljen fan 'e bining fergruttet de bleatstelling, dat de tastiene ynterfaces en boarnenetwurken moatte troch de tsjinst en it filter ôftwongen wurde, net allinnich troch it biningadres.

De OpenVPN-referinsje beheint de opsje ta UDP-tsjinners, neamt de ekstra ferwurking yn it pakketpaad en registrearret hokker platfoarms him stypje. Befêstigje dat op 'e ynstallearre ferzje foardat jo derom hinne planje. Wêr't er net stipe wurdt, is it byntsjen fan it beskaat adres of it reparearjen fan 'e weromrûte it alternatyf, en beide binne nauwere feroarings as't se op it earste each lykje. Wyldkaartharkjen hat ek gefolgen bûten antwurden: in tsjinner op alle adressen is berikber fan elk netwurk dêr't de host oan ferbûn is, en dat is miskien net de bleatstelling dy't immen bedoelde.

Bewiis de boarne fan it antwurd fan bûten

Test fan bûten de tsjinner, en skriuw it krekte adres en ferfier op dat de klant brûkt hat foardat jo eat opnimme. De trije probes hjirûnder beantwurdzje trije ferskillende fragen, en de folchoarder is fan belang.

tcpdump -ni any udp port 1194
ss -lunp 'sport = :1194'
ip route get 203.0.113.10 from 198.51.100.20

De opname lit it boarnextadres op it antwurd sjen, en dat is it feit dêr't dit hiele artikel om draait. De sokkelist lit sjen wat de tsjinner eins bûn hat, want in wyldkaartharker en in beskaat harker lykje itselde yn in konfiguraasjebestân en gedrage har oars op it netwurk. De rûtesyk lit de boarne sjen dy't de kernel foar dy stream kieze soe, en dat ferklearret de opname foardat jo eat feroarje. Werhelje alle trije foar IPv4 en IPv6 apart, want it binne aparte harkers en aparte syks, en in wyldkaartynskriuwing foar ien famylje seit neat oer de oare.

Rûtering, ûntdekking en filtering bliuwe apart

It behâlden fan 'e boarne fan it antwurd ynstallearret gjin útgeande rûte, bywurket gjin dynamyske DNS en makket net dat ien adresfamylje de oare akseptearret. Op in tsjinner mei ferskate uplinks moat it werompaad foar elke boarne bewust ôfpraat wurde, oars ferlitte antwurden in ynterface dy't it filter fan 'e klant nea tastien hat. Likegoed moat in nij adres nei in foarheakselferoaring de klanten berikke fia ûntdekking en de stipe werferbiningsstream, net fia de âlde registraasje.

Lit de identiteitskontrôles fan 'e tsjinner en de sertifikaatferifikaasje krekt sa't se binne, want in feroare adres rjochtfeardiget it akseptearjen fan in net-ferifisearre partner net. As it antwurd no fan 'e bedoelde boarne fuortgiet en de tunnel noch altyd mislearret, beskôgje it boarneprobleem as oplost en gean fierder. De folgjende waarnommen flater heart by rûtering, filtering of autentikaasje, en de harker wer feroarje sil dêr net komme. Skriuw de boarne fan it antwurd yn it ticket njonken it adres dat de klant keazen hat, sadat de folgjende persoan itselde feit mei ien opdracht neisjen kin.

Relatearre artikelen