Большасць сапсаваных канфігаў WireGuard памыляюцца не ў значэнні; яны ставяць правільнае значэнне не на той бок. Прыватны ключ належыць гэтай машыне, peer нясе публічны ключ іншай машыны, а адрас сядзіць у блоку інтэрфейса, хоць апісвае, дзе жыве тунель. Чытайце файл як два кірункі, што сустракаюцца, а потым праверце, што дадаў паверх дапаможны скрыпт. У самім пратаколе менш палёў, чым у файле, і дадатковыя палі варта ведаць асобна.

Ключы інтэрфейса апісваюць гэтую машыну

Блок інтэрфейса трымае ўласную ідэнтычнасць гэтага канца. PrivateKey — гэта тая ідэнтычнасць, і яна ніколі не пакідае хост; адпаведны публічны ключ выводзіцца з яе, і менавіта яго пералічваюць іншыя peers. ListenPort — гэта месца, дзе гэты бок прымае рукапацісканні, таму двум кліентам за адным адрасам патрэбны розныя парты.

Address — гэта адрас тунелю, на які адказвае гэты хост, запісаны з даўжынёй прэфікса, бо ён жа будзе і крыніцай. Памылка ў прэфіксе тут змяняе, якія прызначэнні хост лічыць непасрэдна далучанымі, і гэта дае збоі, што выглядаюць як маршрутызацыя, а не як канфігурацыя.

Усё астатняе ў [Interface] блоку з рэальным кліентам звычайна дадае wg-quick: DNS, MTU, Table, і радкі хукаў. Яны не палі пратаколу, і голы wg наладжванне цалкам іх ігнаруе.

Кожны запіс peer апісвае іншы бок

Блок [Peer] — гэта аддалены бок. PublicKey — вытворны ключ гэтага боку, ніколі не яго прыватны ключ, а PresharedKey — неабавязковы дадатковы сакрэт, які абодва бакі павінны мець аднолькава. Endpoint — куды адпраўляць, а PersistentKeepalive просіць гэты хост адправіць пакет пасля інтэрвалу, калі больш нічога не выходзіць.

Дзве памылкі тлумачаць большасць блытаніны тут. Капіраванне ўласнага прыватнага ключа ў блок peer робіць так, што два канцы дзеляць адну ідэнтычнасць, і рукапацісканне правальваецца так, што дрэнна лагуецца. Пакіданне Endpoint па-за кліентам звычайна наўмыснае, бо сервер даведваецца адрас з уваходнага рукапаціскання; пакіданне яго па-за серверам, які павінен ініцыяваць, — не. Таксама памятайце, што keepalive трымае адкрытым адлюстраванне NAT, і ён не паляпшае прапускную здольнасць і не змяншае затрымку, таму трыццаць секунд дадатковых пакетаў нічога не купляюць, калі трафік ужо ідзе.

AllowedIPs — гэта маршрутызацыя, а не спіс дазволаў

AllowedIPs — гэта крыптаключавая маршрутызацыя WireGuard. На выхадзе ён вырашае, які peer атрымае пакет па яго прызначэнні. На ўваходзе ён вырашае, ці будзе прыняты пакет, які прыходзіць ад гэтага peer, па яго крыніцы. Адно і тое ж поле робіць абедзве працы, таму гэта не спіс кантролю доступу і не спіс дазволеных сайтаў.

Вузкі AllowedIPs на серверы для кліента азначае, што сервер прыме толькі пакеты, якія заяўляюць гэтыя крыніцы, і адправіць толькі гэтыя прызначэнні таму кліенту. Пашырце адзін бок, не пашыраючы іншы, і атрымаеце тунель, які ўзнімаецца і нічога не прапускае.

Што wg-quick дадае вакол пратаколу

wg-quick чытае той жа файл і выконвае сеткавыя крокі, якія пратакол пакідае аперацыйнай сістэме. Ён прызначае адрас інтэрфейса, дадае маршруты, вытворныя ад AllowedIPs, запісвае налады распазнавальніка і запускае каманды хукаў па парадку.

Гэты слой тлумачыць класічную асіметрыю. Файл з 0.0.0.0/0 і радком DNS дае кліенту маршрут па змаўчанні і распазнавальнік, і ён зусім нічога не робіць з правіламі перасылкі ці NAT на серверы. Яны належаць уласнай канфігурацыі сервера, і ні адзін кліенцкі файл не можа іх забяспечыць.

Трымайце аднаго ўладальніка файла. Рэдагаванне ўручную, пакуль SaveConfig уключаны, азначае, што ваша правака знікне наступным разам, калі інтэрфейс апусціцца, і інтэрфейс не скажа вам, што гэта адбылося.

Правярайце ўжыты стан, а не файл

Файл — гэта намер. Ужыты стан — гэта тое, што трымае ядро, і яны разыходзяцца кожны раз, калі дапаможнік, drop-in ці хук нешта змяніў пасля актывацыі.

Чытайце жывы стан і адрасацыю разам, потым параўнайце абодва з тым, што вы напісалі:

sudo wg show
ip -4 addr show dev wg0
ip -4 route show dev wg0
grep -v "^#" /etc/wireguard/wg0.conf

Калі спіс peers пусты, інтэрфейс створаны без ужывання яго канфігурацыі. Калі адрасы і маршруты ёсць, але лічыльнікі застаюцца на нулі, файл загрузіўся і рукапацісканне правальваецца, што з'яўляецца праблемай ключа ці канчатковага пункта, а не парадку раздзелаў. Параўнайце два выгляды перад рэдагаваннем, бо прамежак паміж імі звычайна і ёсць сапраўдная памылка.

Падобныя артыкулы