Odgovor izlazi preko LAN-a, a ne kroz tunel: zašto i kako
Zahtjev koji stigne kroz tunel ne znači da će odgovor otići istim putem. Linux traži odredište, a lokalna podmreža obično pobjeđuje.
Usluga objavljena kroz pristupnik radi s većine interneta, a ne radi iz jedne kancelarije. Neko provjeri tunel, vidi da zahtjev stiže i zaključi da odgovor mora ići istim putem natrag. Linux ne radi tako i nikakvo pregledanje tunela to neće promijeniti. Odgovor se usmjerava prema odredištu, a taj jedan neuspjeli pozivatelj nalazi se u podmreži do koje host već dolazi izravno.
Šta zapravo odlučuje o odlaznom paketu
Jezgro traži rutu za odredište paketa, pregledajući pravila politike po redu prioriteta, a zatim tablicu koju odabere odgovarajuće pravilo. Sučelje na koje je paket stigao nema nikakvu ulogu osim ako pravilo ili oznaka nisu napisani da to bude važno. To je činjenica o usmjeravanju na ovom hostu, a ne kvar u tunelu.
Zahtjev primljen kroz tunel zato može proizvesti odgovor koji izlazi kroz fizičko sučelje, pa tok postane jednosmjeran bez toga da bilo koji uređaj prijavi grešku. Provjerite oba smjera prije nego zaključite nešto o tunelu. Odgovor koji ode na pogrešnu stranu nestaje iz brojača tunela, zato se dva kraja ne slažu oko toga je li nešto poslano. Zabilježite koji se brojač promijenio prije nego dirnete pravilo.
Zašto lokalna podmreža pobjeđuje
Host s adresom na lokalnoj mreži ima povezanu rutu za taj prefiks u glavnoj tablici, a povezana ruta je izravno podudaranje. Kad pozivatelj dolazi iz te iste podmreže, pretraga nađe lokalni link prije nego što se tunel uopće razmotri.
Upravo ta asimetrija čini dijagnozu zbunjujućom. Pozivatelji iz šireg interneta rade jer se ne podudaraju ni s jednom lokalnom rutom, dok jedini pozivatelj koji dijeli uredski prefiks ne uspijeva, a to je upravo pozivatelj s kojim neko testira.
Pokrivenost peerova nije isto što i instalirane rute
Na strani tunela, dopušteni rasponi peera opisuju što se smije slati u tunel i koji se izvori iz njega prihvaćaju. Oni ne govore ništa o tome kamo će lokalna tablica usmjeravanja poslati paket.
Ako alat za tunel instalira zadanu rutu na hostu, može uvući nepovezan promet u tunel kao kolateralnu štetu. Tamo gdje bi odluku trebalo da donosi pravilo politike, opcija instaliranja ruta postoji upravo zato da to spriječi, a adrese, ključevi i postavke krajnje točke ostaju točno kao što su bili. Zadana ruta dodana radi udobnosti čest je način da host izgubi vlastitu lokalnu mrežu.
Odaberite tablicu prema adresi izvora
Pravilo zasnovano na izvoru šalje odgovore s adrese usluge u privatnu tablicu kojoj je zadana vrijednost tunel, dok sve ostalo nastavlja koristiti glavnu tablicu. Odaberite brojeve tablice i prioriteta koji se lokalno ne koriste i pročitajte postojeća pravila prije nego što bilo šta umetnete. Čitajte živa pravila, a ne sačuvanu datoteku, jer se ta dva mogu razlikovati nakon ponovnog pokretanja.
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 unreachablePosljednji red čini da nedostajuća ruta vidljivo ne uspije umjesto da se vrati na lokalni link. Izvor mora zaista biti dodijeljen hostu, a obične lokalne i glavne pretrage moraju ostati na svojim ranijim pozicijama. Pravilo odabire tablicu prema izvoru; ono ne poredi dužine prefiksa među tablicama.
Prvo potvrdite put, zatim uslugu
Pitajte jezgro šta bi učinilo umjesto da zaključujete iz snimke, koristeći adresu usluge kao birač izvora. Pogrešan odgovor ovdje štedi cijeli trag paketa.
ip -6 route get 2001:db8:bb::30 from 2001:db8:aa::20Izlaz bi trebao navesti tunel. Zatim testirajte izvor koji niste dirali i potvrdite da i dalje koristi lokalni link, tako da je promjena ostala ograničena na jednu adresu. Širi birač ne bi dokazao ništa o prvobitnoj pritužbi.
Šta ovo ne popravlja
Ostavite prosljeđivanje, pravila vatrozida i ponašanje ICMPv6 na pristupniku kakvi su bili, jer ruta izvora ne zamjenjuje nijedno od toga. Nedostajuća poruka Packet Too Big i dalje kvari velike odgovore bez obzira na to koja je tablica dobila pretragu. Popravite to prije dodavanja pravila usmjeravanja, inače će simptom nadživjeti promjenu.
Potvrdite model objavljivanja prije nego što primijenite bilo šta od ovoga. Obrnuti proxy koji otvara vlastitu vezu prema backendu predstavlja vlastiti izvor i ne čuva pozivatelja, pa se taj kvar ne može javiti u tom dizajnu. Primjena pravila tamo dodala bi izuzetak u usmjeravanju koji ništa ne rješava i skriva pravi uzrok.
Na kraju, upišite brojeve pravila i tablicu u upravljanje konfiguracijom hosta. Pravilo politike dodano ručno nestaje pri sljedećem ponovnom izgrađivanju, a uredski pozivatelj vraća se s istom pritužbom.