Броячът на ръкостискането се обновява, интерфейсът запазва адреса си, а ping към отсрещната страна не отива никъде. Тази комбинация обърква хората, защото работещо ръкостискане изглежда като доказателство, че тунелът е готов. Не е така: тунелът може да е напълно договорен и пак да няма маршрут, който да насочва трафик към него, а това са две отделни задачи, изпълнявани от две отделни части състояние. Поправката зависи изцяло от това кое от двете липсва, затова първата стъпка е да го установим.

wg-quick изпълнява и двете, без да бъде питан. Вградената поддръжка на WireGuard в NetworkManager също инсталира маршрути до партньорите по подразбиране, което стеснява заподозрените до изключена опция, друга таблица за маршрутизация или конфигурация, внесена през нещо друго.

Потвърдете тунела, преди да гоните маршрута

wg show показва интерфейса, партньора, крайната точка и възрастта на последното ръкостискане, а ip addr show потвърждава, че адресът е налице. Скорошно ръкостискане означава, че ключовете, крайната точка и пътят UDP работят. Всичко счупено е след тях: маршрутизация, филтриране или разрешаване на имена.

После попитайте ядрото какво би направило с реална дестинация, а не с хипотетична: ip route get 10.42.7.9. Отговорът назовава изходящия интерфейс и адреса на източника, който пакетът би носил. Когато назовава физическия адаптер, пакетът никога не влиза в тунела, колкото и здравословно да изглежда ръкостискането.

AllowedIPs е филтър и списък с маршрути

Префиксите в AllowedIPs вършат две работи. Те избират кой партньор носи изходяща дестинация и проверяват адреса на източника на входящите пакети, което е границата на криптоключовата маршрутизация. В wg-quick те също управляват автоматичното инсталиране на маршрути и точно това допълнително поведение е причината същата конфигурация да работи от терминал, а не от настолен клиент.

В случая зад тази статия профилът беше внесен през добавка на трета страна, а не през вградената поддръжка, и интерфейсът се вдигна без префиксния маршрут. Изброяването на таблицата го показва веднага: ip route show съдържа само свързания маршрут за адреса на интерфейса и нищо за отдалечения диапазон.

Попитайте дали маршрутите до партньорите са включени изобщо

Прочетете настройката, преди да промените нещо: nmcli -f wireguard.peer-routes,ipv4.route-table connection show work-wg. Когато peer-routes показва no, поддържаната поправка е nmcli connection modify work-wg wireguard.peer-routes yes, последвана от повторно свързване. Добавянето на статичен маршрут вместо това работи до следващото активиране и после тихо изчезва. Това изчезване е признакът: маршрут, който се връща като загадка всяка сутрин, не се инсталира от профила.

Ако опцията вече е включена, проверете дали префиксът живее в друга таблица с ip route show table all | grep 10. Маршрут в неглавна таблица не липсва, той е просто невидим за търсене, което разглежда само главната таблица. Поправете политическата маршрутизация, вместо да трупате дублиращ запис отгоре.

Добавете префикса към връзката, не към работещата система

В редактора на връзки страницата WireGuard държи партньора и неговите AllowedIPs, а страницата IPv4 държи допълнителни маршрути. Добавен там маршрут оцелява при повторно свързване, защото принадлежи на профила. В командния ред еквивалентът е да добавите маршрут към връзката с формата с празен шлюз и после да свалите и вдигнете връзката, за да се приложи промяната.

Изберете най-тесния префикс, който покрива нужните ви хостове. Копирането на примера /8 от доставчика може да погълне локални диапазони, които случайно се намират вътре, и получените откази изглеждат като счупен тунел, а не като прекалено широк маршрут.

Разделеното тунелиране се решава от списъка с префикси

Няма превключвател за разделен тунел; списъкът с префикси е решението. Партньор с един диапазон за офис LAN и един за лабораторна мрежа изпраща точно тези дестинации през тунела и оставя всичко останало на мира. Един хост изисква /32, а припокриващи се диапазони на две места изискват хоустови префикси, докато някой преномерира подмрежа.

Изборът да не изпращате нищо през тунела отвежда същото решение до края му: минимален списък оставя връзката вдигната, докато обичайният трафик следва обичайния си път. Запишете намерението, защото иначе следващият читател ще сметне краткия списък за пропуск и услужливо ще го разшири.

Един собственик на таблицата с маршрути

wg-quick и NetworkManager и двамата смятат, че притежават маршрутите на интерфейса. Внесете конфигурация, написана за wg-quick, и после пуснете и услугата wg-quick, и ще получите дублирани или конфликтни записи, чието поведение зависи от това кой е работил последен. Изберете един собственик и премахнете другия: ако NetworkManager управлява връзката, изключете модула wg-quick за този интерфейс и никога не добавяйте втори профил за същото устройство.

Когато разделянето трябва да следва физически адаптер, а не дестинация, вие сте преминали към политическа маршрутизация, а политическата маршрутизация също изисква един автор. Проверете, като повторите ip route get и после достигнете хост в отдалечения префикс с нещо, което показва избрания от него адрес на източника. Проверете IPv6 и DNS поотделно, ако профилът носи някое от двете.

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