2
« Poslední příspěvek od PetrD kdy Dnes v 17:39:49 »
Ahoj,
řeším zajímavý problém s Wireguardem. Pokusím se popsat, o co jde a čemu nerozumím, třeba mi někdo znalejší poradí.
TL&DR verze:
Existuje v síti O2 nějaká automatika, která by mohla být zodpovědná za to, že se po několika dnech razantně zvýší packet loss ve Wireguard tunelu mezi dvěma lokalitami?
Delší verze včetně detailů a popisu chování:
Mám dvě lokality (doma a chalupa). V každé se nachází router od O2 a za ním Mikrotik. Lokality jsou propojeny Wireguard tunelem mezi těmi Mikrotiky. Schéma tedy vypadá takto:
MT1 -- R1 ------ R2 -- MT2
Jednička je doma, dvojka chalupa. "R" jsou routery od O2, "MT" jsou Mikrotiky.
R1 je O2 5G box (TP-Link NX510v), R2 je starší LTE modem také od TP-Linku, model MR200.
R1 má veřejnou IP a port 12345 přesměrovaný na port 12345 na MT1.
MT1 funguje jako Wireguard server, ke kterému se MT2 připojuje.
Tunel v této konfiguraci většinu času funguje bez potíží a komunikace mezi sítěmi "1" a "2" taktéž. Na jednom terminálu v síti "1" mi neustále běží ping na MT2, takže hned vidím, že je vše v pořádku. Ping posílám v dávkách po 100 paketech se standardním intervalem 1 paket za vteřinu.
A teď ten problém:
Čas od času, většinou po několika dnech, tunel začne zlobit. Poznám to tak, že se skokově zvýší packet loss na tom pingu. Ze standardních 0% naroste na 87-88% dost zvláštním způsobem. Zatímco za normálního stavu vypadá výstup pingu takto:
64 bytes from 192.168.200.1: icmp_seq=1 ttl=63 time=53.0 ms
64 bytes from 192.168.200.1: icmp_seq=2 ttl=63 time=292 ms
64 bytes from 192.168.200.1: icmp_seq=3 ttl=63 time=231 ms
64 bytes from 192.168.200.1: icmp_seq=4 ttl=63 time=195 ms
64 bytes from 192.168.200.1: icmp_seq=5 ttl=63 time=147 ms
64 bytes from 192.168.200.1: icmp_seq=6 ttl=63 time=107 ms
64 bytes from 192.168.200.1: icmp_seq=7 ttl=63 time=64.0 ms
atd.,
za nenormálního stavu vypadá takhle:
64 bytes from 192.168.200.1: icmp_seq=6 ttl=63 time=235 ms
64 bytes from 192.168.200.1: icmp_seq=14 ttl=63 time=129 ms
64 bytes from 192.168.200.1: icmp_seq=22 ttl=63 time=69.5 ms
64 bytes from 192.168.200.1: icmp_seq=30 ttl=63 time=235 ms
64 bytes from 192.168.200.1: icmp_seq=38 ttl=63 time=152 ms
64 bytes from 192.168.200.1: icmp_seq=46 ttl=63 time=51.9 ms
64 bytes from 192.168.200.1: icmp_seq=54 ttl=63 time=248 ms
64 bytes from 192.168.200.1: icmp_seq=62 ttl=63 time=128 ms
atd.,
tedy projde vždy každý 8. paket.
V rámci detailnějšího zkoumání jsem zkusil posílat ping rychleji nebo pomaleji a opravdu se zdá, že tunel funguje pouze na krátký okamžik každých 8 vteřin.
Další pozorování:
V logu MT1 se nachází spousta hlášení "Handshake for peer did not complete after 5 seconds, retrying (try 2)"
(ale objevují se tam v delších intervalech než je těch 8 vteřin - cca každých 30 vteřin až několik minut)
Ve 2 z posledních 3 případů tunel začal zlobit ve 3:40 ráno (starší logy z MT1 bohužel nemám), což může být náhoda, ale je to přinejmenším zvláštní.
I při zlobícím tunelu funguje připojení k internetu v obou lokalitách bez problému.
Tunel někdy začne fungovat po resetu R1, jindy po resetu R2.
Zatím nikdy nezačal fungovat po resetu MT1 nebo MT2.
Někdy tunel začne po náhodné době fungovat normálně sám od sebe.
A nejzajímavější zjištění:
Při zlobícím tunelu se téměř nedá přihlásit ze sítě "1" přes SSH na stroje v síti "2" - pokus o přihlášení v naprosté většině případů skončí timeoutem, což je vzhledem k chování tunelu pochopitelné.
Ale: když si otevřu více terminálů, třeba 10, a pokusím se o SSH přihlášení ve všech současně, tak tunel jako zázrakem začne fungovat normálně - jako bych ho tím "prošťouchnul" - a funguje zase třeba několik dní, než začne znovu zlobit.
Na základě těchto pozorování soudím, že se nejedná o problém konfigurace Wireguardu ani o problém Mikrotiků MT1 nebo MT2, ale spíš buď o problém s jedním z routerů R1/R2 nebo o "něco" v síti O2 (případně jinde na trase), kdy je ten Wireguard tunel v rámci nějakého monitoringu čas od času vyhodnocený jako podezřelý/nežádoucí a jeho provoz začne být nějakým způsobem filtrovaný. Ale o fungování sítě O2 v tomhle ohledu nic nevím a síťařina není úplně můj obor, tak bych se nechtěl pouštět do spekulací.
Spíš bych se rád zeptal někoho, kdo se v těchto věcech vyzná lépe a byl by schopen poradit, kde hledat zakopaného psa. Má cenu ptát se O2? Zkusit vyměnit R1/R2? Změnit porty, které Wireguard používá? Něco jiného?
Díky za jakékoliv rady!
(a taky za to, že jste se pročetli až sem)
Petr