Хаб што извршува WireGuard може да ги држи врсничките групи одвоени без посебен интерфејс или табела за маршрутирање за секоја група. Два механизми ја вршат работата, а нивното мешање е вообичаената причина зошто политиката изгледа исправна и не прави ништо. Еден слој одлучува кој смее да бара изворна адреса. Другиот одлучува каде смее да оди тој пакет.

Две задачи, држени одвоено

Тунелскиот слој одговара на тесно прашање: дали клучот на овој врсник ја овластил оваа внатрешна изворна адреса. Слојот за препраќање одговара на пошироко: смее ли овој пакет да излезе кон таа дестинација. Ниту едниот не одговара на прашањето на другиот, и ниту едниот сам по себе не е целосна политика за пристап.

Оваа поделба е причината зошто еден врсник може да биде автентициран, правилно адресиран и сепак да не може да стигне до хост до кој не треба да стигне. Таа го објаснува и обратното: правило на огнен ѕид што дозволува сѐ не докажува ништо за тоа кој смее да бара која адреса.

Дизајнирајте ги двата слоја заедно, потоа тестирајте ги двата. Конфигурација што е исправна на еден слој, а неистестирана на другиот, пропаѓа отворено или затворено зависно од стандардната вредност.

Дајте му на секој врсник само неговата сопствена адреса

Врсниците со повеќе хостови ве наведуваат да го доделите целиот опсег на групата на страната на серверот. Таа дозвола е барање на изворна адреса, па компромитиран или погрешно конфигуриран клиент може да претстави која било адреса од опсегот и тунелот ќе ја прифати. Доделете /32 по врсник за неговата сопствена внатрешна адреса. Поставете ги опсезите на групите само на клиентите, каде што тие опишуваат кои дестинации смее да ги достигне тој клиент, а не кои извори смее да ги користи.

Тогаш огнениот ѕид совпаѓа извор на кој може да му верува. Правило напишано за опсегот на групата останува корисно групирање и станува значајно само кога ниту еден поединечен врсник не може да бара адреса што му припаѓа на друг член.

Напишете ја политиката за препраќање што ги одвојува групите

Интересниот сообраќај овде влегува и излегува низ истиот тунелски интерфејс, па ја преминува патеката за препраќање, а не влезната патека на хостот. Правилата припаѓаат на постојниот синџир за препраќање на оној менаџер на огнен ѕид што го поседува хостот, и тие се фрагменти, не целосен сет правила.

iifname "wg0" oifname "wg0" ip saddr 10.66.10.0/24 ip daddr 10.66.10.0/24 accept
iifname "wg0" oifname "wg0" ip saddr 10.66.20.0/24 ip daddr 10.66.20.0/24 accept
iifname "wg0" oifname "wg0" drop

Првите две правила дозволуваат сообраќај во секоја група. Последното блокира сѐ друго што го преминува тој интерфејс, и тоа е она што создава изолација меѓу групите. Додадете експлицитни правила за другото семејство адреси ако ви требаат, зашто испуштање напишано за IPv4 не го овластува и не го опишува однесувањето на IPv6.

Редоследот одлучува дали политиката се применува

Редоследот на правилата е поважен од самиот фрагмент. Општо правило што прифаќа воспоставени врски, поставено пред овие записи, дозволува стар меѓугрупен тек да продолжи, па изолацијата важи само за нови врски. Одлучете кој од тие два исхода го сакате пред да вчитате повторно.

Пресудата за прифаќање исто така не е секогаш конечна меѓу синџири на истиот хук. Ако друг основен синџир се изврши подоцна, делотворната политика е комбинацијата, па прегледајте ги бројачите, а не датотеката што сте ја уредувале. Бројачите се најевтиниот достапен доказ. Правило без број на пакети не совпаѓа, а правило што совпаѓа додека подоцнежен синџир прифаќа ви кажува дека испуштањето е на погрешно место.

Тестирајте ја матрицата, не бројот на датотеки

Изградете мала матрица од очекувани резултати и проверете ја секоја ќелија. Група A кон група A треба да работи, група B кон група B треба да работи, а A кон B не треба, во двете насоки и за двете семејства адреси ако ги поддржувате.

nft list ruleset
wg show wg0 allowed-ips
ping -c 2 10.66.10.5
conntrack -L -s 10.66.20.7 2>/dev/null | head

Првите две покажуваат што е конфигурирано. Ping од член на погрешната група покажува што навистина се случува. Списокот conntrack покажува дали постар тек сѐ уште се прифаќа, и токму така промената на изолацијата тивко не стапува на сила.

Хост-услугите на хаб и пристапот до LAN зад него се одделни патеки со одделна политика. Забележете кои од нив ги покрива матрицата, зашто тест што проверува само сообраќај меѓу врсници не кажува ништо за ниту една од двете.

Поврзани статии