Тунел се подиже на мобилним подацима и затим остаје на повезивању код куће, са истим профилом, истим peer кључем и без промене конфигурације између. Разлика је у путу: захтев из унутрашњости LAN-а ка јавној адреси рутера није исто путовање као захтев који долази са интернета. Већина кућних гејтвеја или уопште не примењује повратни пут, или га примењује само за одређене протоколе. Због тога симптом изгледа као покварен кључ, иако се у кључу ништа није променило. Утврдите који је пут отказао пре него што дотакнете кључ, прослеђивање порта или профил клијента.

Једна адреса, два различита пута

Споља пакет стиже до јавне адресе рутера и правило за прослеђивање порта га предаје слушаоцу WireGuard-а на унутрашњем хосту. Изнутра клијент бира исту јавну адресу, па пакет напушта клијента, стиже до рутера и мора да буде окренут назад ка LAN-у. Управо на том окретању два пута се раздвајају, јер рутер мора да преведе ток који истовремено излази и поново улази кроз исти интерфејс. Многе имплементације га одбацују уместо да га преведу, и клијент затим чека руковање које никада није послато.

Ово понашање се обично назива NAT loopback или hairpinning и припада рутеру, а не WireGuard-у; RFC 4787 описује случајеве превода у којима гејтвеј може да га подржава или не. Сам WireGuard нема мишљење о путу, јер види само пакете који стижу до његовог интерфејса. Када рутер одбаци ток, демон никада не прима ништа, клијент пријављује истек времена за руковање, а дневник сервера остаје празан. Празан дневник зато је траг где се пакет зауставио, а не доказ да је сервер пао. То је и разлог зашто поновна инсталација ништа не мења.

И обрнуто је важно: дневник сервера који показује покушај руковања са адресе LAN-а доказује да је пакет стигао и да је пут у реду, што премешта истрагу на кључеве и дозвољене адресе. Читајте дневник због онога што доказује, а не због онога што сте се надали да видите.

Репродукујте прво, затим мењајте

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

Затим погледајте у шта се разрешава име крајње тачке за овај уређај. Следеће три команде такође показују коју је адресу клијент заиста бирао:

wg show wg0 endpoints
dig +short vpn.example.net A
resolvectl query vpn.example.net

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

Подржани начини да се стигне до оближњег сервера

Најчистији распоред је одговор са подељеним хоризонтом: јавно име се разрешава на јавну адресу за интернет и на адресу LAN-а сервера за клијенте изнутра. Профил чува једно име крајње тачке, а резолвер бира пут. То захтева контролу над унутрашњим одговором DNS-а, који кућни рутер обично нуди, а организација може намерно да уреди. Без те контроле остају функција рутера или други профил.

Функција рутера је одраз: гејтвеј преводи ток изнутра ка споља и шаље га назад унутра. Где ради, не захтева промену клијента, а где не ради, никакво подешавање клијента га не спасава. Тестирајте је посматрањем дневника сервера током унутрашњег покушаја, уместо читањем списка функција рутера.

Уређивање профила на приватну адресу је дијагностика, а не пројекат. Доказује да сервер одговара у LAN-у и крши исти профил у тренутку када лаптоп напусти кућу.

ApproachWhat it depends onWhere it fails
Split-horizon nameControl of the internal DNS answerClients that resolve through a server outside the zone
Router reflectionGateway support for hairpin translationRouters that drop the flow silently
Private address in the profileNothing beyond the LANEvery network except the one at home

Чувајте профил употребљивим ван куће

Који год пут да изаберете, оставите проверу идентитета на миру. Адреса крајње тачке није идентитет peer-а, а промена адресе никада не оправдава прихватање туђег јавног кључа који случајно одговара. WireGuard аутентификује преко кључа, зато погрешан хост пада на руковању уместо да да приступ нечему неочекиваном.

Ако се јавна адреса помери, динамички DNS је оно што чува име корисним, а понашање освежавања клијента одлучује колико брзо промена стиже. Тестирајте то споља после промене адресе, јер случај LAN-а не може то да потврди. Пазите на резолвер који кешира стари одговор дуже од живота записа. Име које још показује на претходну адресу изгледа тачно као сервер који је пао.

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

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