Повечето счупени конфигурации на WireGuard не грешат в стойност; те поставят правилната стойност от грешната страна. Частният ключ принадлежи на тази машина, peer носи публичния ключ на другата машина, а адресът стои в блока interface, макар да описва къде живее тунелът. Четете файла като две посоки, които се срещат, после проверете какво е добавил помощният скрипт отгоре. Самият протокол има по-малко полета от файла и допълнителните си струва да се знаят отделно.

Ключовете на интерфейса описват тази машина

Блокът interface държи собствената идентичност на тази крайна точка. 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 е празен, интерфейсът е създаден, без конфигурацията му да е приложена. Ако адресите и маршрутите съществуват, но броячите остават нула, файлът се е заредил и ръкостискането се проваля, което е проблем с ключ или крайна точка, а не с реда на секциите. Сравнете двата изгледа преди редактиране, защото разликата между тях обикновено е истинската повреда.

Подобни статии