WireGuard radi na mobilnim podacima, ali ne na istoj wifi mreži
Zahtjev iz unutrašnjosti LAN-a prema javnoj adresi usmjerivača ide drugim putem od zahtjeva preko mobilnih podataka. Testirajte izvana, zatim odaberite lokalni put.
Tunel se podiže na mobilnim podacima i zatim ostaje na povezivanju kod kuće, s istim profilom, istim peer ključem i bez promjene konfiguracije između. Razlika je u putu: zahtjev iz unutrašnjosti LAN-a prema javnoj adresi usmjerivača nije isto putovanje kao zahtjev koji dolazi s interneta. Većina kućnih pristupnika ili uopće ne primjenjuje povratni put ili ga primjenjuje samo za određene protokole. Zbog toga simptom izgleda kao pokvaren ključ iako se u ključu ništa nije promijenilo. Utvrdite koji je put zakazao prije nego što dotaknete ključ, prosljeđivanje porta ili profil klijenta.
Jedna adresa, dva različita puta
Izvana paket stiže do javne adrese usmjerivača i pravilo za prosljeđivanje porta predaje ga slušatelju WireGuard-a na unutarnjem hostu. Iznutra klijent bira istu javnu adresu, pa paket napušta klijenta, stiže do usmjerivača i mora se okrenuti natrag prema LAN-u. Upravo na tom okretanju dva se puta razdvajaju, jer usmjerivač mora prevesti tok koji istodobno izlazi i ponovno ulazi kroz isto sučelje. Mnoge implementacije ga odbacuju umjesto da ga prevedu, i klijent zatim čeka rukovanje koje nikada nije poslano.
To se ponašanje obično naziva NAT loopback ili hairpinning i pripada usmjerivaču, a ne WireGuard-u; RFC 4787 opisuje slučajeve prijevoda u kojima pristupnik može ili ne može to podržavati. Sam WireGuard nema mišljenje o putu jer vidi samo pakete koji stižu do njegova sučelja. Kada usmjerivač odbaci tok, daemon nikada ne prima ništa, klijent prijavljuje istek vremena za rukovanje, a zapisnik poslužitelja ostaje prazan. Prazan zapisnik zato je trag o tome gdje se paket zaustavio, a ne dokaz da je poslužitelj pao. To je i razlog zašto ponovna instalacija ništa ne mijenja.
I obrnuto je važno: zapisnik poslužitelja koji pokazuje pokušaj rukovanja s adrese LAN-a dokazuje da je paket stigao i da je put u redu, što istragu preusmjerava na ključeve i dopuštene adrese. Čitajte zapisnik zbog onoga što dokazuje, a ne zbog onoga čemu ste se nadali.
Reproducirajte prije nego što išta promijenite
Testirajte iz ovlaštene vanjske mreže s istim uređajem i istim profilom, zatim ponovite test unutar LAN-a bez ikakva uređivanja. Završeno rukovanje izvana i klijent koji iznutra nikada ne napušta uređaj reproduciraju stanje umjesto da ga nagađaju. Oba pokušaja moraju koristiti isti profil, inače usporedba ništa ne dokazuje.
Zatim pogledajte u što se razrješava naziv krajnje točke za ovaj uređaj. Sljedeće tri naredbe pokazuju i koju je adresu klijent doista birao:
wg show wg0 endpoints
dig +short vpn.example.net A
resolvectl query vpn.example.netPrva naredba prijavljuje krajnju točku koju sučelje trenutačno koristi, a druge dvije pokazuju u što se naziv razrješava na ovom računalu. Klijent koji bira javnu adresu dok je na istoj mreži kao poslužitelj koristi put hairpin. Klijent koji bira adresu LAN-a to ne čini, a kvar ondje pripada drugoj istrazi. Ta razlika odlučuje primjenjuje li se sljedeće poglavlje uopće.
Podržani načini dolaska do obližnjeg poslužitelja
Najčišći je raspored s podijeljenim horizontom: javni se naziv razrješava na javnu adresu za internet i na adresu LAN-a poslužitelja za klijente iznutra. Profil čuva jedno ime krajnje točke, a razrješivač bira put. To traži kontrolu nad unutarnjim DNS odgovorom, koju kućni usmjerivač obično nudi, a organizacija je može namjerno urediti. Bez te kontrole ostaju funkcija usmjerivača ili drugi profil.
Funkcija usmjerivača je refleksija: pristupnik prevodi tok iznutra prema van i šalje ga natrag unutra. Gdje radi, ne treba nikakva promjena klijenta, a gdje ne radi, nijedna klijentska postavka ga neće spasiti. Testirajte je promatranjem zapisnika poslužitelja tijekom unutarnjeg pokušaja umjesto čitanjem popisa funkcija usmjerivača.
Uređivanje profila na privatnu adresu dijagnostika je, a ne projekt. Dokazuje da poslužitelj odgovara na LAN-u i kvari isti profil u trenutku kada prijenosnik napusti kuću.
| Approach | What it depends on | Where it fails |
|---|---|---|
| Split-horizon name | Control of the internal DNS answer | Clients that resolve through a server outside the zone |
| Router reflection | Gateway support for hairpin translation | Routers that drop the flow silently |
| Private address in the profile | Nothing beyond the LAN | Every network except the one at home |
Držite profil upotrebljivim izvan kuće
Koji god put odabrali, ostavite provjeru identiteta na miru. Adresa krajnje točke nije identitet peer-a, a promjena adrese nikada ne opravdava prihvaćanje tuđeg javnog ključa koji slučajno odgovara. WireGuard autentificira ključem, pa pogrešan host pada na rukovanju umjesto da dâ pristup nečemu neočekivanom.
Ako se javna adresa pomakne, dinamički DNS je ono što čuva naziv korisnim, a ponašanje osvježavanja klijenta odlučuje koliko brzo promjena stiže. Testirajte to izvana nakon promjene adrese jer slučaj LAN-a to ne može potvrditi. Pazite na razrješivač koji kešira stari odgovor dulje od života zapisa. Naziv koji još pokazuje na prethodnu adresu izgleda točno kao poslužitelj koji je pao.
Zapišite koji naziv profil koristi i u što se razrješava sa svake strane granice. Profil koji ovisi o funkciji usmjerivača koju nitko nije zabilježio jest poziv podršci koji čeka sljedeće ažuriranje firmvera. Bilješka također govori sljedećoj osobi je li unutarnji kvar poznati slučaj hairpin ili nešto novo.