Тунели су потрошни; политика не би требало да буде. На Linux пролазном чвору правило nftables које повезује интерфејс тунела по имену може се учитати једном и наставља да се примењује сваки пут када се тај интерфејс појави. Интерфејс ипак има сопствени животни циклус: ствара се, нестаје, а руте и преводи око њега прате сопствени распоред. Управо раздвајање тих власника одржава приступ стабилним током поновног повезивања.

Подударање по имену надживљава интерфејс

nftables нуди нумеричка подударања индекса интерфејса и динамичка подударања по имену iifname и oifname. Правила са тим именима учитавају се чисто чак и када уређај тунела још није створен, што је управо оно што скупу правила треба при покретању. Подударање престаје ако се интерфејс преименује и наставља се када нови интерфејс преузме то име. Нумерички индекс нема то својство, зато је облик са именом уобичајен избор за тунел.

Име је кључ подударања, а не доказ о томе ко је на другој страни. Аутентификација партнера остаје посао VPN-а.

Прочитајте ланац пре него што додате правила

Погледајте шта скуп правила тренутно садржи и где би ново правило стало, јер поредак одлучује о исходу.

nft list ruleset
nft -c -f /etc/nftables.conf

Списак приказује ланце, правила и ручке, а режим провере валидира кандидатску датотеку без учитавања. Дозвола само за тунел постављена после ранијег прихватања истог тока не мења ништа, јер побеђује прво правило које се подудара. Зато касно правило може изгледати исправно и не имати никакав учинак. Прочитајте ланац редом и потврдите да забрана саобраћаја од клијента ка узводној вези и даље претходи свему ширем.

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

Присуство интерфејса не ствара руте и не аутентификује партнера. То припада VPN менаџеру, а превод има трећи животни циклус.

conntrack -L -s 10.20.0.0/24 | head
ip route show dev vpn0

Списак conntrack-а приказује постојеће токове са њиховим изворним и преведеним вредностима, а списак рута показује шта је менаџер инсталирао за интерфејс. NAT правила успостављају стање праћења везе на првом пакету, па успостављени ток задржава свој превод и после промене правила. Зато су правило које се ажурира и ток који користи нови пут две различите тврдње. Одлучите које сесије морају поново да се повежу и оставите неповезане токове на миру.

Прихватите хладни старт, губитак и опоравак

Тестирајте пролазни чвор са тунелом одсутним при покретању, затим присутним, а затим после прекида и повратка. Потврдите да забрањено прослеђивање остаје забрањено док тунел недостаје, да нови дозвољени ток ради после аутентификације партнера и да опоравак не захтева брисање неповезаног стања. Не бришите цео ланац POSTROUTING ни сваки conntrack запис као радњу заустављања једног профила, јер их друге услуге деле. Забележите која је компонента променила интерфејс, руту и политику, а не само да је почетна кука изашла са нулом.

Политика која преживи поновно повезивање је она чији су власници именовани и чија су правила тестирана са тунелом и спуштеним и подигнутим. Кука која извештава о успеху доказује само да се кука извршила.

Повезани чланци