Тунелите са временни; политиката не бива да бъде такава. На 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 като действие за спиране на един профил, защото други услуги ги споделят. Записвайте кой компонент е променил интерфейса, маршрута и политиката, а не само че куката за стартиране е излязла с нула.

Политика, която оцелява при повторно свързване, е тази, чиито собственици са именувани и чиито правила са тествани с тунела както спрян, така и включен. Кука, която съобщава успех, доказва само, че куката е стартирала.

Подобни статии