Интерфейс сиз каалаган аттар мейкиндигинде тизмеленген, колдонмо ага байланган, бирок туннелдин трафиги такыр көрүнбөйт. Бул бир аттар мейкиндигинде түзүлүп, экинчисине жылдырылган Linux өзөгүндөгү WireGuard түзмөгүнүн белгиси: интерфейс жылды, ал анын шифрленген UDP сокети жылган жок. Ички трафик маанилүү болушу үчүн экөө тең туура жерде болушу керек. Текшерүү тез, бир эмес, эки контекстти кароо керектигин билсеңиз болду.

Симптом: аттар мейкиндиги туура, бирок пакеттер жок

Аттар мейкиндигинин ичинде туннел соо көрүнөт. Түзмөк бар, дарегилер ыйгарылган жана шериктин конфигурациясы бар. Сыртта күтүлгөн UDP алмашуу сиз көзөмөлдөгөн интерфейсте такыр көрүнбөйт, ал каршы тарап кол алышуу болбогонун билдирет.

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

Бул жылдыруудагы кемчилик эмес жана шериктин туура эмес конфигурациясы да эмес. Өзөктүн ишке ашырылышы ушундай иштейт, ал WireGuard үчүн аттар мейкиндиктеринин документтери түзүү эрежесин түз сүрөттөйт.

Сокеттин эмнеге төрөлгөн жери бар

WireGuard түзмөгүнүн шифрленген ташуусу үчүн бир UDP сокети бар жана бул сокет түзмөк түзүлгөн аттар мейкиндигинде ачылат. Интерфейсти байланыш буйругу менен жылдыруу көрүнүп турган түзмөктү жылдырат, бирок ташууну башталган жеринде калтырат. Анда эки объектинин ээлери ар башка болуп калат.

Кесепетти байкоо кыйын, анткени эки жарымы ар башка жерлерде текшерилет. Ички маршрут колдонмо жұмуш иштеген аттар мейкиндигинде аныкталат, ал сырткы маршрут сокет жайгашкан жерде аныкталат. Бирөөнү гана текшерүү ишенимдүү, бирок туура эмес тыянак берет. Экөөн тең текшерүү адатта иликтөөнү бир өтүүдө бүтүрөт.

Аны сокетти каалаган жерде түзүңүз

Чечим — түзмөктү сыртта түзүп жылдыруунун ордуна максаттуу аттар мейкиндигинин ичинде түзүү. Бекитилген аттар мейкиндиги мурунтан бар жана атау колдонулбайт деп алсак:

ip netns exec vpn-apps ip link add wg-demo type wireguard
ip netns exec vpn-apps wg show

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

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

Жолдун эки тарабын да окуңуз

Түзмөк туура жерде болгондон кийин, эки чечимди өз-өзүнчө текшериңиз. Колдонмонун контекстинен ички издөөдөн баштаңыз, андан кийин сокетке ээ контекстен сырткы жолду текшериңиз:

ip netns exec vpn-apps ip route get 10.30.0.9
ip netns exec vpn-apps wg show
tcpdump -ni any udp port 51820

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

Жазууга дагы бир текшерүү кирет: түзмөк кайра жүктөөдөн кийин кантип түзүлөт. Интерфейсти башка түзүү контексти менен кайра түзгөн менеджер сокеттин төрөлгөн жерин өзгөртөт. Бир жолу иштеген кол менен жылдыруу башкарылуучу жол жөнүндө далил эмес.

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