Magdagdag ng patakarang rule gamit ang ip rule at gumagana ito hanggang mawala ang link; sa sandaling iyon ay wala na talaga ito. Walang biglang nabigo: nagbago ang estado ng kernel, at walang may-ari ng configuration ang nakakaalam na dapat may rule. Iyon ang buong pagkakaiba ng rule na nananatili at ng hindi. Sa host na may systemd-networkd, ang solusyon ay bigyan ng may-ari ang rule, hindi ang muling pagpapatakbo ng command pagkatapos ng bawat muling pagkonekta.

Umiiral lamang ang rule kung may nagmamay-ari nito

Ang patakaran sa routing ng kernel ay estado, hindi configuration. Nabubuhay ito sa tumatakbong sistema, at anumang bumabagsak sa interface na pinagkakatiwalaan nito ay maaaring magdala nito. Binabago ng command sa shell ang estadong iyon at walang iniiwang talaan ng layunin.

Kabaligtaran ang trabaho ng mga tagapamahala ng network: binabasa nila ang configuration, inilalapat ito at inilalapat muli kapag may kaganapan sa link na nagpapawalang-bisa sa dating estado. Ang rule na idineklara sa kanilang configuration ay muling ginagawa, samantalang ang rule na idinagdag sa tabi nila ay banyagang bagay na walang may-ari.

May pangalan ang pagkakaibang iyon sa networkd, at sulit itong basahin bago paganahin ang anuman. Ang mga banyagang rule ay tinatanggal bilang default sa mga bagong bersyon, na nagugulat sa mga umaasang mananatili ang kanilang manwal na entry.

Basahin ang bersyon bago magtiwala sa isang setting

Kinokontrol ng isang setting sa networkd.conf ang pag-uugali ng pagmamay-ari, at wala ang setting na iyon sa mga lumang release ng systemd. Suriin ang naka-install na bersyon bago magdisenyo sa paligid nito, dahil iba ang ugali ng lumang host kaysa sa dokumentasyong binabasa mo.

Dalawang halaga ang mahalaga. Ang isa ay nagpapasya kung tatanggalin ang mga rule na hindi idineklara sa configuration ng networkd, at ang isa ay ganoon din para sa mga ruta. Pareho silang tungkol sa pagmamay-ari at hindi sa nilalaman ng patakaran, at parehong pinipili bilang default ang mas mahigpit na ugali sa kasalukuyang mga release. Ang pagsasara sa kanila nang pangkalahatan ay nagpapanatiling buhay sa bawat banyagang rule, na mas malawak na pasya kaysa sa pagdeklara ng isang nais na patakaran ng VPN.

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

Sinasabi sa iyo ng grep na iyon kung ano ang nakatakda nang lokal at kung ano ang default ng vendor. Ang kawalan ay impormasyon din, dahil nangangahulugan itong umiiral ang naka-compile na default. Isulat ang default sa iyong mga tala para hindi na kailangang muling tuklasin ito ng susunod na tao.

Ideklara ang rule at ang table na tinutukoy nito

Ang rule sa isang .network file ay nagpapangalan ng table, at iyon lang ang ginagawa ng pangalan. Hindi ito lumilikha ng mga ruta sa loob ng table na iyon at hindi nito sinusuri kung may saysay ang mga ito. Ang pagdeklara ng rule na walang ruta ay gumagawa ng patakarang itinatapat ang trapiko at pagkatapos ay itinatapon ito.

Ideklara ang mga ruta sa parehong file, na may maabot na susunod na hop at tamang table. Panatilihin ang priority sa idineklarang rule para lumapag ito kung saan mo inaasahan sa nakaayos na listahan. Ang rule na umabot sa maling table nang mas maaga kaysa sa nilayon ay nagbabago ng mas maraming trapiko kaysa sa serbisyong gusto mong ayusin. Basahin ang bahagi sa ibaba bilang hugis at hindi bilang kumpletong file, dahil kailangan pa ring naroroon ang pagmamay-ari ng interface at ang natitirang bahagi ng koneksyon.

[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

Pagkatapos ay i-reload at basahin ang estado ng kernel sa halip na ang file. Ang configuration na malinis na na-parse ay maaari pa ring gumawa ng rule na hindi mo nilayon, at nagkakasundo lamang ang dalawang pananaw kapag kumpleto ang deklarasyon.

Pumili ng isang may-ari para sa interface

Dalawang tagapamahala sa isang tunnel ay gumagawa ng labanan na mukhang bug sa pareho. Ang pag-import ng umiiral na wg-quick setup sa networkd ay migrasyon at hindi dagdag, at ang pagpapatakbo ng pareho ay nag-iiwan sa interface at mga rule nito sa ilalim ng dalawang may-ari.

Gawin ang migrasyon sa isang hakbang: ihinto ang lumang unit, huwag paganahin ito, ideklara ang interface at ang mga ruta nito sa networkd, pagkatapos ay i-reload. Suriin na hindi na makakabalik ang lumang unit sa boot. Ang natirang unit na muling nag-aaktiba pagkatapos ng restart ay nagsusulat sa ibabaw ng estadong kakadeklara mo lang. Itago ang lumang configuration file hanggang makalampas ang bago sa isang muling pagkonekta, pagkatapos ay iretiro ito.

Ang pagmamay-ari ng marka ay karapat-dapat sa parehong pag-iingat: kung tumutugma ang isang rule sa marka ng firewall, may dapat magtakda ng markang iyon. Ang rule na tumutukoy sa markang walang nagtatakda ay patay na configuration na mukhang sinadya.

Sanayin ang mga kaganapan ng lifecycle

Ang configuration ay kasinghalaga lamang ng ugali nito sa mga kaganapan. Ibaba ang link, iangat ito, i-restart ang serbisyo at i-renew ang address. Pagkatapos ng bawat isa, basahin ang listahan ng rule at ang nilalaman ng table.

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

Ang nilalayong resulta ay ang parehong patakarang may may-ari na muling ginawa at ang lumang estado ay iretiro, na mas matibay kaysa sa muling pagdaragdag ng rule sa shell pagkatapos ng bawat muling pagkonekta. Panatilihin ang isang linya sa talaan ng pagbabago na nagpapangalan sa file na nagmamay-ari ng rule at sa bersyon na sumusuporta rito. Pagkatapos ay mahahanap ng susunod na inhinyero ang patakaran nang hindi naghahalungkat ng kasaysayan ng shell. Ang rule na walang may-ari ay rule na mawawala muli.

Kaugnay na mga artikulo