Две локације на мобилним везама имају исти проблем у оба смера: ниједна не може да прихвати нежељену IPv4 везу, па ниједна не може да игра улогу сервера у директном тунелу. Архитектура која ради ставља доступну трећу страну у средину: свака локација се повезује према споља, а средина прослеђује само саобраћај који одобрите. Та средина може бити рутер којим сами управљате или производ који упознаје партнере, и то није исто. Кораци испод поређани су тако да сваки даје доказ пре него што следећи од њега зависи.

Ниједној локацији се не може прићи, па обе морају да позивају према споља

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

Уобичајен мобилни случај изгледа као адреса из оператеровог преведеног опсега са подразумеваним путем кроз њу. То није квар који треба поправити; то је разлог због којег чвориште постоји. Тражите било коју адресу до које трећа страна може доћи пре него што се локација прва јави.

Две команде одговарају на питање адресирања за локацију пред којом стојите. Покрените их на рутеру локације, не на лаптопу иза њега:

ip -4 addr show scope global
ip -6 addr show scope global

Ко упознаје партнере и ко носи пакете

Упознавање и пренос су одвојени послови које произвођачи често спајају не показујући границу. Механизам сусрета помаже двема странама да нађу кандидатски пут; релеј носи њихове пакете када директног пута нема. Куповина услуге која упознаје партнере не даје вам рутер, а та разлика одлучује да ли дизајну треба чвориште уопште.

Пробој има свој речник, а речи описују улоге, не гаранције. ICE спецификација описује кандидате и провере повезаности, STUN описује један начин да сазнате о превођењу адреса, а TURN описује пренесени пренос за апликације које га имплементирају. Ниједан од тих механизама не постоји у уобичајеном приступнику јер сте га усмерили на адресу за откривање. Проверите пробој као могућност производа и претпоставите релеј док тест не покаже другачије.

Једна рута по локацији, у власништву партнера

Чворишту треба један тунел по локацији, посебан LAN префикс иза свакога и рута за сваки префикс која именује власника. У примеру је чвориште 10.61.0.1, локација A је 10.61.0.11 са LAN-ом 10.60.10.0/24, а локација B је 10.61.0.12 са LAN-ом 10.60.20.0/24. Свака рута испод показује на партнера који поседује префикс, а не на интерфејс тунела:

ip route add 10.60.10.0/24 via 10.61.0.11 dev wg0
ip route add 10.60.20.0/24 via 10.61.0.12 dev wg0
sysctl net.ipv4.ip_forward
ip route get 10.60.20.55 from 10.60.10.77

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

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

Одржавајте свако мапирање живим кроз оператера

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

[Peer]
PublicKey = <hub public key>
Endpoint = 192.0.2.10:51820
AllowedIPs = 10.61.0.1/32, 10.60.20.0/24
PersistentKeepalive = 25

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

Докажите оба смера, затим докажите опоравак

Провера је усмерена, па ping од A до B доказује пола дизајна и ништа о повратној рути. Проверите пут одговора истом претрагом свесном извора на чворишту, затим поновите тест са друге стране. Свежа руковања такође припадају доказима, јер тунел који је мировао сат времена можда тестира старо мапирање:

wg show wg0 latest-handshakes
ping -c 3 10.60.20.55
traceroute -n 10.60.20.55

Затим тестирајте квар који очекујете, а не успех који желите. Рестартујте везу једне локације и потврдите да се тунел враћа без тога да човек дира било који крај, јер дизајн којем треба оператер после сваке промене код оператера није довршен. Запишите примарни пут, IPv6 алтернативу када постоји и понашање када чвориште није доступно. Чвориште је сада део вашег модела доступности, па то запишите уместо да откривате током прекида.

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