TLS உறையை OpenVPN முன் வைத்தால், நிறுவலுக்கு இரண்டாவது கேட்பான் கிடைக்கும்; அவற்றில் ஒன்று மட்டுமே எப்போதாவது இணையத்தை நோக்கி இருக்க வேண்டும். அதே இயந்திரத்திலிருந்து சுரங்கப்பாதை வேலை செய்து வெளியிலிருந்து தோல்வியடையும்போது, அனுப்புதல் பொதுவாக இரண்டில் தவறான ஒன்றை நோக்கியிருக்கும். பொருந்த வேண்டியது ஒரு சங்கிலி: பொது விதி உறையை அடைகிறது, உறையின் சொந்த பின்தள இணைப்பு உண்மையான VPN சாக்கெட்டை அடைகிறது. நான்கு தாண்டல்கள் இந்தச் சங்கிலியைத் தாங்குகின்றன, அவற்றில் எதுவும் விசாரணையை முன்கூட்டியே முடிக்கலாம்.

இரண்டு சாக்கெட்டுகள், இரண்டு உரிமையாளர்கள், ஒன்று பொது

உறை வெளிப்புற இணைப்பிற்காக TLS-ஐ முடித்து, மறைகுறியாக்கப்பட்ட பைட் ஓட்டத்தை சாதாரண OpenVPN TCP கேட்பானுக்கு அனுப்புகிறது. இவை தனித்தனி உள்ளமைவு கோப்புகளுடன் கூடிய தனித்தனி சாக்கெட்டுகள், எனவே ஒன்றைத் திருத்தினால் மற்றொன்று தொடப்படாமல், இன்னும் தோற்றத்தில் ஆரோக்கியமாகவே இருக்கும். ஒன்றை மற்றொன்று இல்லாமல் மாற்றும்போது இரண்டும் விலகலாம் என்பதையும் இது குறிக்கிறது.

இயந்திரத்திலிருந்தே வேலை செய்வது பொது பாதையைப் பற்றி மிகக் குறைவாகவே நிரூபிக்கிறது. அசல் போர்ட்டுக்கு நேரடி இணைப்பு உறையைத் தவிர்க்கிறது, உறையின் LAN முகவரிக்கான இணைப்பு மொழிபெயர்ப்பைத் தவிர்க்கிறது, வெளிப்புற பயனர் செய்வதை முழுமையான வாடிக்கையாளர் பக்க அமைப்பு மட்டுமே பயிற்சி செய்கிறது. பெயர்களையும் கவனமாகப் படிக்க வேண்டும், ஏனெனில் localhost என்பது அந்தக் குறிப்பிட்ட கூறை இயக்கும் ஹோஸ்ட்டைக் குறிக்கிறது, நீங்கள் தற்செயலாகத் தட்டச்சு செய்யும் ஹோஸ்ட்டை அல்ல. அந்த வேறுபாட்டை உங்கள் குறிப்புகளில் வைத்திருங்கள், ஏனெனில் தான் மறைத்த தாண்டலைப் பதிவு செய்யாமல் பதிவு செய்யப்பட்ட சோதனை இரண்டு வெவ்வேறு விஷயங்களை ஒப்பிட அழைக்கிறது.

அனுப்புதல் உண்மையில் எங்கு இறங்குகிறது

சங்கிலியை மூன்று போர்ட் எண்களாக இல்லாமல் நான்கு தாண்டல்களாகப் பிடித்திருப்பது எளிது, ஏனெனில் ஒரே எண் ஒவ்வொரு முனையிலும் வெவ்வேறு பொருளைக் குறிக்கலாம். அட்டவணையை வரி வரியாகப் படியுங்கள்: ஒவ்வொரு வரியும் ஒரு இணைப்பை ஏற்று பின்னர் அடுத்ததைத் திறக்க வேண்டிய ஒரு சாக்கெட். ஒரு வரி தவறான கூட்டாளியை நோக்கியிருந்தால், கடைசி நிரலில் உள்ள அறிகுறியே பயனர் தெரிவிப்பது.

HopListens onMust reachSymptom when it points elsewhere
Client machineA local plaintext portThe wrapper's public TLS addressPlain text offered to a TLS endpoint
Router forwardPublic TCP 443The wrapper host on its translated portWrapper records no connection at all
Wrapper, server modeIts accepted port, 8443 hereThe native VPN socket on loopbackHandshake completes, then silence
Native VPN listenerLoopback TCP portIts peer, over TCP onlyA UDP socket behind a byte-stream relay

உறைக்குப் பதிலாக அசல் VPN போர்ட்டை இலக்காகக் கொள்ளும் விதி TLS முடிவை முழுவதுமாகத் தவிர்க்கிறது, இதுவே இந்தப் பிழையின் மிகவும் பொதுவான வடிவம்: வாடிக்கையாளர் OpenVPN சட்டகமைப்பை எதிர்பார்க்கும் கேட்பானுடன் கைக்குலுக்கலைத் திறக்கிறார், எனவே இணைப்பு திறந்து பின்னர் நிற்கலாம். மொழிபெயர்க்கப்பட்ட போர்ட்டை நினைவகத்திற்குப் பதிலாக உறையின் உள்ளமைவு கோப்புடன் உறுதிப்படுத்துங்கள், ஏனெனில் அந்தக் கோப்பை அடுத்து திருத்தும் நபர் வேறு எண்ணைத் தேர்ந்தெடுத்திருக்கலாம். கீழேயுள்ள இரண்டு கட்டளைகளும் அந்தக் கேள்வியின் இரு பக்கங்களையும் ஒரே நேரத்தில் காட்டுகின்றன.

grep -nE '^[[:space:]]*(accept|connect)' /etc/stunnel/stunnel.conf
ss -lntp | grep -E ':443|:8443|:1194'

உங்களை மறுக்கும் பிணைப்பு முகவரி

127.0.0.1 உடன் பிணைக்கப்பட்ட accept வரி ஹோஸ்ட்டுக்கு மட்டுமே பதிலளிக்கிறது, எனவே LAN முகவரிக்கு வரும் அனுப்புதல் இணைக்க முடியாது, வாடிக்கையாளருக்கு பாக்கெட் வடிகட்டி சிக்கல் போலத் தோன்றும் மறுப்பு கிடைக்கும். தீவனத்தைத் தொடும் முன் சாக்கெட்டைப் பாருங்கள், ஏனெனில் சாக்கெட் மலிவான பதில். ஒன்று, அனுப்புதல் இலக்காகக் கொள்ளும் இடைமுகத்துடன் உறையைப் பிணையுங்கள்; அல்லது அதை loopback-ல் வைத்து, உண்மையில் செயல்படும் ஒன்றின் மூலம் அனுப்புதல் loopback-ஐ அடையச் செய்யுங்கள். இவை இரண்டு வடிவமைப்புகள், ஒவ்வொன்றுக்கும் அதன் சொந்த விதி தேவை.

இரண்டையும் கலப்பதே செயல்படும் உறை வெளியிலிருந்து அணுக முடியாததாகும் வழி, ஒவ்வொரு கோப்பும் சரியாகத் தோன்றும்போது. கீழேயுள்ள சரிபார்ப்பு ஒரு கட்டளை, தீவன விதிகளின் மறுஆய்வு பதிலளிக்க முடியாத கேள்விக்கு அது பதிலளிக்கிறது. வெளியீடு loopback முகவரியைக் காட்டி, அனுப்புதல் LAN முகவரியை இலக்காகக் கொண்டால், திருத்தம் accept வரியில் உள்ளது, பாக்கெட் வடிகட்டியில் அல்ல.

ss -lntp '( sport = :8443 )'

உள்ளூர் சோதனை உண்மையில் எதை நிரூபித்தது

தான் மறைத்த தாண்டலைப் பதிவு செய்யாமல் பதிவு செய்யப்பட்ட வெற்றி மற்ற தாண்டல்களைப் பற்றிய சான்று அல்ல. சோதனை எந்த முகவரியைப் பயன்படுத்தியது, எந்த செயல்முறை பதிலளித்தது என்பதைக் குறிப்பிடுங்கள். பிறகு அதே Wi-Fi-ல் உள்ள தொலைபேசியிலிருந்து அல்ல, வலையமைப்புக்கு வெளியேயிருந்து மீண்டும் செய்யுங்கள், ஏனெனில் ஊசி முனை நடத்தை ரவுட்டர்களுக்கிடையே மாறுபடும், LAN-ஐ ஒருபோதும் விட்டு வெளியேறாத இணைப்பும் அனுப்புதல் எதிலும் ஈடுபடாமல் வாடிக்கையாளரை திருப்திப்படுத்தலாம். அந்த இரண்டாவது முயற்சி மட்டுமே அயலவர் செல்லும் பாதையைப் பயிற்சி செய்கிறது.

முயற்சி தோல்வியடையும்போது, ஒரு இணைப்பை இரு பதிவுகளிலும் பின்தொடருங்கள்: உறையின் ஏற்றுக்கொள்ளப்பட்ட மற்றும் இணைக்கப்பட்ட வரிகள், பின்னர் VPN டீமனின் சொந்த அமர்வுப் பதிவு. எதையும் பதிவு செய்யாத முதல் எல்லையே அடுத்த மாற்றத்தின் இடம். OpenVPN கூட்டாளியின் விருப்பங்களை ஒப்பிடத் தொடங்கியதும், அந்தச் செய்திகளை அந்தச் செயலாக்கத்தின் விதிகளால் மதிப்பிடுங்கள். link-mtu முரண்பாட்டு எச்சரிக்கை தானாகவே மரணம் அல்ல, link-mtu-ஐ 1500-ல் பொருத்துவது துண்டிப்பு நின்றது என்பதை நிரூபிக்காது, மேலும் சைஃபர் பேச்சுவார்த்தை ரவுட்டரின் அனுப்புதலுக்கு அல்ல, OpenVPN-ன் உள் உள்ளமைவுக்கு உரியது.

nc -vz 127.0.0.1 1194
journalctl -u stunnel -n 50 --no-pager

அந்தச் சோதனைகள் பின்தள சாக்கெட்டையும் உறைப் பதிவையும் உள்ளடக்குகின்றன, இது மறுக்கப்பட்ட பின்தளத்தை மறுக்கப்பட்ட கைக்குலுக்கலிலிருந்து பிரிக்கிறது. ஒரு முயற்சி நடந்துகொண்டிருக்கும்போது அவற்றை இயக்குங்கள், பின்னர் அல்ல. ஒரே முயற்சியின் நேர முத்திரைகளே ஒப்பீடை நம்பகமாக்குகின்றன.

இரண்டு அடையாளங்கள், இரண்டு தோல்வி வரிசைகள்

வெளிப்புறச் சான்றிதழ் உறைக்கு உரியது, உள் அடையாளம் OpenVPN-க்கு உரியது, அவை வெவ்வேறு அதிகாரிகளிடமிருந்து வரலாம். பாதை ஆரோக்கியமாகத் தெரிய இரண்டு சரிபார்ப்புகளில் ஒன்றை முடக்குவது உண்மையான பாதுகாப்பைத் தோற்ற முடிவுக்கு மாற்றுகிறது. இரண்டு சரிபார்ப்புகளையும் வைத்துக்கொண்டு வரிசையாகப் பிழைதிருத்துங்கள், ஏனெனில் செய்திகளின் வரிசை அடுக்கைப் பெயரிடுகிறது: உறைச் சான்றிதழ் சிக்கல் எந்த VPN விருப்பமும் பேச்சுவார்த்தைக்கு முன் தோன்றும், உள் அடையாளத் தோல்வி ஓட்டம் நிறுவப்பட்ட பின்னரே தோன்றும்.

stunnel கையேடு accept, connect மற்றும் வாடிக்கையாளர் பயன்முறையைத் துல்லியமாக வரையறுக்கிறது, அந்தப் பிரிவுகள் யூகத்தை விட வேகமாக சாக்கெட் கேள்விக்குப் பதிலளிக்கின்றன. எந்த அடுக்கு பதிலளித்தது என்று இன்னும் சொல்ல முடியவில்லை என்றால், கீழேயுள்ள கட்டளையுடன் பொது போர்ட் வழங்கும் சான்றிதழைப் படியுங்கள். வெளியீட்டில் உறைச் சான்றிதழ் இருந்தால் அனுப்புதல் உறையை அடைந்தது, அமைதி அல்லது நெறிமுறைப் பிழை எனில் அடையவில்லை. அந்த ஒரே வேறுபாடு இங்குள்ள வேறு எந்தச் சரிபார்ப்பையும் விட அதிக நேரத்தைச் சேமிக்கிறது.

openssl s_client -connect vpn.example:443 -servername vpn.example </dev/null 2>/dev/null | openssl x509 -noout -subject -issuer

தொடர்புடைய கட்டுரைகள்