Једна /24 за лабораторијски штампач нестаје између два позива ip route show, а евиденција клијента само каже да се мрежа променила. Ништа није било погрешно у команди, префиксу или вашим привилегијама. Корпоративни клијент који поседује модел рутирања хоста поново намеће тај модел сваки пут када га неко други уреди, па се унос који сте додали уклања као уљеза. Борба с њим у истој табели је изгубљена позиција. Решење је да потпуно престанете да се такмичите за ту табелу и ставите изузетак тамо где монитор никада не гледа.

Монитор објашњава несталу руту

Покажите то пре него што било шта редизајнирате: прочитајте табелу, додајте префикс, сачекајте неколико секунди, прочитајте поново. Ако уноса нема, а нисте ништа унели да га уклоните, неко осматра. Пронађите процес који поседује то понашање и прочитајте његов дневник око тренутка када рута нестане, јер иста услуга обично одржава тунел, филтере пакета и конфигурацију резолвера. Убити га да би рута остала је замена због које ћете зажалити при следећем поновном повезивању.

ip route show
ip route add 192.168.2.0/24 dev enp0s31f6
sleep 5; ip route show

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

Друга табела је невидљива за монитор

Агент обнавља само табелу коју поседује. Дајте изузетку сопствену табелу и правило које тамо шаље одговарајуће одредишне адресе, и главна табела се никада не мења, па агент нема шта да исправи. То је цела идеја: један простор имена рута који одржава неко други и један који само ви дирате.

Замена је одржавање. Два објекта могу да се разиђу, а положај правила на листи једнако је важан као рута у табели коју оно бира.

Изградите изузетак, а затим га пустите да победи

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

ip rule add to 192.168.2.0/24 table 110 pref 30010
ip route add 192.168.2.0/24 dev enp0s31f6 table 110
ip route get 192.168.2.50

ip route get решава руту коју би језгро користило, укључујући уређај и изворну адресу. Не исписује идентификатор табеле, па га упарите са ip rule show када треба да потврдите која је табела победила. Заједно одговарају на једино важно питање: да ли саобраћај ка тој адреси излази тамо где сте намеравали?

Други облици исте идеје

Образац се уопштава чим престанете да мислите одредиштима. Локална подмрежа може остати доступна док тунел држи подразумевану руту. Одговори SSH сервера повезаног на LAN могу излазити кроз интерфејс којим су стигли уместо да нестану у тунелу. А правило засновано на интерфејсу може гурнути у тунел све што стигне на бежични интерфејс, док саобраћај који сам хост генерише остаје на Ethernet:

ip rule add iif wlan0 table 10
ip route add default dev tun0 table 10

Последњи случај одговара улазном интерфејсу, а не одредишту, што је други тип правила и други ментални модел. Прослеђени саобраћај такође захтева укључен net.ipv4.ip_forward, а удаљена страна мора да усмери опсег извора назад или да га преведе; правило на једној машини никада не ствара другу половину пута.

Третирајте правило као једнократно

Правила и руте табела живе у меморији. После поновног повезивања уређај тунела може бити преименован, додељена адреса може да се помери, а правило са старом вредношћу тихо престаје да се поклапа. Поново примените целу промену из једне скрипте која је поседује, затим поново проверите ip rule show, тренутно име уређаја и нови ip route get на стварном одредишту пре него што поверите изузетку.

Две границе опстају без обзира на пажњу. Клијент и даље контролише сопствена правила филтрирања и конфигурацију резолвера, а изузетак рутирања не замењује ниједно од њих. Ако клијент такође избрише ваше правило политике, подржани путеви су његова сопствена политика подељеног тунела или клијент који вам дозвољава да управљате рутама, као OpenConnect; крпење добављачевог бинарног фајла да бисте утишали његов монитор је обавеза одржавања са приложеном провером интегритета.

Запишите број табеле, приоритет и одредиште у белешку поред скрипте. Иначе ће следећа особа наћи правило које надјачава тунел и неће моћи да сазна зашто.

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