Yenidən qoşulmadan sonra ip qaydasını systemd-networkd ilə qoruyun
Shell-də verilən ip qaydası növbəti link hadisəsində yox olur. Qaydanı, onun cədvəlini və marşrutlarını systemd-networkd-də elan edin ki, siyasət yenidən yaradılsın.
ip rule ilə siyasət qaydası əlavə edin və o, link itənə qədər işləyir; o nöqtədə sadəcə yox olur. Heç nə uca səslə uğursuz olmadı: nüvə vəziyyəti dəyişdi və heç bir konfiqurasiya sahibi qaydanın mövcud olmalı olduğunu bilmirdi. Qalan qayda ilə qalmayan qayda arasındakı bütün fərq budur. systemd-networkd hostunda düzəliş qaydaya sahib verməkdir, hər yenidən qoşulmadan sonra əmri təkrar işlətmək deyil.
Qayda yalnız kimsə ona sahib olduqda mövcuddur
Nüvənin marşrutlaşdırma siyasəti konfiqurasiya deyil, vəziyyətdir. O, işləyən sistemdə yaşayır və asılı olduğu interfeysi sökən hər şey onu da apara bilər. Shell əmri bu vəziyyəti dəyişir və niyyət barədə heç bir qeyd qoymur.
Şəbəkə menecerləri əks istiqamətdə işləyir: konfiqurasiyanı oxuyur, tətbiq edir və link hadisəsi əvvəlki vəziyyəti etibarsız etdikdə yenidən tətbiq edirlər. Onların konfiqurasiyasında elan edilən qayda yenidən yaradılır, onların yanında əlavə edilən qayda isə sahibi olmayan yad obyektdir.
Bu fərqin networkd-də adı var və hər hansı bir şeyi aktivləşdirməzdən əvvəl onu oxumağa dəyər. Yad qaydalar son versiyalarda susmaya görə silinir, bu da əl ilə yazdıqlarının qalacağını gözləyənləri təəccübləndirir.
Bir tənzimi etibarlı saymazdan əvvəl versiyanı oxuyun
Sahiblik davranışı networkd.conf-dakı tənzimlə idarə olunur və bu tənzim köhnə systemd buraxılışlarında yoxdur. Ətrafında dizayn qurmazdan əvvəl quraşdırılmış versiyanı yoxlayın, çünki köhnə host oxuduğunuz sənədlərdən fərqli davranır.
İki dəyər vacibdir. Biri networkd konfiqurasiyasında elan edilməyən qaydaların silinib-silinmədiyini, digəri isə marşrutlar üçün eyni şeyi həll edir. Hər ikisi siyasətin məzmunu deyil, sahibliklə bağlıdır və hər ikisi cari buraxılışlarda susmaya görə daha sərt davranışa malikdir. Onları qlobal söndürmək hər yad qaydanı sağ saxlayır, bu isə bir nəzərdə tutulan VPN siyasətini elan etməkdən qat-qat geniş qərardır.
systemctl --version | head -1
networkctl --version | head -1
grep -R "ManageForeign" /etc/systemd/ /usr/lib/systemd/ 2>/dev/null
Bu grep sizə yerli olaraq nəyin qurulduğunu və satıcı susmasının nə olduğunu deyir. Yoxluq da məlumatdır, çünki bu, kompilyasiya edilmiş susmanın qüvvədə olduğunu bildirir. Susmanı qeydlərinizə yazın ki, növbəti şəxs onu yenidən kəşf etməsin.
Qaydanı və onun göstərdiyi cədvəli elan edin
.network faylındakı qayda bir cədvəl adlandırır və adın etdiyi hər şey bundan ibarətdir. O, həmin cədvəlin içindəki marşrutları yaratmır və onların məntiqli olub-olmadığını yoxlamır. Qaydanı marşrutsuz elan etmək trafiki uyğunlaşdıran və sonra onu atan siyasət yaradır.
Marşrutları eyni faylda, çatan növbəti atlamalarla və düzgün cədvəllə elan edin. Prioriteti elan edilmiş qaydada saxlayın ki, sıralanmış siyahıda gözlədiyiniz yerə düşsün. Yanlış cədvələ vaxtından əvvəl çatan qayda düzəltmək istədiyiniz xidmətdən daha çox trafiki dəyişir. Aşağıdakı fraqmenti tam fayl deyil, forma kimi oxuyun, çünki interfeys sahibliyi və qalan bağlantı hələ də mövcud olmalıdır.
[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
Sonra yenidən yükləyin və faylı deyil, nüvə vəziyyətini oxuyun. Təmiz təhlil edilən konfiqurasiya yenə də nəzərdə tutmadığınız qayda yarada bilər və iki görünüş yalnız elan tam olduqda uyğun gəlir.
İnterfeys üçün bir sahib seçin
Bir tuneldə iki menecer hər ikisində baq kimi görünən toqquşma yaradır. Mövcud wg-quick quraşdırmasını networkd-ə idxal etmək əlavə deyil, köçürmədir və hər ikisini işlətmək interfeysi və qaydalarını iki sahibin altında qoyur.
Köçürməni bir keçiddə edin: köhnə vahidi dayandırın, onu deaktiv edin, interfeysi və marşrutlarını networkd-də elan edin, sonra yenidən yükləyin. Köhnə vahidin yüklənmə zamanı geri qayıda bilmədiyini yoxlayın. Yenidən başlatmadan sonra təkrar aktivləşən qalıq vahid indicə elan etdiyiniz vəziyyətin üzərinə yazır. Köhnə konfiqurasiya faylını yeni fayl bir yenidən qoşulmanı keçənə qədər saxlayın, sonra onu təqaüdə çıxarın.
Marka sahibliyi də eyni qayğıya layiqdir: qayda firewall markasına uyğun gəlirsə, kiminsə həmin markanı qoyması lazımdır. Heç kimin qoymadığı markaya istinad edən qayda qəsdən belə görünən ölü konfiqurasiyadır.
Həyat dövrü hadisələrini məşq edin
Konfiqurasiya yalnız hadisələr boyunca davranışı qədər yaxşıdır. Linki aşağı salın, yuxarı qaldırın, xidməti yenidən başladın və ünvanı yeniləyin. Hər birindən sonra qayda siyahısını və cədvəlin məzmununu oxuyun.
sudo networkctl reload
ip rule show
ip route show table 100
sudo systemctl restart systemd-networkd
Nəzərdə tutulan nəticə eyni sahibli siyasətin yenidən yaradılması və köhnə vəziyyətin təqaüdə çıxmasıdır ki, bu da hər yenidən qoşulmadan sonra shell qaydasını yenidən əlavə etməkdən daha davamlıdır. Dəyişiklik qeydində qaydaya sahib olan faylı və onu dəstəkləyən versiyanı adlandıran bir sətir saxlayın. Sonra növbəti mühəndis siyasəti shell tarixçəsini axtarmadan tapa bilər. Heç kimin sahib olmadığı qayda yenidən itiriləcək qaydadır.