systemd-networkd-тэй дахин холбогдсоны дараа ip rule-г хадгал
Бүрхүүлээс нэмсэн ip дүрэм дараагийн холбоосын үйл явдалд алга болдог. Дүрэм, түүний хүснэгт, маршрутыг systemd-networkd-д зарласнаар бодлого дахин үүснэ.
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
Зорьсон үр дүн нь ижил эзэнтэй бодлого дахин үүсч, хуучирсан төлөв тэтгэвэрт гарах бөгөөд энэ нь дахин холбогдох бүрд бүрхүүлийн дүрмийг дахин нэмэхээс илүү тэсвэртэй. Өөрчлөлтийн бүртгэлд дүрмийг эзэмшдэг файл болон түүнийг дэмждэг хувилбарыг нэрлэсэн нэг мөр хадгал. Тэгвэл дараагийн инженер бүрхүүлийн түүх ухахгүйгээр бодлогыг олж чадна. Хэнд ч харьяалагдахгүй дүрэм дахин алдагдах дүрэм.