ஒரே Linux இயந்திரத்தில் இரண்டு VPN: முடிவுகளைக் கலக்காமல் ஒவ்வொன்றையும் தனித்தனியாகச் சோதிக்கவும்
இரண்டு பச்சை ஐகான்கள் ஒரு ஒப்பீடு அல்ல. ஒவ்வொரு சுரங்கப்பாதையையும் அதன் சொந்தப் பெயர்வெளியில் வைக்கவும், எதிர்பார்ப்பை முதலில் எழுதவும், முடிவை நம்பும் முன் பாதையை நிரூபிக்கவும்.
இரண்டு பச்சை இணைப்பு ஐகான்கள் ஒப்பீடு போலத் தெரிகின்றன, பொதுவாக அவை தற்செயல் மட்டுமே. சோதனைக் கோரிக்கை இரண்டு சுரங்கப்பாதைகளில் ஏதேனும் ஒன்றைப் பயன்படுத்தியிருக்க முடியுமானால், முடிவு சிறந்த நிலையில் அவற்றில் ஒன்றை மட்டுமே விவரிக்கிறது, மோசமான நிலையில் எதையும் விவரிக்கவில்லை. ஒவ்வொரு அவதானிப்புக்கும் வலைப்பின்னல் சூழல், நோக்கமிடப்பட்ட இலக்கு மற்றும் சோதனை தொடங்கும் முன் எழுதப்பட்ட எதிர்பார்ப்பை வழங்கவும். நீங்களே நிர்வகிக்கும் Linux இயந்திரத்தில், பெயரிடப்பட்ட வலைப்பின்னல் பெயர்வெளிகளே அந்தப் பிரிப்பை வாங்குவதற்கான மலிவான வழி.
இரண்டு பச்சை விளக்குகள் ஒரு ஒப்பீடு அல்ல
பெயர்வெளி என்பது வழிமாற்றல் அட்டவணைகள், இடைமுகங்கள் மற்றும் வலைப்பின்னல் அடுக்கின் நிலையைப் பிரிக்கிறது, எனவே ஒன்றுக்குள் தொடங்கிய கோரிக்கை மற்றொன்றின் சுரங்கப்பாதையை அமைதியாகக் கடன் வாங்க முடியாது. அது பிரிக்காதவை செயலி, இயற்பியல் மேல்இணைப்பு அல்லது ஹோஸ்ட்டில் இயங்கும் பெயர்த் தீர்வுச் சேவை. இந்தக் கடைசி இடைவெளியில்தான் இந்தச் சோதனைகளில் பெரும்பாலானவை யாரும் கவனிக்காமல் தோல்வியடைகின்றன. பெயர்வெளியை விட்டு வெளியேறி ஹோஸ்ட்டின் தீர்வியைக் கேட்கும் தேடல் சோதனையில் உள்ள சுரங்கப்பாதையுடன் எந்தத் தொடர்பும் இல்லாத பதிலைத் திருப்பித் தருகிறது.
இந்த நடைமுறை ஏற்கனவே தயாரிக்கப்பட்டு அங்கீகரிக்கப்பட்ட இரண்டு சோதனைப் பெயர்வெளிகள், செயல்படும் வெளிப்புற இணைப்பு மற்றும் ஆதரிக்கப்படும் வாடிக்கையாளர்களை எடுத்துக்கொள்கிறது. இது எதையும் உருவாக்காது, எதையும் பதிவு செய்யாது, எந்த உள்ளமைப்பையும் மாற்றாது. வாடிக்கையாளருக்கு முழு டெஸ்க்டாப் அமர்வு தேவைப்படும்போது அல்லது அதற்கு வெளியே இயங்க மறுக்கும்போது தனி மெய்நிகர் இயந்திரங்களே நேர்மையான தேர்வு.
முதல் ஓட்டத்திற்கு முன் எதிர்பார்ப்பை நிலைநாட்டவும்
ஒவ்வொரு சூழலுக்கும் வெற்றி எப்படி இருக்கும் என்பதை முடிவு செய்யவும்: தீர்வி, சேவையின் பெயர், எதிர்பார்க்கப்படும் முகவரி மற்றும் சுரங்கப்பாதை விழும்போது தேவைப்படும் நடத்தை. அந்தத் திட்டமிட்ட மதிப்புகளை அவற்றின் சொந்த நெடுவரிசையில் வைக்கவும், ஏனெனில் திட்டத்தையும் அவதானிப்பையும் கலக்கும் பதிவு நேரமுத்திரையுடன் கூடிய கற்பனை. கீழே உள்ள சரிபார்ப்புப் பட்டியலே பதிவுக்குத் தேவையான வடிவம், முதல் இணைப்புக்கு முன் ஒவ்வொரு வரிசையும் நிரப்பக்கூடியதாக இருக்க வேண்டும்.
| Tunnel | Owner | Client interface inside the namespace | Proof command | Required on disconnect |
|---|---|---|---|---|
| vpn-a | the identity that owns profile A, recorded by name | its own tun device, never the host's | ip -n vpn-a -4 route get 10.55.10.20 | traffic stops; no host-side fallback |
| vpn-b | a separate owner, even when both run on one box | its own tun device in its own namespace | ip -n vpn-b -4 route get 10.55.20.20 | verified separately, never inferred from A |
தீர்வியின் வயரிங் அந்தப் பதிவில் அதற்கென ஒரு வரிசையைப் பெற வேண்டும், ஏனெனில் பொய் சொல்ல அதிக வாய்ப்புள்ள புலம் அதுவே. பெயர்வெளியுடன் பிணைக்கப்பட்ட கோப்புகள், எடுத்துக்காட்டாக /etc/netns/vpn-a/resolv.conf கட்டளை பெயர்வெளிக்குள் இயங்கும்போது அவற்றின் வழக்கமான பாதைகளில் தோன்றும், என்பதை iproute2 இன் பெயர்வெளி குறிப்பு விளக்குகிறது, ஆனால் பெயர் சேவை மாற்றத்தின் உள்ளமைப்பும் அது தொடங்கும் எந்த உள்ளூர் தீர்வியும் இன்னும் தேடலை ஹோஸ்ட்டை நோக்கி இழுக்கக்கூடும்.
ஒரு நேரத்தில் ஒரு சுரங்கப்பாதை, மற்றொன்று துண்டிக்கப்பட்டது
B கீழே இருக்கும்போது A ஐ அதன் தற்போதைய உரிமையாளர் வழியாக இணைக்கவும், பின்னர் நிர்வாகச் சூழலில் இருந்து கொள்கை, வழிகள் மற்றும் தேர்ந்தெடுக்கப்பட்ட பாதையைச் சரிபார்க்கவும். கீழே உள்ள கட்டளைகளில் மூன்று நிலையைப் படிக்கின்றன; கடைசி ஒன்று மட்டுமே பெயர் சேவையைத் தொடர்பு கொள்கிறது, எதுவும் பயன்பாட்டுக் கோரிக்கையை அனுப்புவதில்லை.
sudo ip -n vpn-a -4 rule show
sudo ip -n vpn-a -4 route show table all
sudo ip -n vpn-a -4 route get 10.55.10.20
sudo ip netns exec vpn-a getent ahostsv4 svc-a.lab.internalவழித் தேடல் இலக்கு பற்றிய ஒரு அனுமானக் கேள்விக்குப் பதிலளிக்கிறது, எனவே சேவை போக்குவரத்தை ஏற்கிறது என்பதைக் காட்ட முடியாது. இந்த இரண்டு வகைச் சான்றுகளையும் தனித்தனி நெடுவரிசைகளில் வைக்கவும், ஏனெனில் நிராகரிக்கப்பட்ட இணைப்புக்கு அருகில் ஆரோக்கியமான வழி என்பது உண்மையானதும் பொதுவானதுமான முடிவு. பின்னர் உண்மையான பயன்பாட்டுடன் ஒரு தீங்கற்ற அங்கீகரிக்கப்பட்ட கோரிக்கையை அனுப்பவும், அது A இன் சூழலில் அதன் வழக்கமான சிறப்புரிமையற்ற பயனராகச் சான்றிதழ் சரிபார்ப்பும் பயன்பாட்டு அங்கீகாரமும் பாதுகாப்பாகத் தொடங்கப்படும், மேலும் சேவை கண்ட மூல முகவரியுடன் முடிவைப் பதிவு செய்யவும். A ஐ அதன் உரிமையாளர் வழியாகத் துண்டித்து B க்கான முழு அடிப்படைக் கோட்டையும் மீண்டும் செய்யவும், நீங்கள் செய்யும் எந்த உள்ளமைப்பு மாற்றத்தையும் குறிப்பிட்டு, இல்லையெனில் இரண்டு அடிப்படைக் கோடுகளும் ஒப்பிடத்தக்கதாக இருக்காது.
இரண்டும் மேலே, பின்னர் ஒரு நேரத்தில் ஒன்று கீழே
நிலையான நிலை எளிய பகுதி. இரண்டு சுரங்கப்பாதைகளும் இணைக்கப்பட்டிருக்கும்போது ஒவ்வொரு சூழலின் தேடலையும் பயன்பாட்டுக் கோரிக்கையையும் மீண்டும் செய்யவும், பின்னர் ஒரு சுரங்கப்பாதையை உடைத்து மற்றொன்றைச் சரிபார்க்கவும். இணைப்பின் வரிசையே கேள்வியாக இருக்கும்போது தலைகீழ் வரிசையில் மீண்டும் இணைக்கவும்.
sudo ip netns exec vpn-a tcpdump -ni any port 443 -c 5
sudo ip netns exec vpn-b getent ahostsv4 svc-b.lab.internal
sudo ip -n vpn-b -4 route get 10.55.20.20பிடிப்பு பயன்பாட்டு முடிவால் தீர்க்க முடியாத விவாதங்களைத் தீர்க்கிறது: கோரிக்கை நீங்கள் எதிர்பார்த்த இடைமுகம் வழியாக வெளியேறியதா அல்லது முற்றிலும் வேறொன்றின் வழியாகவா என்பதைக் காட்டுகிறது. ஒவ்வொரு மாற்றத்திற்கும் உரிமையாளரின் செயல், நேரமுத்திரை, வழி முடிவு, பெயர் முடிவு மற்றும் பயன்பாட்டு முடிவைப் பதிவு செய்யவும். பின்னர் பாதிக்கப்பட்ட பெயர்வெளிக்குள் பாதுகாப்பாக மூடும் தேவையைச் சரிபார்க்கவும், ஏனெனில் தனிமைப்படுத்தல் ஒரு கொலைச் சுவிட்ச் அல்ல. பெயர்வெளி இரண்டு சுரங்கப்பாதைகளைத் தனித்து வைக்கிறது; அதன் சுயவிவரம் போக்குவரத்து நிற்க வேண்டும் என்று சொல்லும்போது எதையும் போக்குவரத்து எடுத்துச் செல்வதிலிருந்து தடுக்கவில்லை.
இந்தப் பதிவு என்ன கூற முடியும், என்ன கூற முடியாது
ஒரு தேர்ச்சி இந்த ஏற்பாட்டிற்கு, இந்த ஹோஸ்ட்டில், அந்த நேரத்தில் அந்த அவதானிப்புகளை நிரூபிக்கிறது. ஒரு டெஸ்க்டாப் வழிமாற்றல் அட்டவணையைப் பகிரும் இரண்டு வாடிக்கையாளர்களைப் பற்றி அது எதுவும் சொல்லாது, இரண்டு சுரங்கப்பாதைகளும் சுமையைச் சுமக்கும்போது செயல்திறன் பற்றியும் எதுவும் சொல்லாது. அவை தனித்தனி சோதனைகளைக் கொண்ட தனிக் கேள்விகள், ஒப்பீடு ஒவ்வொரு வரிசையுடன் இணைக்கப்பட்ட சூழலைப் போலவே இருக்கும்.
தோல்விகளைப் பதிவில் வெற்றிகளுக்கு அருகில் வைக்கவும், அந்த நேரத்தில் எந்தச் சுரங்கப்பாதை மேலே இருந்தது என்பதைக் குறியிட்டு. அளவீட்டு நேரத்தின் நிலையை மறைக்கும் சுத்தமான பக்கம் அதைக் காட்டும் அழகற்ற பக்கத்தை விட மோசமானது. பதிவைப் பின்னர் மீண்டும் பயன்படுத்தக்கூடியதாக மாற்றுவது சூழல், மதிப்பெண் அல்ல.
ஒரு இயந்திரத்தில் இரண்டு சுரங்கப்பாதைகளை நேர்மையாக ஒப்பிடலாம், ஆனால் நீங்கள் உண்மையில் கட்டுப்படுத்திய சூழல்களின் எண்ணிக்கைக்குள் மட்டுமே. அதற்கு அப்பால் இருப்பது அருகில் பச்சை ஐகான் கொண்ட ஒரு விருப்பம் மட்டுமே.