Уяча арналарындагы эки объект эки багытта тең бирдей көйгөйгө туш болот: экөө тең суралбаган IPv4 туташуусун кабыл ала албайт, ошондуктан экөө тең түз туннелде сервер ролун ойной албайт. Иштеген архитектура ортого жеткиликтүү үчүнчү тарапты коёт: ар бир объект сыртка чалат, ал эми орто сиз жактырган трафикти гана өткөрөт. Бул орто сиз башкарган маршрутизатор же теңдештерди тааныштырган продукт болушу мүмкүн, жана бул экөө бир нерсе эмес. Төмөнкү кадамдар кийинкиси ага көз каранды болоор алдында ар бири далил берүүдөй иреттелген.

Эч бир объектке чалуу мүмкүн эмес, ошондуктан экөө тең сыртка чалышы керек

Дизайндоодон мурун чектөөнү ырастаңыз. Эгер оператор WAN интерфейсине жеке даректи берсе, объекттин өз маршрутизаторундагы эч бир портту өткөрүү аны жеткиликтүү кылбайт, анткени котормо жогору жакта болот. Ошол эле арнада коомдук IPv6 дареги болушу мүмкүн жана долбоорду толугу менен өзгөртөт, ошондуктан текшерүү эки үй-бүлөнү тең камтыйт. Жоопту ар бир объект үчүн жазып коюңуз, анткени экөө бир операторду бөлүшсө да чектөөлөрү бирдей боло бербейт.

Кадимки уяча учуру оператордун которулган диапазонунан алынган дарекке жана андан өтүүчү демейки маршрутка окшош. Бул оңдолуучу бузулуу эмес; бул хабдын болушунун себеби. Сиз объект алдын ала сүйлөбөстөн үчүнчү тарап жете ала турган каалаган даректи издейсиз.

Алдыңыздагы объекттин дарек маселесине эки буйрук жооп берет. Аларды объекттин маршрутизаторунда иштетиңиз, анын артындагы ноутбукта эмес:

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

Теңдештерди ким тааныштырат жана пакеттерди ким ташыйт

Тааныштыруу жана ташуу — продуктулар чекти көрсөтпөстөн бириктирүүчү өзүнчө иштер. Жолугушуу механизми эки теңдешке талапкер жол табууга жардам берет; түз жол жок болсо, реле алардын пакеттерин ташыйт. Теңдештерди тааныштырган кызматты сатып алуу сизге маршрутизатор бербейт, жана бул айырма долбоорго хаб керекпи же жокпу экенин чечет.

Өтүүнүн өз сөздүгү бар, жана сөздөр кепилдик эмес, ролдорду сүрөттөйт. ICE спецификациясы талапкерлерди жана туташуу текшерүүлөрүн сүрөттөйт, STUN даректердин котормосу тууралуу билүүнүн бир жолун сүрөттөйт, ал эми TURN аны ишке ашырган колдонмолор үчүн реле аркылуу ташууну сүрөттөйт. Бул механизмдердин эч бири кадимки шлюзда көрүнбөйт, анткени сиз аны ачуу дарегине багыттадыңыз. Өтүүнү продукт мүмкүнчүлүгү катары текшериңиз жана сынак тескерисин көрсөтмөйүнчө релени болжолдонуз.

Ар бир объект үчүн бир маршрут, аны теңдеш ээлейт

Хабга ар бир объект үчүн бир туннел, ар биринин артында өзүнчө LAN префикси жана ар бир префикс үчүн анын ээсин атаган маршрут керек. Мисалда хаб 10.61.0.1, A объектиси LAN 10.60.10.0/24 менен 10.61.0.11, ал эми B объектиси LAN 10.60.20.0/24 менен 10.61.0.12 болуп саналат. Төмөнкү ар бир маршрут туннелдин интерфейсине эмес, префиксти ээлеген теңдешке шилтемейт:

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-ынан B объектисинин LAN-ына кайсы жол менен жүрөрүн сурайт. Туннелдин интерфейсин атаган издөөнү далил деп кабыл алыңыз, ал эми демейки маршрутка түшкөндү табышмак эмес, жетишпеген маршрут деп кабыл алыңыз. Андан кийин транзитти атайын чектеңиз, анткени ар бир теңдештин ортосунда өткөргөн хаб эки объектти тегиз тармакка айландырат жана сиз бар деп ойлогон кирүү саясаты колдонулбай калат.

Шифрлөө кайда бүтөөрүн да чечиңиз. Хаб туннелдин эки учун тең кармаса, ал машинанын оператору жана анын жумуш жүктөмү ишеним жана жеткиликтүүлүк моделине кошулат, ал эми анын өткөрүү жөндөмү жолдун бөлүгү болуп калат.

Ар бир чагылдырууну оператор аркылуу тирүү кармаңыз

Ар бир объект өз туннелин баштайт, жана ар бири котормо чагылдыруусун тирүү кармоого тийиш, болбосо оператор аны унутат. Баштоочу тараптагы тирүүлүк билдирүүсү ошол чагылдырууну кол алышуулардын ортосунда сактайт. Уруксат берилген префикстерди хабдын дареги жана алыскы 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

Блокту экинчи объектте анын өзүнүн алыскы префикси менен кайталаңыз жана бүт туннел диапазонуна уруксат берүү демилгесине каршы туруңуз. Токтоп, жаңы булак портунан уланган кол алышуу — мөөнөтү бүткөн чагылдыруунун кол тамгасы, ал эми кол алышуунун убакыт белгилери бул болгонунун далили. Оператордун убакыт чегинен кыскараак интервал мөөнөттүн бүтүшүн кийин оңдоонун ордуна алдын алат. Оператор котормо жүрүм-турумун өзгөртсө, бул убакыттар да аны менен өзгөрөрүн күтүңүз.

Эки багытты далилдеңиз, анан калыбына келүүнү далилдеңиз

Текшерүү багыттуу, ошондуктан A-дан B-га ping долбоордун жарымын далилдейт, кайтуу жолу тууралуу эч нерсе айтпайт. Хабда ошол эле булакты эске алган издөө менен жооп жолун текшерип, сынакты экинчи тараптан кайталаңыз. Бир саат бою бош турган туннел эски чагылдырууну сынап жаткан болушу мүмкүн болгондуктан жаңы кол алышууларды далилге кошуңуз:

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

Анан каалаган ийгиликти эмес, күткөн ийгиликсиздикти сынаңыз. Бир объекттин арнасын кайра иштетиңиз жана туннелдин эч бир учуна адам тийбестен кайра келерин ырастаңыз, анткени оператордогу ар бир өзгөрүүдөн кийин оператор талап кылган долбоор бүтө элек. Негизги жолду, бар болсо IPv6 баламасын жана хаб жеткиликсиз болгондогу жүрүм-турумду жазып коюңуз. Хаб эми сиздин жеткиликтүүлүк моделиңиздин бөлүгү, ошондуктан аны үзгүлтүк учурунда ачуунун ордуна жазып коюңуз.

Тектеш макалалар