In tsjinst dy 't fia in gateway publisearre is, wurket fan it grutste part fan it internet en mislearret fan ien kantoar. Ien ûndersiket de tunnel, sjocht it fersyk binnenkommen en konkludearret dat it antwurd deselde wei werom moat. Linux wurket net sa, en gjin some fan ûndersyk oan de tunnel sil it antwurd feroarje. It antwurd wurdt neffens bestimming rûte, en dy iene mislearjende opropper sit op in subnet dat de host al direkt berikt.

Wat eins oer in útgeand pakket beslút

De kernel siket in rûte foar de bestimming fan it pakket, rieplachtet beliedsregels yn prioriteitsfolchoarder en dan de tabel dy 't in passende regel kiest. De ynterface dêr 't in pakket op oankaam spilet gjin rol, útsein as in regel of in mark skreaun is om dat fan belang te meitsjen. Dat is in rûtefeit oer dizze host, gjin fout yn de tunnel.

In fersyk dat op de tunnel ûntfongen wurdt, kin dus in antwurd opleverje dat fia de fysike ynterface út giet, en de stream wurdt ienrjochting sûnder dat in apparaat in flater rapportearret. Kontrolearje beide rjochtingen foardat jo in konklúzje oer de tunnel lûke. In antwurd dat de ferkearde kant út giet, ferdwynt út de telders fan de tunnel, en dêrom binne de beide einen it net iens oft der wat stjoerd is. Merk op hokker teller beweegde foardat jo in regel oanreitsje.

Wêrom it lokale subnet wint

In host mei in adres op in lokaal netwurk hat in ferbûn rûte foar dat foarheaksel yn 'e haadtabel, en in ferbûn rûte is in direkte oerienkomst. As de opropper fan itselde subnet komt, fynt it sykjen de lokale keppeling foardat de tunnel ea yn omtinken nommen wurdt.

It is de asymmetry dy 't dit betiizjend makket om te diagnostisearjen. Oproppers fan it bredere internet wurkje om 't se gjin lokale rûte passe, wylst de iene opropper dy 't it kantoarfoarheaksel dielt, mislearret, en dat is krekt de opropper dêr 't immen mei testet.

Peer-dekking is net itselde as ynstallearre rûtes

Oan de tunnelkant beskriuwe de tastiene berikken fan in peer wat der yn de tunnel stjoerd wurde mei en hokker boarnen derút akseptearre wurde. Se sizze neat oer wêr 't de lokale rûtetabel in pakket hinne stjoert.

As it tunnelark in standertrûte op de host ynstallearret, kin it net-besibbe ferkear as sydskea de tunnel yn slepe. Wêr 't in beliedsregel ynstee de beslissing hearre moat, bestiet de opsje foar rûte-ynstallaasje fan it ark krekt om dat te foarkommen, en de adressen, kaaien en ynstellingen fan it einpunt bliuwe krekt sa as se wiene. In standertrûte dy 't foar gemak tafoege is, is in gewoane manier wêrop in host syn eigen lokale netwurk ferliest.

Kies de tabel neffens it boarne-adres

In regel op basis fan de boarne stjoert antwurden fan it tsjinstadres yn in priveetabel waans standert de tunnel is, wylst al it oare de haadtabel bliuwt brûken. Kies tabel- en prioriteitsnûmers dy 't lokaal net brûkt wurde, en lês de besteande regels foardat jo wat ynfoegje. Lês de libbene regels yn stee fan in bewarre bestân, om 't de beide ferskille kinne nei in werstart.

ip -6 route add default dev wg0 table 200
ip -6 rule add priority 32000 from 2001:db8:aa::20/128 lookup 200
ip -6 rule add priority 32001 from 2001:db8:aa::20/128 unreachable

De lêste rigel lit in ûntbrekkende rûte sichtber mislearje yn stee fan werom te fallen op 'e lokale keppeling. De boarne moat wier oan de host tawiisd wêze, en de gewoane lokale en haadsykjen moatte op har eardere posysjes bliuwe. De regel kiest in tabel op basis fan boarne; hy fergeliket gjin foarheaksel lingten tusken tabellen.

Befêstigje it paad, dan de tsjinst

Freegje de kernel wat dy dwaan soe yn stee fan út in opname ôf te lieden, mei it tsjinstadres as boarnekiezer. In ferkeard antwurd hjir sparret in hiele pakketspeuring.

ip -6 route get 2001:db8:bb::30 from 2001:db8:aa::20

De útfier heart de tunnel te neamen. Test dan in boarne dy 't jo net oanrekke hawwe en befêstigje dat dy noch de lokale keppeling nimt, sadat de feroaring beheind bleau ta ien adres. In bredere kiezer soe neat oer de oarspronklike klacht bewize.

Wat dit net reparearret

Hâld trochstjoeren, firewallregels en ICMPv6-gedrach op de gateway sa as se wiene, om 't in boarnerûte gjin ien fan dy ferfangt. In ûntbrekkende Packet Too Big-berjocht brekt noch altyd grutte antwurden, hokker tabel de syktocht ek wûn. Reparearje dat foardat jo rûteregels tafoegje, oars oerlibbet it symptoom de feroaring.

Befêstigje it publikaasjemodel foardat jo hjirfan wat tapasse. In omkearde proxy dy 't syn eigen backend-ferbining iepenet, presintearret syn eigen boarne en bewarret de opropper net, dus dizze fout kin net foarkomme yn dat ûntwerp. It tapassen fan 'e regel dêr soe in rûte-útsûndering tafoegje dy 't neat oplost en de wiere oarsaak ferberget.

Skriuw úteinlik de regelnûmers en de tabel yn it konfiguraasjebehear fan de host. In beliedsregel dy 't mei de hân tafoege is, ferdwynt by de folgjende werbou, en de kantoaropropper komt werom mei deselde klacht.

Relatearre artikelen