OpenVPN සහ HTTPS 443 පෝටයේ: සවන්දෙන්නා කාගේද?
TCP සහ UDP 443 වෙන වෙනම සොකට් වේ. එක් TCP සවන්දෙන්නෙකු බෙදාගැනීමට හිමිකරුවෙකු අවශ්ය වන අතර, OpenVPN හි පෝට් බෙදාගැනීම පටු එකඟතාවයක් මිස ප්රොක්සි උපායක් නොවේ.
සේවා දෙකකට කිසිදා තරඟ නොකර 443 පෝටයේ පිළිතුරු දිය හැක්කේ, සවන්දෙන්නා අංකයෙන් පමණක් නොව ප්රවාහනය, ලිපිනය සහ පෝටය එකට ගෙන තීරණය වන බැවිනි. එකම යන්ත්රයේ වෙබ් සේවාදායකයක් සහ OpenVPN තබන්න, පළමුව පිළිතුරු දීමට වටිනා එකම ප්රශ්නය වන්නේ එක් එක් ක්රියාවලිය කර්නලයෙන් කුමන සොකට් ඉල්ලා සිටිනවාද යන්නයි. වින්යාසය සංස්කරණය කිරීමට පෙර එම ලැයිස්තුව ලියන්න, එවිට «ලිපිනය දැනටමත් භාවිතයේ ඇත» දෝෂ බොහොමයක් තමන් විසින්ම පැහැදිලි කරයි. ලැයිස්තුවෙන් පසු සියල්ල UDP සවන්දෙන්නෙකු, බෙදාගත් TCP සොකට් එකක් හෝ ප්රොටොකෝලය අනුව මාර්ගගත කරන ඉදිරිපසක් අතර තේරීමකි.
එක් එක් ක්රියාවලිය ඉල්ලන සොකට් එකෙන් පටන් ගන්න
bind එම ත්රිත්වය මත සාර්ථක හෝ අසාර්ථක වේ, එබැවින් ඩීමන් දෙකක් ගැටෙන්නේ කොටස් තුනම එකට හමුවන විට පමණි. ඒ නිසාම TCP 443 හි වෙබ් අඩවියක් UDP 443 හි OpenVPN සවන්දෙන්නෙකු සමඟ අසීමිතව සහජීවනයෙන් පවතී, ඒ නිසාම ඉන් එකක් එකම සත්කාරකයේ දෙවන දේශීය ලිපිනයකට ගෙන යාමද තර්කය අවසන් කරයි. ජීවමාන සවන්දෙන්නන් කියවන්න, ඔවුන් නිර්මාණය කළ යුතුව තිබූ ගොනු නොව, මන්ද පැරණි include එකක් හෝ අමතක වූ unit ගොනුවක් ඔබට මතක සංස්කරණයට වඩා කල් පවතී.
| Line in the listener list | What it establishes | What to do next |
|---|---|---|
| One udp row and one tcp row, each on 443 | Separate transport sockets, nothing contested | Point the VPN profile at udp and stop editing |
| A single tcp address and port listed by two processes | A real bind collision between two daemons | Move one service, or put a dispatcher in front of both |
| A proxy process owns the socket, no vpn process | The proxy accepts and has to hand off correctly | Check that its backend speaks the protocol it forwards |
root ලෙස ss -lntup ධාවනය කර 443 සඳහන් කරන සෑම පේළියක්ම, IPv6 ඇතුළත් කිරීම් ඇතුළුව කියවන්න. සාමාන්යයෙන් වයිල්ඩ්කාඩ් v6 සවන්දෙන්නෙකු v4 ගමනාගමනයද පිළිගනී, එලෙසම අමතක වූ සවන්දෙන්නෙකු ඔබ වගකිවයුතු යැයි සිතූ ගොනුව වෙනස් කළ පසුවත් පෝටය අත්පත් කරගෙන සිටී. ක්රියාවලියේ නම ඔබව පුදුම කරයි නම්, කිසිවක් ස්පර්ශ කිරීමට පෙර ss -lntup 'sport = :443' සමඟ ප්රතිදානය පටු කරන්න.
ජාලය අවසර දෙන විට උමග UDP වෙත මාරු කරන්න
UDP සවන්දෙන්නෙකු ගැටුම සම්පූර්ණයෙන්ම මගහරින අතර සාමාන්යයෙන් කෙටිම අලුත්වැඩියාව වේ, මන්ද කිසිදු සොකට් එකක් බෙදා නොගන්නා අතර මාර්ගයට අමතර නිෂ්පාදනයක් එකතු නොවේ. නමුත් එය නොමිලේ නොවේ. සමහර සේවාදායක ජාල reset නොයවා UDP 443 ඉවත් කරයි, එබැවින් උමග bind හි අසාර්ථක වීම වෙනුවට ස්ථාපිත වීම නතර කරයි, පරිශීලකයා කියවීමට දෝෂයක් නොමැතිව VPN නවතා ඇතැයි වාර්තා කරයි. UDP සවන්දෙන්නෙකු වෙබ් ස්තරය නැවත ආරම්භ කිරීමද අතික්රමණය කරයි, එය අඩවිය නිතර නැවත යෙදවෙන යන්ත්රයක වැදගත් වේ. පරිශීලකයින් සිටින ජාලයෙන් පරීක්ෂා කරන්න, මන්ද සේවාදායකයේ shell එක සාධනය කරන්නේ සේවාදායකයට තමා වෙත ළඟා විය හැකි බව පමණි.
සේවාදායක වින්යාසයේ සහ සේවාලාභී පැතිකඩෙහි ප්රවාහනය එකවර වෙනස් කරන්න. තවමත් TCP ඉල්ලන පැතිකඩක් UDP පමණක් ඇති සවන්දෙන්නෙකු ඉදිරියේ නැවත සම්බන්ධ වීමේ චක්රවල භ්රමණය වේ, ගොනු දෙක සංසන්දනය කරන තෙක් එය ජාල දෝෂයක් ලෙස පෙනේ.
VPN ක්රියාවලියට TCP 443 හිමිකම ලබා දී ඉතිරිය ඉදිරියට යවන්න
TCP සේවාදායක මාදිලියේ Community OpenVPN එන සම්බන්ධතාවයේ පළමු බයිට් කියවා තමන්ගේ ප්රොටොකෝලය නොවන සියල්ල HTTPS පසුතලයට යවයි, port-share උපදෙස ඒ සඳහාය. පසුතලය TLS සක්රීය කළ සාමාන්ය වෙබ් සේවාදායකයක් වන අතර, එම උපදෙසෙහි එය URL එකකින් නොව සත්කාරකය සහ පෝටය මගින් නම් කෙරේ.
port-share 10.0.0.5 8080
අඩවියට දෙවන පෞද්ගලික ලිපිනයක් ඇති යන්ත්රයක, එම පේළිය VPN නොවන ගමනාගමනය 10.0.0.5:8080 වෙත යවයි, එබැවින් HTTPS අතාත්වික සත්කාරකය එහි බැඳිය යුතු අතර ගිනිපවුර දේශීය පිම්මට අවසර දිය යුතුය. වෙබ් සේවාදායකය TLS තමන්ම අවසන් කළ යුතුය, මන්ද එන බයිට් යනු බ්රවුසරයේ මූලික අත්වැල අතට අත දීම වන අතර මැදින් කිසිවක් ඒවා විකේතනය කර නැත. උපදෙස සාමාන්ය HTTP සවන්දෙන්නෙකු වෙත හරවන්න, එවිට බ්රවුසරයට වලංගු නොවන ක්රම දෝෂයක් ලැබේ, එය පසුතලය වැරදි තැනක ඇති බවට වඩා කැඩුණු අඩවියක් ලෙස කියවේ. උපදෙස පවතින්නේ TCP සේවාදායක මාදිලියේ පමණක් වන අතර, UDP සවන්දෙන්නෙකුට පරීක්ෂා කිරීමට ප්රවාහයක් නොමැත.
VPN ක්රියාවලිය සෑම සම්බන්ධතාවයක්ම පිළිගන්නා බැවින්, වෙබ් යෙදුම ඉදිරියට යවන ලද ඉල්ලීම පැමිණෙන අමුත්තාගෙන් නොව සත්කාරකයේම ලිපිනයකින් පැමිණෙන බව දකී. සැබෑ සේවාලාභී ලිපිනය අවශ්ය සියල්ල පසුතලයේ PROXY ප්රොටොකෝල සහාය හෝ එය එකතු කරන ඉදිරිපසක් මත රඳා පවතී. පසුතලය වෙනත් දේශීය ලිපිනයකට ගෙන යාමෙන් අමුත්තාගේ ලිපිනය ආපසු නොඑයි; එය අඩවිය සත්කාරකයේ කුමන ලිපින වාර්තා කරයිද යන්න පමණක් වෙනස් කරයි. විශ්ලේෂණ වාර්තාවක් ප්රශ්නය මතු කිරීමට පෙර එම සීමාව යෙදවීම් සටහන්වල ලියන්න.
ප්රතිලෝම ප්රොක්සිය වැරදි මෙවලමකි; ස්තර-හතර විග්රහකය නොවේ
HTTP ප්රතිලෝම ප්රොක්සිය ඉල්ලීම් කියවීමට TLS අවසන් කරයි, එනම් එයට OpenVPN ප්රවාහයක් නොස්පර්ශව ගෙන යා නොහැක. SNI හෝ පළමු පැකට් පරීක්ෂාව අනුව ඉදිරියට යවන ස්තර-හතර විග්රහකයකට VPN රඳා පවතින සැසිය අවසන් නොකරන්නේ නම් දෙකම ඉදිරියේ සිටිය හැක. උපාංග දෙක රූප සටහනක සමාන ලෙස පෙනුණද සොකට් එකේදී සම්පූර්ණයෙන්ම වෙනස් ලෙස හැසිරේ.
වාණිජ Access Server තමන්ගේම පෝට් බෙදාගැනීමේ සැකසුම් සමඟ එන අතර, ඒවා ප්රජා උපදෙසට එකින් එක නොගැලපේ. අනෙක් එක සඳහා ලියූ මාර්ගෝපදේශයක් අනුවර්තනය කිරීමට පෙර නිෂ්පාදනය සහ අනුවාදය හඳුනා ගන්න. නිශ්ශබ්දව නොසලකා හරින ලද පිටපත් සැකසුමක් සැකසුමක් නොමැති වීමට වඩා නරකය, මන්ද ඉන් පසුවත් සවන්දෙන්නන්ගේ ලැයිස්තුව විශ්වාසනීය ලෙස පෙනේ.
වෙබ් අඩවිය සහ උමග වෙන වෙනම මාර්ග දෙකක් ලෙස පරීක්ෂා කරන්න
අඩවිය පූරණය කර උමග සම්බන්ධ කරන්න, පසුව 443 දැන් කුමන ක්රියාවලියට හිමිදැයි බැලීමට සවන්දෙන්නන්ගේ ලැයිස්තුව නැවත කියවන්න. පූරණය වන පිටුවක් VPN ගැන කිසිවක් ඔප්පු නොකරයි, සම්බන්ධ වන උමගක් අඩවිය ගැන කිසිවක් ඔප්පු නොකරයි, දෙකම එකම අංකය භාවිත කළද. පහත ඇති විධාන තුන පිළිවෙලින් බෙදාගත් සොකට් එක, වෙබ් මාර්ගය සහ VPN සේවාව පරීක්ෂා කරයි.
ss -lntup 'sport = :443' curl -sI https://vpn.example.com/ | head -n 1 journalctl -u openvpn-server@server -n 20
එකම මොහොත සඳහා පසුතලයේ ප්රවේශ ලොගයේ සේවාලාභී ලිපිනය VPN ලොගයේ ලිපිනය සමඟ සංසන්දනය කරන්න. අඩවිය සෑම අමුත්තෙකුම සත්කාරකය ලෙසම වාර්තා කරන්නේ නම්, ඉදිරියට යැවීම ක්රියා කරන අතර ලිපින හැසිරවීම ක්රියා නොකරයි. ලොග දෙකම නිශ්ශබ්ද නම්, ඉදිරිපස කිසිදා සම්බන්ධතාවය භාර නොදුන්නේය. කෙසේ වුවද, සොකට් එක පිළිගන්නේ කවුරුන්ද යන්න සවන්දෙන්නන්ගේ ලැයිස්තුව තීරණය කරයි, තවත් ගොනුවක් වෙනස් කිරීමට පෙර තහවුරු කළ යුතු කරුණ එයයි.
එම සවන්දෙන්නන්ගේ සිතියම වින්යාසය අසල තබන්න, එවිට 443 ස්පර්ශ කරන ඊළඟ පුද්ගලයාට කුමන ක්රියාවලිය පිළිගන්නවාද සහ අනෙක් ප්රොටොකෝලය කොහේ ගියාද යන්න දැනගත හැක. සංස්කරණය කුමක් කිරීමට අදහස් කළාද යන්න විශ්වාස කිරීම වෙනුවට වෙනසෙන් පසු හිමිකම තහවුරු කරන්න.