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
Күтүлгөн натыйжа — ошол ээси бар саясаттын кайра түзүлүшү жана эскирген абалдын зейнетке чыгышы, бул ар бир кайра туташуудан кийин кабык эрежесин кайра кошуудан алда канча туруктуу. Өзгөртүүлөр журналында эрежеге ээ болгон файлды жана аны колдогон версияны атаган бир сапты сактаңыз. Ошондо кийинки инженер кабык тарыхын казбастан саясатты таба алат. Эч кимге таандык эмес эреже кайра жоголуучу эреже.