Systemd vs NetworkManager: பூட்டில் VPN-ஐ யார் தொடங்குகிறார்?
மூன்று முறைகள் ஒரே Ubuntu சுயவிவரத்தைத் தொடங்க முடியும், ஒவ்வொன்றுக்கும் வெவ்வேறு தூண்டல் உள்ளது. அவற்றை ஒப்பிடுங்கள், ஒரு உரிமையாளரை வைத்திருங்கள், நகலை நீக்குங்கள்.
ஒரே படிமத்திலிருந்து இரண்டு Ubuntu இயந்திரங்கள், ஒரு VPN சுயவிவரம், உள்நுழைவில் எதிர் முடிவுகள்: ஒன்றில் டெஸ்க்டாப் தோன்றுவதற்கு முன்பே சுரங்கப்பாதை மேலே உள்ளது, மற்றொன்றில் அது ஒருபோதும் ஏறாது. இங்கே சுயவிவரம் மாறியாக இல்லை. மூன்று பகுதிகளில் எதற்கு அதைத் தொடங்க உத்தரவு வழங்கப்பட்டது என்பதே வேறுபாடு, அந்த மூன்றும் ஒரே நிலைமாற்றியைப் பகிர்ந்து கொள்ளவில்லை.
அவற்றை அருகருகே ஒப்பிடுவது ஊகிப்பதை விட வேகமானது. ஒவ்வொன்றும் அடையாளம் காணக்கூடிய வகையில் தோல்வியடைகிறது, அதுவே ஒப்பீட்டை மதிப்புள்ளதாக்குகிறது.
மூன்று வெவ்வேறு தூண்டல்களுடன் மூன்று தொடக்கிகள்
தொகுக்கப்பட்ட openvpn சேவை மிகப் பழமையான பாதை. அதன் init ஸ்கிரிப்ட் /etc/default/openvpn இலிருந்து தன்னியக்கத் தொடக்கப் பட்டியலைப் படிக்கிறது. அந்தப் பட்டியல் கருத்துரையாக்கப்பட்டிருந்தாலோ காலியாக விடப்பட்டிருந்தாலோ, ஸ்கிரிப்ட் நீங்கள் சேர்த்த ஒரே உள்ளமைவுக்குப் பதிலாக அந்தக் கோப்பகத்தில் காணும் ஒவ்வொரு உள்ளமைவையும் தொடங்கும். ஒரு சுரங்கப்பாதைக்காகச் சேர்க்கப்பட்ட ஒரு கோப்பு அமைதியாகப் பலவற்றை மேலே கொண்டு வரலாம்.
| Starter | What triggers it | Typical failure |
|---|---|---|
| Init script and templated units | Boot, plus anything in the autostart list | Starts every config, not the one you meant |
| NetworkManager secondary | Activation of the base Wi-Fi or Ethernet profile | Nothing happens until that base link comes up |
| Hand-written unit or wrapper | Whatever its WantedBy and ExecStart say | Runs a different binary or environment than your shell |
மக்கள் தவறாக உள்ளமைப்பது இரண்டாவது வரிசையைத்தான். NetworkManager இறக்குமதி செய்யப்பட்ட சுயவிவரத்தை வைத்திருக்கும், அதைத் தொடங்கும், ஆனால் மற்றொரு இணைப்பின் இரண்டாம் நிலையாக மட்டுமே, அதாவது தூண்டல் VPN-க்கு அல்ல, பிணைய இணைப்புக்கு உரியது.
அமைப்புச் செலவையும் வீச்சையும் ஒப்பிடுங்கள்
init ஸ்கிரிப்ட் பாதைக்கு ஒரு வரி மட்டும் செலவாகும், இயந்திரத்தின் ஒவ்வொரு உள்ளமைவையும் அது உள்ளடக்கும். இது திசைவிக்கு ஏற்றது, வெவ்வேறு பிணையங்களில் இணையும் மடிக்கணினிக்குப் பொருந்தாது. NetworkManager பாதைக்கு ஒரு UUID தேடல் செலவாகும், சுரங்கப்பாதையை ஒரு அடிப்படை இணைப்புடன் அது பிணைக்கும். வேலை இடத்தின் SSID-இல் அது மேலே ஏறும், விடுதி பிணையத்தில் கீழேயே இருக்கும்.
கைப்பட எழுதப்பட்ட unit அதிகச் செலவாகும், மற்ற சேவைகளுக்கான வரிசையையும் சேர்த்து அதிகக் கட்டுப்பாட்டைத் தரும். தீர்மானிக்கும் காரணி வீச்சு. இயந்திரத்தில் ஒரு பிணையமும் ஒரு சுரங்கப்பாதையும் இருந்தால், தொகுக்கப்பட்ட சேவை நேர்மையானதும் ஊகிக்கக்கூடியதும் ஆகும். சுரங்கப்பாதை ஒரு குறிப்பிட்ட Wi-Fi பிணையத்தைப் பின்பற்ற வேண்டுமானால், மூன்றில் இரண்டாம் நிலை மட்டுமே கூடுதல் ஸ்கிரிப்டிங் இல்லாமல் அந்த நிபந்தனையை வெளிப்படுத்துகிறது.
ஒரு உரிமையாளரைத் தேர்ந்தெடுத்து மற்றவற்றை அகற்றுங்கள்
இரு உரிமையாளர்கள் தொடங்கும் சுயவிவரம் பூட்டுகளுக்கு இடையே மாறும் நேரத்தை உருவாக்குகிறது, அது எந்த ஒரு முறையை விடவும் மோசமானது. உரிமையாளரைத் தேர்ந்தெடுங்கள், பிறகு போட்டிப் பாதையை விபத்தால் அல்ல, வேண்டுமென்றே முடக்குங்கள்.
# who is configured to start something?
grep -v '^#' /etc/default/openvpn
systemctl list-units 'openvpn*'
nmcli -g connection.secondaries connection show 'Work Wi-Fi'
# NetworkManager: attach the tunnel to the base link by UUID
TUNNEL=$(nmcli -g UUID connection show 'Corp Tunnel')
nmcli connection modify 'Work Wi-Fi' +connection.secondaries "$TUNNEL"
நீக்கப்படுவது தொகுக்கப்பட்ட பாதையாக இருந்தால், சரியான வரிசையில் செய்யுங்கள்: AUTOSTART-ஐ none ஆக்குங்கள், உருவாக்கப்பட்ட unit புதிய பட்டியலை எடுக்க systemctl daemon-reload-ஐ இயக்குங்கள், பிறகு இனி தேவைப்படாத டெம்ப்ளேட் நிகழ்வை முடக்குங்கள். மறுஏற்றத்தைத் தவிர்த்தால் பழைய unit செயலில் இருக்கும், மாற்றத்திற்கு எந்த விளைவும் இல்லாதது போலத் தெரியும்.
தொங்கும் நிறுத்தம் தனிக் சிக்கல், அதற்கு வரையறுக்கப்பட்ட பதில் உண்டு. SIGKILL அனுப்பும் முன் systemd எவ்வளவு நேரம் காத்திருக்கும் என்பதை TimeoutStopSec வரம்பிடுகிறது. அதை அமைக்கச் சரியான இடம் drop-in கோப்பு, ஏனெனில் தொகுக்கப்பட்ட unit-ஐத் திருத்தினால் அடுத்த மேம்பாட்டில் மாற்றம் இழக்கப்படும்.
உண்மையில் எது தொடங்கியது என்பதைச் சரிபாருங்கள்
மீண்டும் பூட் செய்து, உள்ளமைவுக் கோப்பை நம்புவதற்குப் பதிலாக ஆதாரங்களைப் படியுங்கள். சுரங்கப்பாதையின் உரிமையாளரான unit செயலில் உள்ள நிலையையும் பூட்டுக்குப் பொருந்தும் தொடக்க நேர முத்திரையையும் காட்டும், நீங்கள் உள்நுழைவதற்கு முன்பே VPN இடைமுகம் இருக்கும்.
systemctl is-enabled openvpn-client@office
systemctl status openvpn-client@office --no-pager
nmcli -f GENERAL.STATE,connection.secondaries connection show 'Work Wi-Fi'
ip -brief link show tun0
இங்கே மற்றொரு சரிபார்ப்பும் பொருந்தும்: unit-இன் ExecStart நீங்கள் நினைக்கும் பைனரியையே சுட்டுகிறதா என்பதை உறுதிசெய்யுங்கள். உள்ளூரில் தொகுக்கப்பட்ட கிளையண்ட் அல்லது snap தொகுப்புக்கு பலமுறை வெளிப்படையான பாதையோ snap run உறையோ தேவைப்படும், ஏனெனில் systemd உங்கள் ஷெல்லின் தேடல் வரிசையை மரபுரிமையாகப் பெறுவதில்லை. command -v openvpn-ஐ unit கோப்புடன் ஒப்பிடுவது அதை சில வினாடிகளில் தீர்க்கும்.
தேர்ந்தெடுத்த உரிமையாளரைச் சுயவிவரப் பெயருக்கு அருகில் இயந்திரத்தின் குறிப்புகளில் எழுதுங்கள். காணாமல் போன சுரங்கப்பாதையைப் பிழைதிருத்தும் அடுத்த நபர் ஒப்பீட்டை மீண்டும் செய்யாமல் அந்த வரியிலிருந்து தொடங்குவார்.