Туннель көтерілген, handshake әр екі минут сайын орындалады, және арғы жағында дәл бір мекенжай жауап береді. Пирдің туннель мекенжайына пингтер жұмыс істейді; оның артында ештеңе істемейді. Біреу интерфейс конфигурациясын оқып, хост префиксін көріп, маска қате деп қорытынды жасайды. Оны /24-ке кеңейту пингті біраз уақыт түзейді, содан кейін басқа нәрсені бұзады. Префикс ешқашан себеп болған емес, ал жетіспейтін маршрут маска басқаратын маршрут емес.

Интерфейс префиксі шын мәнінде не жасайды

Linux-та интерфейске мекенжай тағайындау сол префикс үшін қосылған маршрут жасайды. Хост префиксін тағайындасаңыз, қосылған маршрут бір мекенжайды қамтиды. /24 тағайындасаңыз, ол 256 мекенжайды қамтиды, және олардың әрқайсысы енді сол байланыс арқылы қолжетімді деп есептеледі.

ip -4 addr show dev wg0
ip -4 route show dev wg0
ip route get 10.80.7.1

Хост префиксі нүктеден нүктеге туннель үшін толығымен қалыпты таңдау, өйткені арғы ұшында дәл бір пир бар. Үшінші команда пайдаланушының сұрағына жауап береді: ядро сол межелі орын үшін қай интерфейсті қолданатынын айтады, және ешбір маршрут сәйкес келмесе, ешқандай пайдалы нәрсе көрсетпейді.

Бұл симптомның толық түсіндірмесі. Бір мекенжай жауап береді, өйткені ол үшін қосылған маршрут бар, немесе пирдің рұқсат етілген тізімі оны кездейсоқ қамтиды. Қалғанының барлығында маршрут жоқ және WireGuard қатыспай тұрып тасталады. Туннель осы уақыт бойы сау, сондықтан handshake санауышы әлі де сенімді көрінеді.

AllowedIPs — бір ат астында екі ереже

WireGuard-тағы әр пирге арналған рұқсат етілген тізім бір уақытта екі жұмыс істейді, ал конфигурация синтаксисі оларды бірдей көрсетеді. Кірісте пир қандай бастапқы мекенжайларды ұсына алатынын рұқсат етеді. Шығыста ең нақты сәйкестікті тауып, пакет қай пирге жіберілетінін таңдайды.

Бұл жұмыстардың ешқайсысы маршруттау емес. Ядро пакеттің туннель интерфейсіне жататынын WireGuard оны қарар алдында шешуі керек, және бұл шешім маршруттау кестесінен келеді. Кең рұқсат етілген тізімі бар пир жазбасы өзі маршрут орнатпайды.

Сондықтан конфигурация толық көрініп, асимметриялы әрекет етуі мүмкін. Клиент маршрут бар болғандықтан арғы жаққа жібереді, ал жауаптар ешқашан келмейді, өйткені арғы жақтың рұқсат етілген тізімі клиенттің көзін рұқсат етпейді немесе арғы жақта қайту жолы жоқ. Екі бағыт та жеке шешімдер, жеке ақау режимдерімен. Қайсысын тексеріп жатқаныңызды жазу — диагностиканың жартысы.

Маршрут қайдан келеді

Егер wg-quick қолдансаңыз, маршруттар әр пирдің рұқсат етілген тізімінен сіз үшін жасалады, егер Table = off орнатып, басқаруды өзіңіз алмасаңыз. Бұл құрал құжаттайтын мінез-құлық, және айқын маршрут директивалары жоқ конфигурацияның бәрібір жұмыс істеу себебі осы.

sudo wg show wg0 allowed-ips
ip route show | grep wg0
sudo wg-quick strip wg0

Рұқсат етілген тізімді нақты бар маршруттармен салыстырыңыз. Бүкіл ішкі желіге рұқсат беріп, бірақ тек хост маршрутын жасаған пир — көмекші ешқашан іске қосылмағанын немесе интерфейсті wg және ip арқылы тікелей басқарып жатқаныңызды білдіреді, онда сіз үшін ештеңе маршрут жасамайды.

Оны қолмен басқарғанда, маршрут бір жол және оның пішіні айқын: межелі орын интерфейс арқылы, шлюзсіз, өйткені байланыс нүктеден нүктеге. Оны қосу нашар префикске арналған айналма жол емес; бұл маршруттауды әдейі өз мойнына алған жобаның жетіспейтін жартысы.

Кеңірек префикс пир жазбасын қоспайды

Азғыратын түзету — мекенжайды /24-ке өзгертіп, қосылған маршрут сервердің жергілікті желісін қамтуы. Жұмыс істеп тұрған сияқты көрінеді, және оның жұмыс істеп тұрған сияқты көріну себебі — қосылған маршруттың енді сәйкес келуі, ал WireGuard жаңа нәрсе үйренгені емес.

Сонымен қатар сіз бүкіл ауқымды сол байланыс арқылы тікелей қолжетімді деп мәлімдедіңіз, оның ішінде басқа пирлерге немесе шын мәнінде сервердің артындағы жергілікті желіге жататын мекенжайлар бар. Бұл мекенжайларға трафик енді туннельге кіреді, ал оның арғы жағынан шығатыны сервердің өзінің маршруттауы мен рұқсат етілген тізімдеріне байланысты.

Криптографиялық жақ ешбір жағдайда әсер етпейді. WireGuard пирді таңдау үшін межелі орынды қамтитын рұқсат етілген тізім жазбасын әлі де қажет етеді, ал арғы жақ сіздің көзіңізді қамтитын жазбаны қабылдау үшін әлі де қажет етеді. Кеңірек интерфейс префиксі екеуін де бере алмайды.

Бірдеңені өзгерту алдында екі бағытты да растаңыз

Екі ұшты бөлек қарастырып, әрқайсысы не дейтінін жазыңыз. Клиентте маршрут пен пир жазбасы; серверде айна бейнесі плюс өзінің қайту жолы:

ip route get 192.168.70.20
sudo wg show wg0 allowed-ips
sudo wg show wg0 latest-handshakes
sudo tcpdump -ni wg0 -c 10

Түсірілім бағыт туралы дауларды шешеді. Егер шығыс пакеттер туннель интерфейсінде пайда болып, сервер ештеңе тіркемесе, алыс ұш оларды қабылдамайды, әдетте сіздің көзіңіз оның рұқсат етілген тізімінен тыс болғандықтан. Егер мүлдем ештеңе пайда болмаса, маршрут жетіспейді немесе басқа жерді нұсқайды.

Содан кейін тар ұшты түзетіңіз. Сервер жағында клиент мекенжайыңыз үшін рұқсат етілген тізім жазбасы және клиент жағында межелі ішкі желі үшін жазба — қалыпты пішін, және ол интерфейс префиксін тимейді. Префиксті тек мекенжай жоспары сол байланыста ортақ ішкі желіні шынымен қаласа кеңейтіңіз, және мұны жөндеу қадамы емес, жоспар өзгерісі ретінде жасаңыз.

Қатысты мақалалар