ஒரு Pi, இரண்டு OpenVPN இன்ஸ்டான்ஸ்கள்: ஒவ்வொரு யூனிட்டும் படிப்பது
ஒரு Pi-யில் உள்ள இரண்டு OpenVPN டீமன்கள் வெவ்வேறு கட்டமைப்பு கோப்புகளைப் படித்து வெவ்வேறு ஹூக்குகள் வழியாக வெளியேறுகின்றன. ஒவ்வொரு இன்ஸ்டான்ஸையும் வரைபடமாக்கி, பின்னர் பேலோட் பாதையைத் தனித்தனியாகச் சோதியுங்கள்.
ஒரு சுயவிவரத்தைத் தொடும் முன் OpenVPN செயல்முறைகளை எண்ணுங்கள். ரோமிங் பயனர்களை ஏற்றுக்கொண்டு அதே நேரத்தில் மேல்நிலை சேவையை அழைக்கும் Pi இரண்டு டீமன்களை இயக்குகிறது, அவற்றில் ஒவ்வொன்றும் நீங்கள் தட்டச்சு செய்த இன்ஸ்டான்ஸ் பெயரால் தேர்ந்தெடுக்கப்பட்ட கட்டமைப்பு கோப்பைப் படிக்கிறது. தொகுப்பு டெம்ப்ளேட்டுகள் பின்னர் ஒவ்வொரு டீமனுக்கும் அதன் சொந்த வேலை கோப்பகம், அதன் சொந்த இயக்க நிலை கோப்பு மற்றும் அதன் சொந்த சுரங்கப்பாதை சாதனத்தை வழங்குகின்றன. இந்தப் பிரிவைத் தவறாகச் செய்தால், இயங்கும் செயல்முறை ஒருபோதும் திறக்காத கோப்பில் உள்ள சரியான அமைப்பை மாற்றி ஒரு மாலை நேரத்தை செலவிடுவீர்கள்.
ஒவ்வொரு இன்ஸ்டான்ஸ் பெயரும் அதன் சொந்த கோப்பைத் தேர்ந்தெடுக்கிறது
OpenVPN 2.6 உடன் வரும் யூனிட் கோப்புகளில், தொடக்க வாதங்கள் @ குறிக்குப் பின் வரும் உரையால் நிரப்பப்படும் இன்ஸ்டான்ஸ் இடமாற்றியைக் கொண்டுள்ளன. சேவையக டெம்ப்ளேட் சேவையக கட்டமைப்பு கோப்பகத்திலிருந்து இயங்கி அதன் வாதத்தை அங்குள்ள %i.conf உடன் தீர்க்கிறது, வாடிக்கையாளர் டெம்ப்ளேட் வாடிக்கையாளர் கோப்பகத்திலிருந்து அதையே செய்கிறது. எனவே [email protected] சேவையக கோப்பகத்தில் admits.conf படிக்கிறது, [email protected] வாடிக்கையாளர் கோப்பகத்தில் uplink.conf படிக்கிறது, அந்தப் பெயர்களில் எதற்கும் மற்ற கோப்பகத்தில் எந்த அர்த்தமும் இல்லை.
தொகுப்பு மேல்நிலை இயல்புநிலைகளைத் தக்கவைத்துள்ளது என்று கருதாமல், இயந்திரத்திலேயே மேப்பிங்கை உறுதிசெய்யுங்கள். விநியோகத்தின் drop-in வேலை கோப்பகத்தையோ கட்டமைப்பு வாதத்தையோ முழுமையாக மாற்றலாம்.
systemctl cat [email protected]
systemctl cat [email protected]அந்த வெளியீட்டில் WorkingDirectory வரியையும் கட்டமைப்பு வாதத்தையும் படியுங்கள், ஏனென்றால் எந்தக் கோப்பு ஏற்றப்படுகிறது என்பதை செயல்படுத்தப்பட்ட யூனிட் மட்டுமே தீர்மானிக்கிறது. ExecStart உடன் --config சேர்க்கும் drop-in, டெம்ப்ளேட் பாதை சரியாகத் தெரிந்தாலும் டெம்ப்ளேட்டை வெல்கிறது. உள்ளூர் மேலெழுதல் நடக்கிறதா என்பதை அறிய ஃபிராக்மென்ட் மற்றும் drop-in பாதைகளைக் கேளுங்கள். இரண்டு பங்குகளும் ஒரே கோப்பில் தீர்ந்தால், ஒரு செயல்முறை சேவையகமாகவும் வாடிக்கையாளராகவும் இருக்க முயல்கிறது, அந்தக் கோப்பில் பிந்தைய விருப்பம் அமைதியாக வெல்கிறது.
உள்ளூர் போக்குவரத்தும் அனுப்பப்பட்ட பேலோடும் வெவ்வேறு ஹூக்குகளைத் தாக்குகின்றன
சேவையகத்தின் ஒவ்வொரு ரோமிங் பயனருடனான மறையாக்கப்பட்ட இணைப்பு Pi-யிலேயே உருவாக்கப்படுகிறது, எனவே அதன் வெளிப்புற பதில்கள் உள்ளூர் வெளியீட்டு ஹூக் வழியாக வெளியேறுகின்றன. வாடிக்கையாளரின் மேல்நிலை இணையுடனான இணைப்பும் உள்ளூரில் உருவாக்கப்பட்ட வெளியீடே, அது தொலை நெட்வொர்க்கை அடைந்தாலும். அனுப்பப்படும் பேலோட் மூன்றாவது வகை, மேலும் பாக்கெட்டுக்கான வெளியேறும் சாதனத்தை ஏற்கனவே தேர்ந்தெடுத்த பின்னரே கர்னல் அதைப் பொருத்துகிறது.
| Flow | Hook that sees it | What to inspect |
|---|---|---|
| Roaming user handshakes to the server | Local input and local output | Listener socket, bind address, rule admitting the UDP port |
| User payload leaving through the upstream tunnel | Forward | IPv4 forwarding switch, selected route, permission rule, any translation |
| Pi's own connection to the upstream peer | Local output | Underlay route to the provider endpoint, not the tunnel route |
forward சங்கிலிக்குள் வெளியேறும் இடைமுகத்துடன் பொருந்தும் விதி, வழித்தடம் ஏற்கனவே அந்த இடைமுகத்துக்கு ஒதுக்கிய பாக்கெட்டை அனுமதிக்கவோ நிராகரிக்கவோ முடியும், ஆனால் அது ஒருபோதும் இடைமுகத்தைத் தேர்ந்தெடுக்காது. ஒரு ஹோஸ்ட் ஒரு சுரங்கப்பாதையை முடித்து மற்றொன்றைத் தொடங்கும்போது, பயனர் பேலோட்டை மேல்நிலை சுரங்கப்பாதைக்கு அனுப்பும் கொள்கையும் Pi-யின் சொந்த மறையாக்கப்பட்ட பதில்களைப் பாதுகாக்கும் கொள்கையும் இரண்டு தனித்தனி முடிவுகள். அவை தற்செயலாக ஒரே இயற்பியல் NIC-இல் விழுகின்றன, அதனால்தான் குழப்பமடைகின்றன.
அந்த வேறுபாடு பொதுவான பாதி-தோல்வியை விளக்குகிறது. பயனர்கள் இணைக்கிறார்கள், handshake முடிகிறது, இருந்தும் அவர்களின் போக்குவரத்து தவறான வழியில் வெளியேறுகிறது, ஏனெனில் handshake உள்ளூராகவும் பேலோட் forward ஆகவும் இருந்தது, இரண்டில் ஒன்று மட்டுமே சோதிக்கப்பட்டது.
இறக்குமதி செய்யப்பட்ட வழித்தடம் உங்கள் பயனர்களுக்கான பதில்களை விழுங்கலாம்
வாடிக்கையாளர் சுயவிவரத்தின் பாதுகாப்பு அமைப்பு, மேல்நிலை Pi-யின் வழித்தட அட்டவணையில் என்ன தள்ள முடியும் என்பதைத் தீர்மானிக்கிறது, பரந்த திசைதிருப்பல் என்பது இயங்கும் இரட்டை-பங்கு ஹோஸ்ட்டை உடைந்ததாக மாற்றும் விருப்பம். தள்ளப்பட்ட வழித்தடம் ரோமிங் பயனர்களின் பொது முகவரிகளை மூடினால், சேவையகம் அவர்களை நோக்கி உருவாக்கும் பதில்கள் underlay வழியாக வெளியேறுவதற்குப் பதிலாக புதிய வழியைப் பின்பற்றி மேல்நிலை சுரங்கப்பாதைக்குள் செல்லலாம். வழங்குநருக்கான சுரங்கப்பாதை இன்னும் வேலை செய்கிறது என்பதை உறுதிசெய்து அங்கேயே நிற்கிறார்கள், ஏனெனில் அந்தப் போக்குவரத்து சுரங்கப்பாதையின் சொந்த இயக்கம் மற்றும் மற்ற அனைத்தும் தவறாக நடந்துகொள்ளும்போதும் அது தொடர்ந்து பாய்கிறது.
மூலம் அல்லது mark அடிப்படையிலான கொள்கையே இரண்டு ஓட்டங்களையும் தனித்தனியாக வைத்திருக்கும் வழி. OpenVPN-இன் Linux mark விருப்பம் டீமனின் சொந்த மறையாக்கப்பட்ட பாக்கெட்டுகளுக்கு ஃபயர்வால் mark வைக்கிறது, பின்னர் வழித்தட விதி அதை தனி அட்டவணைக்கு அனுப்பலாம். சேவையகத்தின் வெளிப்புற பதில்கள் எப்போதும் ஒரே underlay முகவரியிலிருந்து வெளியேறும்போது மூல முகவரிகளும் சமமாக நன்றாக வேலை செய்கின்றன. இரண்டு அணுகுமுறைகளுக்கும் அது தேர்ந்தெடுக்கும் அட்டவணையில் செல்லுபடியாகும் வழித்தடங்களும் வழங்குநரின் endpoint-க்கு விதிவிலக்கும் தேவை, இல்லையேல் சுரங்கப்பாதையே மேலெழும்பாது.
எந்த விதியையும் எழுதும் முன், ஒரு பதில் உண்மையில் எந்தப் பாதையை எடுக்கும் என்பதை கர்னலிடம் கேளுங்கள். கீழேயுள்ள முகவரிகள் Pi-யின் underlay முகவரிக்கும் ஒரு ரோமிங் பயனரின் பொது முகவரிக்கும் இடமாற்றிகள்.
ip rule show
ip route get 198.51.100.7 from 192.0.2.10பிளவைச் சரிபார்த்து, பின்னர் ஒரு பங்கை ஒரு நேரத்தில் நிறுத்துங்கள்
மூன்று ஓட்டங்களையும் தனித்தனியாகச் சோதியுங்கள், ஏனெனில் வெற்றிகரமான handshake மற்ற இரண்டைப் பற்றி எதையும் நிரூபிக்காது. புதிய உள்வரும் இணைப்பை ஏற்றுக்கொண்டு, அனுமதிக்கப்பட்ட ஒரு பயன்பாட்டை மேல்நிலை வெளியேற்றம் வழியாக அனுப்பி, இரண்டு செயல்முறைகளும் இன்னும் தங்கள் இணையர்களை அடைவதை உறுதிசெய்யுங்கள்.
பின்னர் வாடிக்கையாளர் பங்கை நிறுத்தி சேவையகப் பங்கு எதைத் தக்கவைக்கிறது என்று பாருங்கள். ஒரு இன்ஸ்டான்ஸுக்கானது ஆனால் இரண்டுக்கும் பயன்படுத்தப்பட்ட வழித்தடம் அல்லது mark விதியைக் கண்டுபிடிக்கும் மலிவான வழி இதுவே.
systemctl stop [email protected]
systemctl status [email protected] --no-pager
ss -lunp | grep openvpn
journalctl -u [email protected] -n 20 --no-pagerவாடிக்கையாளர் பங்கு நிறுத்தப்பட்டிருக்கும்போது கேட்பான் இன்னும் பிணைக்கப்பட்டிருப்பதும், சுரங்கப்பாதை சாதனம் இன்னும் இருப்பதும், பதிவில் புதிய பிழைகள் இல்லாததும் நீங்கள் பார்க்க விரும்புவது. வாடிக்கையாளரை நிறுத்துவது ஏற்கனவே உள்ள பயனர்களுக்கான சேவையகப் பதில்களையும் துண்டித்தால், இரண்டு பங்குகளும் ஒன்றுக்கு மட்டும் வரம்பிடப்பட்டிருக்க வேண்டிய ஒன்றைப் பங்கிடுகின்றன. ஒவ்வொரு மாற்றமும் எந்த இன்ஸ்டான்ஸ், எந்த கட்டமைப்பு கோப்பு, எந்த ஓட்ட உரிமையாளரைத் தொட்டது என்று பதிவு செய்யுங்கள், இல்லையேல் இந்த ஹோஸ்ட்டை அடுத்து பிழைதிருத்துபவர் அதே கண்டுபிடிப்பை பூஜ்ஜியத்திலிருந்து மீண்டும் செய்வார்.