சுயவிவரம் ஏற்றப்பட்டாலும் OpenVPN ca.crt ஐக் கண்டுபிடிக்கவில்லை
சுயவிவரப் பாதை அதற்குள் உள்ள கோப்புகளின் அடிப்படை அல்ல. முழுமையான --config ஏன் இன்னும் ca.crt இல் தோல்வியடைகிறது, தொடக்கம் எப்படி பதிலைத் தீர்மானிக்கிறது என்பதைப் பார்க்கவும்.
சேவை தொடங்குகிறது, சுயவிவரத்தை எந்தப் புகாரும் இல்லாமல் படிக்கிறது, பின்னர் தொடர்பற்றதாகத் தோன்றும் ஒரு வரியில் இறக்கிறது: அது ca.crt ஐத் திறக்க முடியவில்லை. சான்றிதழில் எதுவும் மாறவில்லை, unit கோப்பில் உள்ள சுயவிவரப் பாதை முழுமையானது. அந்தக் கலவையே துப்பு. நீங்கள் கொடுத்த பாதை ஒரு கோப்பைக் கண்டறிகிறது, அந்தக் கோப்பிற்குள் உள்ள பெயர்கள் முற்றிலும் வேறொரு இடத்தில் தீர்க்கப்படுகின்றன, எனவே முழுமையாகத் தகுதியானதாகத் தோன்றும் தொடக்கமும் யாரும் நினைக்காத அடைவிலிருந்து அதன் விசைகளைப் படிக்கக்கூடும்.
தோல்விக்குச் சில காரணங்களே உள்ளன, அவற்றை வரிசையாகப் பிரிப்பது மதிப்புள்ளது: செயல்முறைக்கு உண்மையில் இருந்த அடிப்படை அடைவு, சேவையின் தொடக்கச் சூழல், மற்றும் பாதை சரியானபின் கோப்பைச் சுற்றியுள்ள அனுமதிகள் அல்லது sandbox. ஒவ்வொன்றும் வேறு தடயத்தை விடுகிறது — unit இல், செயல்முறையில் மற்றும் கோப்பு முறைமையில்.
சுயவிவரப் பாதை அடிப்படை அடைவு அல்ல
/tmp இல் தொடங்கி /etc/vpn/prod/tenant-a.ovpn பெறும் ஒரு செயல்முறையைக் கற்பனை செய்யுங்கள். அந்தச் சுயவிவரத்திற்குள், ca ca.crt வரி ஒரு சார்பு பாதையைக் குறிப்பிடுகிறது. சுயவிவரத்தைக் கண்டறிந்த வாதத்தில் எதுவும் அந்தப் பெயரை மீண்டும் எழுதவில்லை, எனவே செயல்முறை /tmp/ca.crt ஐத் தேடி காணாமல் போன கோப்பைப் புகாரளிக்கிறது.
குழப்பமானது பிழைகளின் வரிசை. OpenVPN முதலில் உள்ளமைவைப் பகுப்பாய்வு செய்து, குறிப்பிடப்பட்ட கோப்புகளை அவற்றை அடையும்போது திறக்கிறது, எனவே சுயவிவரத்தில் உள்ள தட்டச்சுப் பிழை எந்த விசையையும் தொடுவதற்கு முன்பே தெரிவிக்கப்படுகிறது, ஆனால் காணாமல் போன சான்றிதழ் பகுப்பாய்வு அங்கு செல்லும்போது மட்டுமே தோன்றுகிறது. எனவே ஏற்றப்படும் சுயவிவரம் தொடரியல் சரியானது என்பதற்கான சான்று, அது குறிப்பிடும் கோப்புகள் கிடைத்தன என்பதற்கல்ல.
கையேடு எதைப் பிரிக்கிறது: --config மற்றும் --cd
OpenVPN 2.6 கையேடு இரண்டு வெவ்வேறு விருப்பங்களை விவரிக்கிறது. ஒன்று உள்ளமைவுக் கோப்பை ஏற்றுகிறது. மற்றொன்று உள்ளமைவு, விசை, ஸ்கிரிப்ட் மற்றும் பிற கோப்புகள் படிக்கப்படுவதற்கு முன் செயல்முறையின் அடைவை மாற்றுகிறது, தற்போதையதைக் குறிப்பிடாத முழுமையான அடைவைக் கோருகிறது.
openvpn --cd /etc/vpn/prod --config tenant-a.ovpn
அந்த அழைப்பு ஒரு வடிவம், வேறொருவரின் சுயவிவரத்தைத் தொடங்கும் அறிவுறுத்தல் அல்ல. அது தருவது உறுதிப்பாடு: சங்கிலியில் உள்ள ஒவ்வொரு சார்பு பெயரின் அடிப்படையும் செயல்முறையைத் தொடங்கிய எந்த ஷெல் அல்லது மேலாளரிடமிருந்தும் மரபுரிமையாக வராமல் கட்டளையில் கூறப்படுகிறது. மாற்று வழியும் சமமாக செல்லுபடியாகும், சேவைக்கு பல நேரங்களில் சிறந்தது: வேலை அடைவை அப்படியே விட்டுவிட்டு, சுயவிவரத்திற்குள் ஒவ்வொரு குறிப்பிடப்பட்ட கோப்பையும் முழுமையாக்குங்கள்.
நீங்கள் எதைத் தேர்ந்தெடுத்தாலும், முதல் தோல்விக்குப் பதிலாக முழுச் சங்கிலியையும் தணிக்கை செய்யுங்கள். ஒரு சுயவிவரம் மற்றொரு உள்ளமைவுக் கோப்பை இழுக்கக்கூடும், சேர்க்கப்பட்ட கோப்பின் சார்புப் பெயர்கள் அதைச் சேர்த்த கோப்பின் அடைவிற்குப் பதிலாக அதே செயல்முறை அடைவிற்கு எதிராகத் தீர்க்கப்படுகின்றன. பதிவுப் பாதைகள், அங்கீகாரக் கோப்புகள் மற்றும் உதவி ஸ்கிரிப்ட்கள் அதே விதியைப் பின்பற்றுகின்றன.
சேவை வேறு இடத்தில் தொடங்குகிறது
சுயவிவர அடைவில் உள்ள ஊடாடும் ஷெல் தொகுக்கப்பட்ட unit பற்றி எதையும் நிரூபிக்காது. மேலாளர்கள் தங்கள் சொந்த வேலை அடைவை அமைக்கின்றனர், மேலும் ஒரு மூடி ஸ்கிரிப்ட் பைனரி இயங்குவதற்கு முன் அதை மீண்டும் மாற்றக்கூடும். தோல்வியடையும் unit மட்டுமே சிந்திக்கத் தகுந்த ஒரே தொடக்கம்.
systemctl show -p WorkingDirectory -p ExecStart --value openvpn@tenant-a
ls -l /proc/$(pgrep -n openvpn)/cwd
இரண்டாவது கட்டளை உயிருள்ள செயல்முறை உண்மையில் வைத்திருக்கும் அடைவைக் காட்டுகிறது, மூடி ஈடுபட்டிருக்கும்போது இது unit கோப்பை விட நம்பகமானது. இரண்டும் ஒத்துப்போகவில்லை என்றால், பதில் மூடி, unit தவறான தடயம்.
தேடலுக்குப் பின்: அனுமதிகள், chroot மற்றும் sandbox
சரியான அடிப்படை அடைவும் அதே செய்தியைத் தரக்கூடும், ஏனெனில் தீர்வும் அணுகலும் தனித்தனி படிகள். செயல்முறைக்கு ஒவ்வொரு பெற்றோர் அடைவிலும் இயக்க அனுமதியும் கோப்பில் படிக்கும் அனுமதியும் தேவை, மேலும் கோப்பு முறைமையின் ஒரு பகுதியை மறைக்கும் சேவை unit செயல்முறை என்ன பார்க்க முடியும் என்பதையே மாற்றுகிறது.
மூன்று பொதுவான வடிவங்கள் ஒரே பிழையை உருவாக்குகின்றன. கோப்பு root க்கு மட்டுமே படிக்கக்கூடியது, அதேநேரம் சேவை அதைத் திறப்பதற்கு முன் சலுகைகளை விட்டுவிடுகிறது. unit சுயவிவர அடைவை உள்ளடக்காத பாதுகாப்பான கோப்பு முறைமைப் பார்வையை அமைக்கிறது. டீமன் chroot உடன் இயங்குகிறது, எனவே ஹோஸ்ட்டில் உள்ள பாதை அந்தப் பார்வைக்குள் இல்லை.
அனுமதிகளைத் தளர்த்துவதற்குப் பதிலாக கோப்பின் உரிமையும் செயல்முறையின் அடையாளமும் கொண்டு கண்டறியுங்கள். இந்தப் பிழையை அமைதிப்படுத்த தனிப்பட்ட விசையை எல்லோரும் படிக்கக்கூடியதாக்குவது சத்தமான தோல்வியை அமைதியானதாக மாற்றுகிறது, விசையே அடைவில் நீங்கள் மிகக் குறைவாக வெளிப்படுத்த விரும்பும் பகுதி.
உங்கள் சொந்தத் தொடக்கத்தால் திருத்தத்தை நிரூபியுங்கள்
சுயவிவரத்துடன் தொடர்பில்லாத அடைவிலிருந்து உண்மையான unit ஐ மீண்டும் தொடங்கி அதே தொடக்க வரியைக் கவனியுங்கள். பின்னர் செயல்முறை இயங்கும்போது நோக்கிய அடைவை வைத்திருப்பதையும், ஏற்றிய சான்றிதழ் நீங்கள் எதிர்பார்த்ததே என்பதையும் உறுதிப்படுத்துங்கள்.
systemctl restart openvpn@tenant-a
systemctl status openvpn@tenant-a --no-pager
journalctl -u openvpn@tenant-a -n 20 --no-pager
பாதை ஏற்றல் வெற்றியடைந்தாலும், அங்கீகாரமும் வழிப்பாதையும் தங்கள் சொந்தத் தோல்விகளுடன் தனித்தனி நிலைகளே, இணைப்பு எழுந்து ஆனால் போக்குவரத்தைக் கடக்கவில்லை என்றால் அது வேறு விசாரணை. இங்குள்ள திருத்தம் கோப்புகள் எந்த அடைவிலிருந்து வந்தன என்பதைப் பற்றியது மட்டுமே, அது அழைப்பில் தெரிய வேண்டும், கடைசியாக கையால் இயக்கியவர் நினைவில் வைத்திருப்பதல்ல.
சுயவிவரம் ஒரு உள்ளமைவு மேலாளரால் பயன்படுத்தப்பட்டால், அடிப்படை அடைவையோ முழுமையான கோப்புப் பெயர்களையோ அங்கும் வையுங்கள். ஒரு ஹோஸ்ட்டில் கையால் செய்த திருத்தம் அடுத்த மறுகட்டமைப்புக்குப் பின் திரும்பி வரும் இந்தப் பிரச்சினையின் பதிப்பு.