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
எதிர்பார்க்கப்பட்ட முடிவு அதே உரிமையுள்ள கொள்கை மீண்டும் உருவாகி பழைய நிலை ஓய்வு பெறுவதே, இது ஒவ்வொரு மீள் இணைப்புக்குப் பிறகும் ஷெல் விதியை மீண்டும் சேர்ப்பதை விட நீடித்தது. மாற்றப் பதிவில் விதியை உரிமை கொண்ட கோப்பையும் அதை ஆதரிக்கும் பதிப்பையும் பெயரிடும் ஒரு வரியை வைத்திருங்கள். அப்போது அடுத்த பொறியாளர் ஷெல் வரலாற்றைத் தோண்டாமல் கொள்கையைக் கண்டறியலாம். யாருக்கும் உரிமையில்லாத விதி மீண்டும் இழக்கப்படும் விதி.