ip qoidasini systemd-networkd bilan qayta ulanishdan keyin saqlab qoling
Qobiqdan qo'shilgan ip qoidasi keyingi havola hodisasida yo'qoladi. Qoidani, uning jadvalini va marshrutlarini systemd-networkd da e'lon qiling, shunda siyosat qaytadan yaratiladi.
ip rule bilan siyosat qoidasini qo'shing, u havola yo'qolguncha ishlaydi; o'sha paytda u shunchaki yo'q. Hech narsa baland ovozda muvaffaqiyatsiz bo'lmadi: yadro holati o'zgardi va hech bir konfiguratsiya egasi qoida bo'lishi kerakligini bilmasdi. Bu saqlanib qoladigan va qolmaydigan qoida o'rtasidagi barcha farq. systemd-networkd bo'lgan xostda yechim qoidaga egiz berish, har qayta ulanishdan keyin buyruqni qayta ishga tushirish emas.
Qoida faqat kimdir unga ega bo'lsa mavjud bo'ladi
Yadroning marshrutlash siyosati holat, konfiguratsiya emas. U ishlab turgan tizimda yashaydi va u bog'liq bo'lgan interfeysni buzadigan har qanday narsa uni o'zi bilan olib ketishi mumkin. Qobiqdagi buyruq o'sha holatni o'zgartiradi va niyat haqida hech qanday yozuv qoldirmaydi.
Tarmoq menejerlari teskari ishlaydi: ular konfiguratsiyani o'qiydi, qo'llaydi va havola hodisasi oldingi holatni bekor qilganda qayta qo'llaydi. Ularning konfiguratsiyasida e'lon qilingan qoida qaytadan yaratiladi, ularning yoniga qo'shilgan qoida esa egasiz begona obyekt bo'lib qoladi.
Bu farqning networkd da nomi bor va biror narsani yoqishdan oldin uni o'qishga arziydi. Yangi versiyalarda begona qoidalar sukut bo'yicha olib tashlanadi, bu qo'lda kiritilgan yozuvlari qoladi deb kutganlarni hayratga soladi.
Sozlamaga ishonishdan oldin versiyani o'qing
Egalik xatti-harakati networkd.conf dagi sozlama bilan boshqariladi va bu sozlama eski systemd versiyalarida yo'q. Uning atrofida loyihalashdan oldin o'rnatilgan versiyani tekshiring, chunki eski xost siz o'qiyotgan hujjatlardan boshqacha ishlaydi.
Ikki qiymat muhim. Biri networkd konfiguratsiyasida e'lon qilinmagan qoidalar olib tashlanadimi-yo'qmi, ikkinchisi marshrutlar uchun ham shunday qiladi. Ikkisi ham siyosat mazmuni emas, egalik haqida, va ikkisi ham joriy versiyalarda sukut bo'yicha qat'iyroq xatti-harakatni tanlaydi. Ularni umumiy o'chirish har bir begona qoidani tirik qoldiradi, bu esa bitta maqsadli VPN siyosatini e'lon qilishdan ancha kengroq qaror.
systemctl --version | head -1
networkctl --version | head -1
grep -R "ManageForeign" /etc/systemd/ /usr/lib/systemd/ 2>/dev/null
O'sha grep sizga mahalliy ravishda nima sozlanganini va sotuvchining sukut qiymati nima ekanini aytadi. Yo'qlik ham axborot, chunki u kompilyatsiya qilingan sukut amal qilishini bildiradi. Sukutni qaydlaringizga yozing, keyingi odam uni qaytadan kashf qilmasligi uchun.
Qoidani va u ko'rsatgan jadvalni e'lon qiling
.network faylidagi qoida jadvalni nomlaydi va nom faqat shuni qiladi. U o'sha jadval ichidagi marshrutlarni yaratmaydi va ular mantiqiy ekanini tekshirmaydi. Qoidani marshrutlarsiz e'lon qilish trafikni moslashtirib, keyin uni tashlab yuboradigan siyosat beradi.
Marshrutlarni o'sha faylda, yetib boriladigan keyingi sakrashlar va to'g'ri jadval bilan e'lon qiling. E'lon qilingan qoidada ustuvorlikni saqlang, shunda u tartiblangan ro'yxatda kutgan joyingizga tushadi. Noto'g'ri jadvalga mo'ljaldan oldin yetib boradigan qoida tuzatmoqchi bo'lgan xizmatingizdan ko'proq trafikni o'zgartiradi. Quyidagi parcha to'liq fayl emas, shakl sifatida o'qing, chunki interfeys egaligi va ulanishning qolgan qismi hali ham bo'lishi kerak.
[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
Keyin qayta yuklang va faylni emas, yadro holatini o'qing. Toza tahlil qilingan konfiguratsiya ham siz o'ylamagan qoidani keltirib chiqarishi mumkin va ikkala ko'rinish faqat e'lon to'liq bo'lganda mos keladi.
Interfeys uchun bitta egiz tanlang
Bitta tunnelda ikkita menejer ikkalasida ham xatoga o'xshaydigan kurash keltiradi. Mavjud wg-quick sozlamasini networkd ga import qilish qo'shish emas, ko'chirish va ikkalasini ishga tushirish interfeys va uning qoidalarini ikkita egiz qo'l ostida qoldiradi.
Ko'chirishni bir o'tishda bajaring: eski blokni to'xtating, uni o'chiring, interfeys va uning marshrutlarini networkd da e'lon qiling, keyin qayta yuklang. Eski blok yuklanishda qaytib kelolmasligini tekshiring. Qayta ishga tushirishdan keyin qayta faollashadigan qoldiq blok siz hozir e'lon qilgan holat ustiga yozadi. Yangisi bitta qayta ulanishdan omon o'tguncha eski konfiguratsiya faylini saqlang, keyin uni nafaqaga chiqaring.
Belgi egaligi ham xuddi shunday e'tiborga loyiq: agar qoida tarmoq ekrani belgisiga mos kelsa, kimdir o'sha belgini qo'yishi kerak. Hech kim qo'ymaydigan belgiga ishora qiladigan qoida ataylab qilinganga o'xshaydigan o'lik konfiguratsiya.
Hayot davri hodisalarini mashq qiling
Konfiguratsiya hodisalar bo'ylab xatti-harakati qanchalik yaxshi bo'lsa, shunchalik yaxshi. Havolani tushiring, ko'taring, xizmatni qayta ishga tushiring va manzilni yangilang. Har biridan keyin qoidalar ro'yxati va jadval mazmunini o'qing.
sudo networkctl reload
ip rule show
ip route show table 100
sudo systemctl restart systemd-networkd
Ko'zda tutilgan natija o'sha egalikli siyosatning qaytadan yaratilishi va eskirgan holatning nafaqaga chiqishi, bu esa har qayta ulanishdan keyin qobiq qoidasini qayta qo'shishdan ancha bardoshli. O'zgarishlar jurnalida qoidaga ega faylni va uni qo'llab-quvvatlaydigan versiyani nomlaydigan bitta satr saqlang. Shunda keyingi muhandis qobiq tarixini kovlamasdan siyosatni topa oladi. Hech kimga tegishli bo'lmagan qoida yana yo'qoladigan qoida.