ක්ලවුඩ් මායිමේදී VPN ග්රාහකයාගේ IP රඳවා ගන්න හෝ SNAT කරන්න
මූලාශ්රය රඳවා ගැනීම සෑම ලොගයකම ග්රාහකයාගේ අනන්යතාවය තබා ගනී, SNAT රවුටින් වගුව කුඩාවට තබා ගනී. යෙදුමට අවශ්ය කුමක්දැයි කොන්දේසි තුනක් පවසයි.
VPN ග්රාහකයාගේ ලිපිනය යෙදුම දක්වා රඳවා ගැනීම නිසා සෑම ලොග් පේළියක්ම සහ අවසර ලැයිස්තුවේ සෑම සටහනක්ම එකම දෙය අදහස් කරයි. ක්ලවුඩ් මායිමේදී එය නැවත ලිවීම රවුටින් වගුව සරල කරන අතර ලොග් අඩු ප්රයෝජනවත් කරයි. දෙකෙන් කිසිවක් තමන් විසින්ම වැරදි නොවේ, තීරණය කරන තර්කය කලාතුරකින් කාර්ය සාධනය ගැන වේ. කොන්දේසි තුනක් එය තීරණය කරයි: යෙදුමට කුමන මිනිසා සම්බන්ධ වියද යන්න දැනගත යුතුද, ඔබ යැවීමට සිතන මූලාශ්රය ක්ලවුඩ් රෙදිපිළි පිළිගන්නවාද, සහ පසුව ආපසු මාර්ගයේ වගකීම ගන්නේ කවුද.
කොන්දේසි තුනක් එය තීරණය කරයි
ජාල රූප සටහනින් නොව යෙදුමේ අවශ්යතාවයෙන් ආරම්භ කරන්න. අවසර දීම හෝ විගණනය තනි ග්රාහක ලිපිනය මත රඳා පවතී නම්, එය රඳවා ගැනීම ක්රියාකාරී අවශ්යතාවයක් වන අතර පරිවර්තනය පසුබැසීමකි. යෙදුමට දුරස්ථ ප්රවේශ මාර්ගයෙන් ගමනාගමනය පැමිණියේ යැයි දැනගැනීම පමණක් අවශ්ය නම්, පරිවර්තනය කළ ලිපිනය ප්රමාණවත් වන අතර ක්රියාත්මක කිරීමට වඩා ලාභදායී වේ.
දෙවන කොන්දේසිය යාන්ත්රිකයි. අතථ්ය ජාලයක් යවන අතුරුමුහුණතට පවරා නොමැති ලිපිනයක් යැයි පවසන පැකට්ටුවක් ස්වයංක්රීයව විශ්වාස නොකරයි. බොහෝ ක්ලවුඩ් රෙදිපිළි එය විවිධ ආකාරවලින් සහ නම්වලින් බලාත්මක කරයි, එය නොසලකා හරින සැලසුමක් රූප සටහනේ නිවැරදිව පෙනෙන අතර නිෂ්පාදනයේදී නිහඬව වැටෙයි.
තුන්වැන්න සංවිධානාත්මකයි. මූලාශ්ර රඳවා ගැනීම යනු යෙදුම් උපජාලයේ රවුටින් වගුව ග්රාහක උපසර්ගය සඳහා ගේට්ටුව දෙසට ආපසු යොමු විය යුතු අතර, පසුව උපජාලයක් එකතු කරන සෑම කණ්ඩායමක්ම එම මාර්ගය සුසංගතව තබා ගත යුතුය. එය එක් වරක් කුඩා වියදමක් වන අතර දුසිම් ගණනක් ගිණුම් හරහා පුනරාවර්තනය වන වියදමකි. එම හැසිරීම පොරොන්දු වීමට පෙර එය ගෙවන්නේ කවුද යන්න තීරණය කරන්න.
මාර්ගය ව්යාජ ලෙස ප්රකාශ කිරීමට අවසරයක් නොවේ
ආපසු මාර්ගයක් එකතු කිරීම ඔබේ උපජාලයට පිළිතුරු යා යුත්තේ කොතැනටද යන්න පවසයි. එය රෙදිපිළිවලට පවසන්නේ නැත, එම පැකට්ටු ඉදිරියට යවන අවස්ථාවට ඒවා විදේශීය මූලාශ්රයකින් නිකුත් කිරීමට අවසර ඇති බව. AWS හි අදාළ පාලනය වන්නේ මූලාශ්ර සහ ගමනාන්ත ලිපින පරීක්ෂාව, එය සෑම අවස්ථාවකටම දැකිය හැක:
aws ec2 describe-instances --instance-ids i-0a1b2c3d4e5f60718 \
--query "Reservations[].Instances[].SourceDestCheck"
aws ec2 modify-instance-attribute --instance-id i-0a1b2c3d4e5f60718 \
--no-source-dest-check
එය අක්රීය කරන්න ලේඛනගත කාර්යය ඉදිරියට යැවීම වන අවස්ථාවට පමණක්, වෙනත් කිසිවකට නොවේ. පරීක්ෂාව සක්රීයව තබා ගන්නා සෑම යෙදුම් VM එකක්ම ණයට ගත් මූලාශ්රයකින් ගමනාගමනය නිකුත් කිරීමට භාවිත කළ හැකි යන්ත්රයක් අඩුවීමකි. ඔබේ වේදිකාව AWS නොවේ නම්, හැසිරීම මාරු වේ යැයි උපකල්පනය කිරීම වෙනුවට සමාන ප්රති-ව්යාජ හෝ අවසර ලත් ලිපින සැකසුම සොයන්න.
වේගවත් පැකට් ග්රහණයක් කොන්සෝලය කියවීමට වඩා වේගයෙන් ප්රශ්නය විසඳයි. පිළිතුරු පිටව ගොස් ග්රාහකයා ඒවා කිසිදා නොදකින්නේ නම්, යෙදුම අසාර්ථක වන්නේ නොව, රෙදිපිළි ව්යාජ මූලාශ්රය ඉවත දමයි.
පරිවර්තනය මිලදී ගන්නේ කුමක්ද සහ එයට ගෙවන මිල කුමක්ද
ගේට්ටුවේදී මූලාශ්රය නැවත ලිවීම ආපසු මාර්ග ගැටලුව ඉවත් කරයි. යෙදුමට එයට ළඟා වන ආකාරය දැනටමත් දන්නා එක් ලිපිනයක් පෙනේ, ග්රාහක උපසර්ගය කිසිදා ක්ලවුඩ් රවුට් වගුවක පෙනී සිටිය යුතු නොවේ. Linux හි නියමය එක් පේළියක් වන අතර, ඔබට හැකි පටුම අනුවාදය ලිවීම වටී:
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -s 172.20.8.0/24 -o ens5 -j SNAT --to-source 10.40.3.10
යෙදුම දැන් වාර්තා කරන දෙය දෙස බලන්න: සෑම පරිශීලකයාටම 10.40.3.10, සෑම සම්බන්ධතාවයකදීම, සදාකාලිකවම. එම අගය මත ගොඩනැගූ ඕනෑම ලිපින අවසර ලැයිස්තුවක් දැන් සම්පූර්ණ දුරස්ථ ප්රවේශ ජනගහනයට ප්රවේශය ලබා දෙන අතර, ඕනෑම සිද්ධි සමාලෝචනයක් මෙය කවුද යන්නට පිළිතුරු දීමට ගේට්ටුව වෙත ආපසු යා යුතුය.
විසඳුම පරිවර්තනය අත්හැරීම නොවේ, ලිපිනය යනු අනන්යතාවය යැයි යන අභිනය නතර කිරීමයි. ග්රාහකයාගේ අනන්යතාවය සත්යාපනය කළ ක්ෂේත්රයක රැගෙන යන්න, පරිවර්තනය කළ tuple සමඟ ගේට්ටුවේදී එය ලොග් කරන්න, සහ යෙදුමට එය මත සම්බන්ධ වීමට ඉඩ දෙන්න. සම්බන්ධ වන යතුර නොමැතිව, පරිවර්තනය ජාල ගැටලුවක් ස්ථිර අපරාධ විද්යාත්මක ගැටලුවක් බවට පත් කරයි.
රිලේ යනු වෙනස් අතුරුමුහුණතකි
යෙදුම ඉදිරිපිට ඇති ප්රතිලෝම නියෝජිතයා මාර්ගගත මාර්ගයේ ප්රශ්නය සම්පූර්ණයෙන්ම මඟ හරියි. නියෝජිතයා තමාගේම backend සම්බන්ධතාවය විවෘත කරයි, එබැවින් ග්රාහක උපසර්ගය අතථ්ය ජාලය තුළ කිසිදා මාර්ගගත කළ හැකි විය යුතු නොවේ, සහ යෙදුමට නියෝජිතයා විසින් සකසන ශීර්ෂයක අනන්යතාවය ලැබිය හැක.
එම ශීර්ෂය විශ්වාසදායක වන්නේ backend එය නියෝජිතයාගෙන් පිළිගෙන වෙනත් කිසිවකින් පිළිනොගන්නා විට පමණි. nginx යෙදුම්වලින් එහි අර්ථය වන්නේ එන සෑම දෙයක්ම විශ්වාස කිරීම වෙනුවට විශ්වාසදායක සහකරු නම් කිරීමයි:
set_real_ip_from 10.40.3.10;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
backend වෙත සෘජුවම ළඟා විය හැකි ඕනෑම ග්රාහකයෙකුට එම ශීර්ෂයම ව්යාජ ලෙස සෑදිය හැක, එබැවින් backend නියෝජිතයා හැර අන් කිසිවකින් ළඟා විය නොහැකි විය යුතුය. මෙය ගිනි පවුරේ කරුණක් මිස වින්යාසය පිළිබඳ මතයක් නොවේ, සහ කොටස පිටපත් කරන විට මිනිසුන් මඟ හරින උපකල්පනය එයයි.
රිලේ ඔබ මිලදී ගන්නා දෙයද වෙනස් කරයි. ඔබට යෙදුම් මට්ටමේ අනන්යතාවයක් සහ එය ලොග් කිරීමට ස්වභාවික ස්ථානයක් ලැබේ; ඔබ සාමාන්යභාවය අත්හරින්නේ, සෑම නව ප්රොටෝකෝලයකටම තමන්ගේම නියෝජිත සහාය අවශ්ය වන බැවිනි. HTTP සේවා සඳහා එම හුවමාරුව සාමාන්යයෙන් හොඳය, සහ HTTP නොවන කිසිවකට එය සාමාන්යයෙන් කිසිසේත් නොලැබේ.
සෑම මායිමක්ම දකින දෙය ලියන්න
ඔබ තෝරන කුමක් වුවත්, සැලසුම් සමාලෝචනය අවසන් විය යුත්තේ සෑම පිම්මකදීම මූලාශ්ර ලිපිනය සහ ඔප්පු කළ හැකි අනන්යතාවය නම් කරන එක් වගුවකිනි. එය නොමැතිව, පළමු සිද්ධිය වෙනස් ග්රාහකයෙකු විස්තර කරන කණ්ඩායම් තුනක් නිපදවයි.
| Boundary | Source the next hop sees | What is actually proven |
|---|---|---|
| Client to gateway | 172.20.8.14 | A certificate or credential was presented |
| Gateway to app subnet, preserved | 172.20.8.14 | The same session, if the return route exists |
| Gateway to app subnet, translated | 10.40.3.10 | Only that traffic came through the gateway |
| Proxy to backend | 10.40.3.10 plus a header | The proxy asserted an identity it authenticated |
පසුව තෝරන්න. යෙදුමේ අවසර දීම සැබවින්ම ග්රාහක ලිපිනය මත රඳා පවතින විට සහ ඔබට මාර්ගය භාර ගත හැකි විට මූලාශ්රය රඳවා ගන්න. එසේ නොවන විට සහ ඔබට අනන්යතාවය තීරුවෙන් පිටත රැගෙන යා හැකි විට පරිවර්තනය කරන්න, සහ වේදිකා-විශේෂිත ඉදිරියට යැවීමේ සැකසුම් සඳහා AWS ඉදිරියට යවන අවස්ථා මාර්ගෝපදේශය භාවිත කරන්න. සේවාව HTTP කථා කරන විට සහ අනන්යතාවය කිසිසේත් ලිපිනයක් නොවීමට ඔබට අවශ්ය විට රිලේ වෙත යන්න.