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
Претрага руте требало би да реши крајњу тачку из физичког интерфејса без проласка кроз тунел, а спуштање интерфејса требало би да остави хост у стању које је дизајн обећао. Прокси који ради након замене доказује да је генерисано стање хоста било важно; не доказује да су спречавање петље и понашање у искљученом стању преживели измену.