AllowedIPs е список за рутирање, а не правило на огнен ѕид
Тој избира партнер за излезен сообраќај и проверува влезни извори. Не е список за пристап, а исклучувањето на управувањето со рути не го поправа поделениот тунел.
Повеќето луѓе го читаат AllowedIPs како список со дозволи, множество адреси што можат да се поврзат со партнер, слично на правило на огнен ѕид напишано за тунел. Не е тоа. Полето е табела за рутирање што работи во двете насоки: избира партнер за излезен пакет и ја проверува изворот на влезен. Читањето како список за пристап создава конфигурации што рутираат сообраќај што никој не го побарал.
Едно поле, два читатели: избор за излез и проверка на изворот
Кај клиентот, префиксите одлучуваат кои одредишта патуваат до тој партнер, а кои остануваат на обичната мрежа. Затоа записот за 0.0.0.0/0 ги опфаќа сите одредишта IPv4, и затоа увезувањето на профил за целосен тунел го испраќа обичното прелистување низ далечинската машина. Тесните записи го прават спротивното: рутираат само мрежите што ги наведовте и го оставаат сето друго каде што било. Делот за рутирање со криптоклучеви во документацијата на WireGuard ги наведува двете задачи на едно место: изборот на излезен партнер и проверката на влезниот извор.
На серверот, истото поле опишува кои изворни адреси смее да ги користи секој партнер. Тоа е криптографска проверка, а не филтер за пакети: пакет чиј внатрешен извор не се совпаѓа со списокот на партнерот се отфрла внатре во WireGuard пред да го види кој било огнен ѕид на хостот. Двете задачи делат еден список, и токму затоа список копиран од друго место се однесува погрешно на место што не сте го разгледале.
Блокот на клиентот е местото каде што започнува најголемиот дел од оваа конфузија. Поделениот тунел ги именува далечинските мрежи, а целосниот тунел е истото поле со стандарден префикс:
[Peer]
# split tunnel: only these networks
AllowedIPs = 10.77.0.0/24, 192.168.30.0/24
[Peer]
# full tunnel: everything, both families
AllowedIPs = 0.0.0.0/0, ::/0
Двете форми се целосни сами по себе, и тие се алтернативи, а не чекори. Првата ги испраќа само тие две мрежи низ тунелот; втората го испраќа секое одредиште, а записот ::/0 додава IPv6 на стандардот IPv4. Што и да изберете, тие префикси се целата одлука за рутирање за тој партнер кога wg-quick ќе почне да поставува рути.
Центарот бара различен список
Центарот ја наведува адресата на тунелот на секој клиент како префикс на хост, плус секоја мрежа што навистина стои зад тој клиент. Копирањето на широкиот список на клиент на секој партнер на центарот му кажува на центарот дека многу партнери можат да користат исти адреси како извор, а тоа не е план за адреси. Полето Endpoint припаѓа на сосема друг слој: ја именува надворешната адреса и портата на партнерот, никогаш одредиште внатре во тунелот.
[Peer]
# laptop: tunnel address 10.77.0.2, office LAN behind it
AllowedIPs = 10.77.0.2/32, 192.168.30.0/24
Префиксот на хостот ја носи адресата на тунелот, а мрежниот префикс го носи она што стои зад клиентот, и двете се потребни. Без префиксот на хостот центарот не може да го врати сопствениот сообраќај на клиентот, а без мрежниот префикс LAN-от зад него останува недостапен; партнер зад кого нема ништо го добива само префиксот на хостот.
Прескокнувањето на поставувањето рути остава празнина
wg-quick, помошникот што крева интерфејс од конфигурациска датотека, поставува адреси на интерфејсот и рути како дел од таа работа. Поставувањето на Table = off му кажува на помошникот да ја прескокне работата со рутите, што не поставува замени и не ја прави приватната мрежа достапна. Кога автоматските рути веќе ја вршат работата, именувањето на потребните префикси е појасна конфигурација. Исклучувањето на управувањето со рути и оставање на замената ненапишана не е дизајн, тоа е пропуст.
Основната алатка wg се однесува поинаку: ја конфигурира интерфејсот и никогаш не ги допира рутите, па поставувањето изградено директно врз неа бара свои команди за рути. Упатствата напишани за една алатка можат да изгледаат погрешно кога се следат со другата. Успешниот ping е исто така слаб доказ, бидејќи проверува една патека, а не секоја патека на апликацијата што ви треба.
DNS и IPv6 се одлучуваат одделно
Проверете ја адресата на DNS серверот што тунелот ја објавува и потврдете дека преку избраните префикси постои рута до таа адреса. Поставката на резолверот не го прави резолверот достапен, а стеснувањето на тунелот може тивко да ја отстрани рутата што водеше до него. Прегледајте го и IPv6 одделно, бидејќи правилната поделба на IPv4 не кажува ништо за стандардната рута IPv6 што сѐ уште покажува на физичката врска. Три одделни одлуки можат да се сменат одеднаш кога уредувате еден блок на партнер.
Потоа отворете еден приватен ресурс и една обична веб-страница од позната почетна конфигурација. Ако ресурсот одговори и прелистувањето сѐ уште излегува преку локалната врска, поделбата го прави она што го побаравте. Ако прелистувањето се расипе во истиот момент, тунелот ја зел стандардната рута и списокот со префикси е местото каде што треба да се погледне.