Рукапоціск ёсць, адрас знік: тры станы WireGuard
Свежы рукапоціск даказвае, што партнёр адказаў, а не тое, што інтэрфейс захоўвае свой адрас ці што наступны пакет пойдзе патрэбным каналам.
WireGuard можа адначасова мець свежы рукапоціск і не мець адраса, і гэты стан узгоднены, а не супярэчлівы. Рукапоціск — гэта падзея партнёра, адрас належыць інтэрфейсу, а маршрут вырашае, праз які канал пакет выходзіць. Тры ўзроўні, тры ўладальнікі, і кожны можа адмовіць, пакуль два іншыя выглядаюць здаровымі.
Чытанне іх як аднаго статусу — гэта тое, што ператварае двуххвілінную дыягностыку ў цэлую пасляабедзенную пару з перазапускам службаў.
Рукапоціск — падзея партнёра, а не падзея адрасацыі
Рукапоціск WireGuard даказвае, што наладжаны партнёр адказаў слушным ключом і што ключы сеансу актуальныя. Ён нічога не кажа пра лакальны адрас на інтэрфейсе і нічога пра тое, ці паказвае туды які-небудзь маршрут. Адрас прызначае дапаможнік або сеткавы менеджэр, а канфігурацыя пратаколу толькі называе партнёраў і ключы. Блытаніна паміж гэтымі двума — гэта тое, праз што здаровы рукапоціск чытаюць як працоўны тунэль.
Вось чаму wg show можа паведаміць пра рукапоціск узростам у секунды на інтэрфейсе, які не можа прыняць ніводнага пакета ад праграмы.
Менеджэр, які перастварае інтэрфейс, можа скінуць адрас, не кранаючы канфігурацыі партнёра, і наступны рукапоціск адразу паспяховы, бо ключы не мяняліся. Радок у журнале пра паспяховы рукапоціск дакладны і не мае дачынення да збою.
| Observation | Which layer it belongs to | Wrong conclusion it invites |
|---|---|---|
| Handshake a few seconds old | Peer and keys | The tunnel is usable for application traffic |
Address present on wg0 | Interface configuration | Traffic actually egresses through it |
Route points at wg0 | Forwarding table | The outer packet uses the intended uplink |
Адрас інтэрфейса мае свайго ўладальніка
Адрас на тунэльнай прыладзе можа паходзіць з радка Address дапаможніка, з кліента DHCP, які працуе на інтэрфейсе, або з дэмана кіравання, які стварае яго ў момант падключэння. Чым бы ён ні быў, гэты кампанент валодае адрасам і аднавіць яго ці не паводле сваёй логікі. Чытанне адраса без назвы яго ўладальніка пакідае вас без тлумачэння, чаму ён знік.
Два ўладальнікі на адным інтэрфейсе — класічны збой. Запуск дапаможніка і працоўнага сеткавага менеджэра на адной прыладзе стварае гонку, у якой адзін выдаляе тое, што другі толькі што наладзіў, а канчатковы пункт увесь час адказвае.
Выберыце аднаго ўладальніка і дазвольце іншаму інструменту назіраць, а не кіраваць. Гэтае рашэнне варта запісаць, бо сімптом з’яўляецца праз тыдні і выглядае як выпадковая страта адраса.
Маршрут выбірае канал, а не інтэрфейс
Унутраны маршрут, які паказвае на wg0, вырашае, што трафік уваходзіць у тунэль. Асобнае рашэнне накіроўвае зашыфраваныя знешнія пакеты да партнёра, і на хосце з некалькімі каналамі гэтае рашэнне паходзіць з табліцы перасылкі і правілаў палітыкі. Wi-Fi-роўмінг можа змяніць знешні шлях, не кранаючы ўнутранага адраса.
Такім чынам, працоўны тунэль і недасяжны партнёр — сумяшчальныя станы, як і слушны партнёр з паламаным унутраным маршрутам. Тры назіранні трэба браць разам, у адзін момант, інакш параўнанне не мае сэнсу.
Параўнайце тры станы за адзін праход
Тры каманды толькі для чытання адказваюць на тры пытанні ў парадку, які найхутчэй ізалюе збой. Запусціце іх, нічога не змяняючы паміж імі.
ip address show dev wg0
ip route get 10.80.0.1
wg show wg0 latest-handshakes transfer
Першая паказвае, ці мае інтэрфейс адрас наогул, а другая — якую прыладу цяпер выкарыстаў бы пэўны пункт прызначэння. Трэцяя паведамляе час апошняга рукапоціску і лічыльнікі байтаў, і толькі яна адна з трох апісвае партнёра, а не лакальны хост.
Чытайце лічыльнікі разам з адзнакай часу. Рукапоціск, які пастаянна абнаўляецца, пакуль перадача стаіць на месцы, азначае, што партнёр адказвае, але нічога карыснага не праходзіць, і гэта паказвае на маршрутызацыю або ACL, а не на ключы. Адзнака часу, якая перастае расці пры наяўнасці адраса, паказвае ўверх па плыні. Абодва прачытанні паходзяць з аднаго радка вываду, і ні адно не бачнае, калі вы правяраеце толькі наяўнасць рукапоціску.
Выпраўце канкрэтны стан, які няправільны, затым пераправерце праграму, а не тунэль. Свежы рукапоціск — гэта доказ пра партнёра, а доказ пра партнёра не з’яўляецца доказам таго, што наступны запыт з вашага браўзера знойдзе адрас, маршрут і працоўны канал. Кіраўніцтва wg-quick ясна кажа, што з гэтага наладжвае дапаможнік, а што належыць пратаколу.