OpenVPN இல் persist-tun மற்றும் persist-key உண்மையில் எதைத் தாங்கி நிற்கின்றன
இரண்டு விருப்பங்களும் நேரடி செயல்முறைக்குள் மென்மையான மீள்தொடக்கத்தை உள்ளடக்குகின்றன. நிறுத்திய பிறகு இடைமுகத்தைத் தக்கவைக்கவில்லை, மேலும் அவை போக்குவரத்தைத் தடுக்கும் கொள்கை அல்ல.
சேவையை நிறுத்துவது persist-tun அமைக்கப்பட்டிருந்தாலும் இடைமுகத்தை அகற்றுகிறது. இது விருப்பம் ஆவணப்படுத்தப்பட்டபடி செயல்படுகிறது, தோல்வி அல்ல. விருப்பம் இயங்கும் செயல்முறைக்குள் ஒரு மீள்தொடக்க பாதையை விவரிக்கிறது, மேலும் systemctl stop அந்தப் பாதை அல்ல.
இரு பெயர்களையும் ஒன்றாகப் படியுங்கள், வடிவமைப்பு தெளிவாகிறது. ஒன்று விவரிப்பியை வைத்திருக்கிறது, மற்றொன்று விசைப் பொருளை வைத்திருக்கிறது, இரண்டும் சிறப்புரிமைகள் விடப்பட்ட பிறகு நடப்பதன் காரணமாக உள்ளன.
இரு வளங்களும் அவை சார்ந்த மீளமைப்பும்
OpenVPN இரு சாதாரண சூழல்களில் தன் சொந்த மீள்தொடக்கத்தைக் குறிக்கிறது. வெளிப்படையான SIGUSR1 அதைச் செய்கிறது, இறந்த துணையால் தூண்டப்படும் ping-restart அதே செய்கிறது. இரண்டும் செயல்முறையை உயிருடன் வைத்து இணைப்பு அமைப்பை மீண்டும் இயக்குகின்றன, அங்கேயே விருப்பங்கள் தங்கள் இடத்தைப் பெறுகின்றன.
| Event | TUN/TAP device | Key and auth files | Addresses and routes | up/down hooks |
|---|---|---|---|---|
Soft reset, from SIGUSR1 or from a ping-restart the daemon sends itself | survives only with persist-tun | survive only with persist-key | survive with the device, otherwise rebuilt | run again only when restart hooks are enabled |
Configuration reload, SIGHUP | recreated | re-read from disk | rebuilt once the device returns | run again |
| Service stop | lost | re-read at the next start | removed | run at the next start |
இந்த இரு விருப்பங்கள் மாற்றுவது மென்மையான மீளமைப்பு வரிசை மட்டுமே, அவை தவிர்க்கும் வேலை பரபரப்பான இணைப்பில் விலை உயர்ந்த பகுதி. சாதனத்தை மீண்டும் திறப்பது அதனுடன் இணைந்த முகவரிகள் மற்றும் வழிகளை உடைக்கிறது, அவற்றை மீண்டும் கட்டமைப்பது மீளமைப்பு தொடங்கியபோது வழியில் இருந்த பாக்கெட்டுகளை வீழ்த்தலாம். நிறுத்துவது அதே பொருட்களைத் தக்கவைக்க எந்த விருப்பமும் இல்லாமல் அழிக்கிறது.
இந்த விருப்பங்கள் ஏன் இருக்கின்றன
கடினப்படுத்தப்பட்ட OpenVPN சேவையகம் பொதுவாக root ஆகத் தொடங்கி, தன் விசைகளையும் சாதனத்தையும் திறந்து, பின்னர் சிறப்புரிமை இல்லாத பயனருக்கு இறங்குகிறது. அந்த இறக்கத்திற்குப் பிறகு சில செயல்பாடுகள் வெறுமனே போய்விடும். பயன்முறை 0600 விசைக் கோப்பைப் படிப்பது, பிணைய இடைமுகத்தை உருவாக்குவது அல்லது வழிகளை மாற்றுவது அனைத்தும் மறுக்கப்படலாம்.
persist விருப்பங்கள் இல்லாமல், ping-restart தூண்ட போதுமான நேரம் அமைதியாக இருக்கும் துணை அதே செயல்பாடுகளை வலுக்கட்டாயமாக்கும். உள்ளமைப்பில் எதுவும் மாறவில்லை என்றாலும் மறுஇணைப்பு தோல்வியடையும். செயல்முறை காரணமின்றி இறப்பது போல் தோன்றும், பதிவு பிணைய பிழைக்குப் பதிலாக அனுமதி பிழையைக் காட்டும்.
அவற்றுடன், மென்மையான மீளமைப்பு சிறப்புரிமை பெற்ற கட்டம் ஏற்கனவே பெற்றதை மீண்டும் பயன்படுத்துகிறது. மந்திரம் இல்லை, செயல்முறை எதையும் தாங்கி நிற்கவில்லை. வளங்களைப் பெறுவது தள்ளிப்போடப்படுகிறது.
கடைசி அல்ல, முதல் பிழையைப் படியுங்கள்
மீளமைப்பு தோல்வியடையும்போது, கடைசிக்குப் பதிலாக முதல் பிழையைப் படியுங்கள். பாதுகாக்கப்பட்ட விசை, auth கோப்பு, இடைமுக ioctl மற்றும் வெளிப்புறக் கொக்கி ஆகியவை நான்கு வெவ்வேறு வளங்கள். ஒன்றைத் தக்கவைப்பது மற்றவற்றுக்கான அணுகலைப் பற்றி எதுவும் கூறாது. ஃபயர்வால் கருவியை அழைக்கும் கொக்கிக்கு இன்னும் அந்தக் கருவி கோரும் சிறப்புரிமைகள் தேவை.
கொக்கிகளுக்கு அவற்றின் சொந்த சுவிட்ச் உள்ளது. OpenVPN கையேடு persist விருப்பங்களை up-restart உடன் இணைக்கிறது, அது மீள்தொடக்கத்திற்குப் பிறகு up மற்றும் down ஸ்கிரிப்ட்கள் மீண்டும் இயங்குமா என்பதைத் தீர்மானிக்கிறது. எனவே மேலே நின்ற இடைமுகம் உங்கள் resolver ஒருங்கிணைப்பு புதுப்பிக்கப்பட்டதா என்பதைப் பற்றி எதுவும் கூறாது.
# which restart path just happened?
journalctl -u openvpn-client@office --since '10 min ago' | grep -E 'SIGUSR1|ping-restart|Restart pause|NOTE:'
# did the interface survive, and do its routes still exist?
ip -brief link show tun0
ip route show dev tun0
இந்த இரு கட்டளைகள் இரு தோல்வி முறைகளை நொடிகளில் பிரிக்கின்றன. இருக்கும் ஆனால் வழிகள் காணாமல் போன இடைமுகம் ஒரு கொக்கி அல்லது வழிப் பிரச்சினை. மறைந்த இடைமுகம் என்றால் செயல்முறை உண்மையில் முடிந்தது.
தக்கவைக்கப்பட்ட இடைமுகம் kill switch அல்ல
போக்குவரத்து ஒருபோதும் சுரங்கத்திற்கு வெளியே செல்லக்கூடாது என்பது தேவை என்றால், தக்கவைக்கப்பட்ட சாதனம் அதை வழங்காது. மற்ற முகவரிக் குடும்பத்திற்கான வழிகள், இரண்டாவது இயல்புநிலை வழி, மற்றும் செயல்முறை முழுவதுமாக வெளியேறும் நிலை ஆகியவை அனைத்தும் விருப்பத்தின் எல்லைக்கு வெளியே இருக்கின்றன.
இரு தேவைகளையும் தனித்தனியாகக் கையாளுங்கள். மறுஇணைப்புகளுக்கு இடையே சுரங்கப் பொருளைத் தக்கவைப்பது டீமனுக்கு வசதி. சுரங்கம் கீழே இருக்கும்போது வெளியேறுவதைத் தடுப்பது அதன் சொந்த விதிகள் மற்றும் சொந்தச் சோதனையைக் கொண்ட ஃபயர்வால் கொள்கை. இரண்டையும் கலப்பது பாதுகாப்பானதாகத் தோன்றி சிறந்த-முயற்சி மறுஇணைப்பு போல் செயல்படும் உள்ளமைப்பை உருவாக்குகிறது.
கண்டறிவதற்கு முன் நிகழ்வுக்குப் பெயரிடுங்கள். மென்மையான மீள்தொடக்கம், தோல்வியடைந்த இணைப்பு முயற்சி மற்றும் சேவை நிறுத்தம் ஆகியவை மூன்று நடத்தைகளைக் கொண்ட மூன்று நிகழ்வுகள், முதல் ஒன்று மட்டுமே இந்த விருப்பங்கள் விவரிப்பது.