ip rule арқылы саясат ережесін қосыңыз, ол байланыс жоғалғанша жұмыс істейді; сол сәтте ол жай ғана жоқ. Ештеңе дауыстап сәтсіздікке ұшыраған жоқ: ядро күйі өзгерді, ал ереженің болуы керектігін ешбір конфигурация иесі білмеді. Осының бәрі сақталатын және сақталмайтын ереженің айырмашылығы. systemd-networkd бар хостта шешім — ережеге ие беру, әр қайта қосылудан кейін команданы қайта іске қосу емес.

Ереже біреу оған ие болса ғана бар болады

Ядроның маршруттау саясаты — конфигурация емес, күй. Ол жұмыс істеп тұрған жүйеде өмір сүреді, және ол тәуелді интерфейсті бұзатын кез келген нәрсе оны өзімен бірге алып кете алады. Қабықтағы команда сол күйді өзгертеді және ниеттің ешбір жазбасын қалдырмайды.

Желі менеджерлері керісінше жұмыс істейді: олар конфигурацияны оқып, қолданады және байланыс оқиғасы алдыңғы күйді жарамсыз еткенде қайта қолданады. Олардың конфигурациясында жарияланған ереже қайта құрылады, ал олардың жанына қосылған ереже иесіз бөгде нысан болып қалады.

Бұл айырмашылықтың networkd-де атауы бар және бірдеңені қосу алдында оны оқыған жөн. Жаңа нұсқаларда бөгде ережелер әдепкі бойынша жойылады, бұл қолмен енгізген жазбалары қалады деп күткендерді таңырқатады.

Параметрге сенбес бұрын нұсқаны оқыңыз

Иелік мінез-құлқы networkd.conf-тегі параметрмен басқарылады, ал бұл параметр ескі systemd шығарылымдарында жоқ. Оның айналасында жобалау алдында орнатылған нұсқаны тексеріңіз, өйткені ескі хост сіз оқып отырған құжаттамадан өзгеше әрекет етеді.

Екі мән маңызды. Біреуі networkd конфигурациясында жарияланбаған ережелердің жойылатынын шешеді, екіншісі маршруттар үшін солай істейді. Екеуі де саясаттың мазмұны туралы емес, иелік туралы, және екеуі де ағымдағы шығарылымдарда әдепкі бойынша қатаңырақ мінез-құлықты таңдайды. Оларды жаһандық өшіру әрбір бөгде ережені тірі қалдырады, бұл бір мақсатты VPN саясатын жариялаудан әлдеқайда кең шешім.

systemctl --version | head -1
networkctl --version | head -1
grep -R "ManageForeign" /etc/systemd/ /usr/lib/systemd/ 2>/dev/null

Ол grep сізге жергілікті түрде не орнатылғанын және жеткізушінің әдепкісі қандай екенін айтады. Жоқтық та ақпарат, өйткені ол компиляцияланған әдепкінің қолданылатынын білдіреді. Әдепкіні жазбаларыңызға жазыңыз, келесі адам оны қайта ашудың қажеті болмас үшін.

Ережені және ол сілтейтін кестені жариялаңыз

.network файлындағы ереже кестені атайды, ал атау тек осыны істейді. Ол сол кестенің ішіндегі маршруттарды жасамайды және олардың мағыналы екенін тексермейді. Ережені маршруттарсыз жариялау трафикті сәйкестендіріп, содан кейін оны тастайтын саясат береді.

Маршруттарды сол файлда, қолжетімді келесі секірістермен және дұрыс кестемен жариялаңыз. Жарияланған ережеде басымдықты сақтаңыз, сонда ол реттелген тізімде күткен жеріңізге түседі. Қате кестеге уақытынан ерте жететін ереже түзетпек болған қызметтен де көп трафикті өзгертеді. Төмендегі үзіндіні толық файл емес, пішін ретінде оқыңыз, өйткені интерфейс иелігі мен қосылымның қалған бөлігі әлі де болуы керек.

[RoutingPolicyRule]
Family=ipv4
IPProtocol=tcp
SourcePort=443
Table=100
Priority=1000

[Route]
Destination=10.80.0.0/24
Gateway=10.80.0.1
Table=100

Содан кейін қайта жүктеп, файлды емес, ядро күйін оқыңыз. Таза талданған конфигурация да сіз ойламаған ереже шығара алады, ал екі көрініс тек жариялау толық болғанда сәйкеседі.

Интерфейс үшін бір ие таңдаңыз

Бір туннельдегі екі менеджер екеуінде де қате сияқты көрінетін талас тудырады. Бар wg-quick баптауын networkd-ге импорттау — қосу емес, көшіру, ал екеуін де жүргізу интерфейс пен оның ережелерін екі иенің қарамағында қалдырады.

Көшіруді бір өтуде жасаңыз: ескі бірлікті тоқтатыңыз, өшіріңіз, интерфейс пен оның маршруттарын networkd-де жариялаңыз, содан кейін қайта жүктеңіз. Ескі бірліктің жүктелу кезінде қайта орала алмайтынын тексеріңіз. Қайта іске қосудан кейін қайта белсендірілетін қалдық бірлік жаңа жариялаған күйдің үстінен жазады. Жаңасы бір қайта қосылудан аман өткенше ескі конфигурация файлын сақтаңыз, содан кейін оны зейнетке шығарыңыз.

Белгі иелігі де сол күтімді қажет етеді: егер ереже брандмауэр белгісіне сәйкес келсе, біреу сол белгіні қоюы керек. Ешкім қоймайтын белгіге сілтейтін ереже әдейі жасалғандай көрінетін өлі конфигурация.

Өмірлік цикл оқиғаларын жаттығыңыз

Конфигурация оқиғалар бойы мінез-құлқы қаншалықты жақсы болса, соншалықты жақсы. Байланысты түсіріңіз, көтеріңіз, қызметті қайта іске қосыңыз және мекенжайды жаңартыңыз. Әрқайсысынан кейін ережелер тізімін және кестенің мазмұнын оқыңыз.

sudo networkctl reload
ip rule show
ip route show table 100
sudo systemctl restart systemd-networkd

Күтілетін нәтиже — сол иесі бар саясаттың қайта құрылуы және ескірген күйдің зейнетке шығуы, бұл әр қайта қосылудан кейін қабық ережесін қайта қосудан әлдеқайда төзімді. Өзгерістер жазбасында ережеге ие файлды және оны қолдайтын нұсқаны атайтын бір жол сақтаңыз. Сонда келесі инженер қабық тарихын қазбай-ақ саясатты таба алады. Ешкімге тиесілі емес ереже қайтадан жоғалатын ереже.

Қатысты мақалалар