Кућна кутија отвара тунел и без проблема стиже до облачног сервера. Облачни сервер може да стигне до кућне апликације минут или два након што је кућна кутија последњи пут нешто послала, а затим престаје. У дневнику WireGuard-а се ништа не појављује, грешка при руковању се не пријављује, а поновно покретање тунела то кратко поправља. Тај образац је мапирање које истиче, а не покварен тунел, и упутство испод то потврђује пре него што се било шта промени.

Потврдите да образац значи истек мапирања при мировању

Разликујући детаљ је време. Ако обрнута веза ради одмах након што кућни партнер пошаље саобраћај и не успе после тихог интервала, пут је у реду, а стање у средини није. Ако никада није радила, чак и одмах након саобраћаја, то је погрешна дијагноза.

sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer

Покрените прве две одмах након што кућни партнер нешто пошаље, сачекајте пет минута и покрените их поново. Временска ознака руковања која се освежава по распореду без нове крајње тачке говори вам да је тунел жив. Променила се способност незахтеваних пакета да стижу споља, што је својство пута, а не тунела.

Затим направите обрнути покушај и гледајте бројаче преноса. Ако облачна страна шаље бајтове, а кућна не прима ниједан, пакет је напустио облак и умро у уређају који памти стање на путу. То је потпис који тражите. Ако се оба бројача померају, тунел је доставио пакет и осумњичена је апликација.

Поставите keepalive на партнера иза рутера

Трајни keepalive одржавају NAT мапирање и било које стање заштитног зида живим слањем малог аутентификованог пакета по распореду. Подешавање припада машини иза рутера, у њеном уносу за удаљеног партнера, јер је то страна чији излазни пакет ствара стање.

[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25

Спојите га са постојећим одељком партнера. Додавање другог блока са истим јавним кључем није важећи начин додавања опција, а wg-quick их неће спојити уместо вас. Документованих 25 секунди је пример изабран да буде испод уобичајених UDP рокова, а не вредност са посебним значењем.

Постављање исте директиве на облачну страну не помаже овом проблему. Пакети тог партнера већ стижу са јавне адресе, тако да у важном смеру нема шта да се сачува. То додаје саобраћај и ништа не мења.

Читајте тајмере уместо да погађате интервал

keepalive раде зато што стижу чешће него што стање истиче. То чини рок бројем који вам је заиста потребан, а на Linux-у се он може прочитати на уређају који ради превођење:

sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820

Прва вредност је рок за UDP ток који је виђен само у једном смеру, а друга важи када су одговори примећени. Оба су обично кратка, а мапирање које утихне следиће оно што важи за ваш ток.

Упоредите тај број са својим интервалом. keepalive од 25 секунди под роком од 30 секунди ради; исти keepalive под роком од 15 секунди не ради. Никакво понављање не мења ту аритметику. Неки кућни рутери и мобилни оператери користе много краће вредности од подразумеване у Linux-у, зато конфигурација која ради на једној мрежи пада на другој.

ObservationWhat it meansReasonable response
Works after traffic, dies when idleMapping or firewall state expiringLower the keepalive interval
Never works, even immediatelyNo return route, listener or firewallStop tuning keepalive
Works for hours, then dies onceCarrier-side translation or address changeCheck the endpoint and logs together

Проверите слушаоца и заштитни зид одвојено

Живо мапирање је неопходно и није довољно. Апликација на кућној кутији мора да слуша на исправној адреси, а заштитни зид домаћина мора да дозволи пакет након дешифровања.

sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health

Ако је сокет везан само за адресу физичког интерфејса, а не за адресу тунела, пакети који стижу кроз тунел се одбацују пре него што се заштитни зид уопште пита. Тај квар са облачне стране изгледа исто као проблем мапирања и преживљава свако подешавање keepalive-а.

Провера дозвољене листе је исто толико важна у другом смеру. Облачни партнер мора да дозволи адресу кућног тунела као извор ако ће да одговори, а кућни партнер мора да дозволи облачну адресу као одредиште. keepalive пакети су аутентификован саобраћај и примењују иста правила, зато keepalive који изгледа да ради може да постоји уз апликацију која не ради.

Спроведите промену и знајте њене границе

Примените подешавање, поново покрените интерфејс ако је то ваш начин ажурирања, а затим поновите тест мировања уместо непосредног теста. Сачекајте дуже од рока који сте раније прочитали, направите обрнути захтев и потврдите да су се бројачи померили на оба краја.

Запишите интервал и измерени рок поред. Будућа промена фирмвера рутера или прелазак на мобилну везу може да промени рок. Белешка је оно што некоме омогућава да вредност поново изведе уместо да је копира. Два броја у једном реду касније штеде целу истрагу.

Трајни keepalive штите стање. Они не отварају порт, не додају унос на дозвољену листу и не чине да се слушалац појави. Када обрнута веза уопште не ради, кривица је у једној од те три, и брзи почетак WireGuard-а описује подешавање keepalive-а истим уским терминима.

Повезани чланци