WireGuard: две половини рути наспроти 0.0.0.0/0 во wg-quick
Два опсези /1 ги покриваат истите адреси како /0, но wg-quick ги насочува поинаку. Проверете ги правилата за политика, ознаките и патеката до крајната точка пред да уредувате.
Два префикси /1 покриваат точно исти IPv4 адреси како еден /0, и таа еднаквост важи само внатре во списокот дозволени префикси на партнерот. Таа престанува да важи во моментот кога алатката за поставување одлучува како да насочува, бидејќи Linux wg-quick третира стандарден префикс како посебен случај, а не како аритметика. Посебната гранка поставува наменска табела, две правила за политика, ознака на сокет и поставки за обратна патека што пар половини рути никогаш не ги добива. Затоа, кога по уредувањето прокси или прелистувач престанува да работи, префиксите се најмалку интересниот дел од промената.
Списокот на префикси не е целата конфигурација
AllowedIPs врши две работи одеднаш, а само едната се однесува на покриеноста. За самиот WireGuard списокот е криптоклучно насочување: одлучува кои одредишта се шифрираат кон партнерот и кои изворни адреси тој партнер смее да ги користи. За wg-quick истиот список служи и како спецификација на рути, а рутата што ја создава зависи од тоа на која гранка списокот случајно ќе се совпадне. Идентична покриеност кај два различни облика на список затоа не кажува ништо за идентична состојба на домаќинот.
Стандардната конфигурација ја зема таа одлука од ваши раце, бидејќи Table е стандардно автоматски и алатката сама избира каде ќе слетаат рутите. Друг мрежен менаџер, обвивка од дистрибуција или прилагодена вредност на Table повторно го менува резултатот, затоа совет напишан за еден домаќин може да изгледа погрешно на следниот.
Што додава стандардната гранка покрај рута
Запис /0 го испраќа wg-quick во неговата патека на стандардна рута: одделна табела за насочување го прима стандардот, едно правило за политика испраќа неозначен сообраќај таму, второ правило ги задржува поспецифичните рути од главната табела како меродавни, а интерфејсот добива огненоѕидна ознака на сопствениот сокет. Таа ознака е чуварот на јамката. Шифрираните датаграми што го носат сообраќајот на тунелот излегуваат со поставена ознака, за да не ги проголта правилото што сето друго го насочува во тунелот, сопствените транспортни пакети на тунелот.
Наместо тоа, пар записи /1 ја преземаат вообичаената патека на рута. Две рути слетуваат во конфигурираната табела и ниту еден од околните механизми не се појавува, не затоа што е непотребен, туку затоа што таа кодна патека никогаш не била измината.
Каде се разидуваат двата распореди
Разликата најпрво се појавува како рекурзија. Кога половините рути се во главната табела, сопствената транспортна адреса на партнерот паѓа внатре во префикс на тунел, па пакетот што треба да го носи тунелот се совпаѓа со рута што покажува внатре во тунелот. Нешто мора да го изземе: рута до домаќин за тековната крајна точка, ознака применета рачно или правило специфично за интерфејсот. Рутата до домаќин работи сето додека не се промени адресата на крајната точка, што се случува со крајни точки засновани на DNS, клиенти што роумираат и конфигурации со повеќе партнери.
Второ, сето што расудува за ознаки го менува однесувањето. Транспарентен прокси што локално ги пренасочува врските создава нови сокети чии ознаки и извори се разликуваат од првичниот тек на клиентот, а правилата за политика што ги генерира стандардната гранка беа дел од она што ги раздвои тие текови. Читањето на сопствената излезна врска на проксито е друга вежба од проверката дали првичното одредиште е достапно.
Прочитајте ги правилата и ознаките пред уредување
Забележете ја тековната состојба додека тунелот е здрав, потоа повторно по промената, и споредете ги двата исписа наместо да расудувате од конфигурациската датотека. Вклучете ги правилата за политика, секоја табела, ознаката на интерфејсот и забележаните крајни точки.
ip rule show
ip -4 route show table all | grep -E 'default|wg1'
wg show wg1 fwmark
wg show wg1 endpoints
Ако првиот ред од излезот ја изгубил правилото за неозначен сообраќај и наменската табела е празна, стандардната гранка не работи и никаква аритметика на префикси нема да ги врати нејзините ефекти. Ознака нула на интерфејс што претходно носел таква е истиот сигнал, видлив во една вредност.
Вежбајте губење на тунелот пред испорака
Ако распоредот со половини рути е свесен избор, мора експлицитно да ги обезбеди деловите што недостигаат: патека до крајната точка што ги преживува промените на адресата, предвиденото однесување кога тунелот паѓа и еквивалентна обработка за IPv6. Запишете ги како барања наместо да ги откривате за време на прекин. Потоа вежбајте го дефектот, бидејќи целосен тунел што тивко се враќа на физичкиот нагорен канал е полош од оној што престанува да работи.
sudo ip -4 route add 198.51.100.20/32 via 192.0.2.1 dev eth0
ip -4 route get 198.51.100.20
sudo wg-quick down wg1
Пребарувањето на рута треба да ја реши крајната точка од физичкиот интерфејс без да го преминува тунелот, а спуштањето на интерфејсот треба да го остави домаќинот во состојбата што ја ветил дизајнот. Прокси што работи по замената докажува дека генерираната состојба на домаќинот била важна; тоа не докажува дека спречувањето на јамки и однесувањето во исклучена состојба ја преживеале промената.