macvlan කන්ටේනරයකට VPN සේවාදායකයාට පිළිතුරු දිය නොහැක්කේ ඇයි
macvlan කන්ටේනරයකට තමන්ගේම සත්කාරකය සමඟ කතා කළ නොහැක, එහි පිළිතුරු වැරදි ගේට්වේ හරහා පිටවිය හැක. සත්කාරක පැත්තේ shim මාර්ගයක් එක් කරන්න, පසුව මූලාශ්ර ආකෘතියක් තෝරන්න.
VPN එකක් අවසන් කරන අතරම macvlan ජාලයක කන්ටේනරයක් ධාවනය කරන Linux සත්කාරකයක් සිතන්න. LAN යනු 192.168.60.0/24, කන්ටේනරයට 192.168.60.210 ඇත, VPN සේවාදායකයින් 10.95.0.0/24 වෙතින් පැමිණේ. සේවාදායකයා සේවාවට ළඟා වේ, පිළිතුර කිසිදා ආපසු නොපැමිණේ, සහ සත්කාරකයේ සෑම ෆයර්වෝල් නියමයක්ම නිවැරදි ලෙස පෙනේ. මෙම රෝග ලක්ෂණය වෙන වෙනම සීමා දෙකක් නිපදවයි, එකක් නිවැරදි කිරීම අනෙක එහි තැනම තබයි.
සීමා දෙකක්, රෝග ලක්ෂණයක්
පළමු සීමාව හුදකලාවය: Docker හි macvlan ධාවකය කන්ටේනරයට මව් අතුරුමුහුණත හරහා තමන්ගේම සත්කාරකය සමඟ කතා කිරීමට ඉඩ නොදේ. සත්කාරක තොගය සහ කන්ටේනරය අතර ගමන් වලට මාර්ගයක් නැත, සත්කාරකයේ මාර්ග කෙසේ ලියා තිබුණත්.
දෙවන සීමාව ආපසු යන මාර්ගයයි. කන්ටේනරයේ පෙරනිමි ගේට්වේ සාමාන්යයෙන් LAN රවුටරය වේ, එබැවින් VPN සේවාදායකයාට යැවූ පිළිතුර එම රවුටරය හරහා පිටවේ. රවුටරයට VPN තටාකයට ආපසු යාමට මාර්ගයක් නොමැති නම්, පිළිතුර මැද කොහේ හෝ ඉවත දමනු ලැබේ.
සේවාදායකයාගේ දෘෂ්ටි කෝණයෙන් මෙම අසාර්ථකකම් දෙකම එකම ලෙස පෙනේ: පැමිණෙන ඉල්ලීමක් සහ කිසිදා නොපැමිණෙන පිළිතුරක්. ඒවාට වෙනස් අලුත්වැඩියා අවශ්ය වේ, සහ පුළුල් masquerade නියමයකට තවම කැඩී ඇත්තේ කුමක්ද යන්න සැඟවිය හැක. එබැවින් පළමු පරීක්ෂාව තවත් ෆයර්වෝල් වෙනසක් නොව, කන්ටේනරයේ පැත්තේ ග්රහණයකි. ඉල්ලීම එහි කිසිදා නොපෙනේ නම්, හුදකලා සීමාව ක්රියාත්මක වේ.
සත්කාරක පැත්තේ shim එක පටුව ගොඩනගන්න
එකම මව් අතුරුමුහුණතට පාලම් ප්රකාරයෙන් සම්බන්ධ කළ දෙවන macvlan අතුරුමුහුණතක් සත්කාරක තොගයට එම LAN කොටසේ තමන්ගේම අනන්යතාවයක් ලබා දේ. ඒ සඳහා DHCP තටාකයෙන් පිටත සහ කන්ටේනර පරාසයෙන් පිටත ලිපිනයක් වෙන් කරන්න, සහ කන්ටේනරය පමණක් එය හරහා යවන්න.
ip link add macvlan-vpn link eth0 type macvlan mode bridge ip address add 192.168.60.250/32 dev macvlan-vpn ip link set macvlan-vpn up ip route add 192.168.60.210/32 dev macvlan-vpn src 192.168.60.250
පළමු විධානය අතුරුමුහුණත පාලම් ප්රකාරයෙන් සාදයි, එය මෙම ධාවකය සඳහා ලේඛනගත පෙරනිමිය වන අතර සත්කාරක-කන්ටේනර ගමන් සඳහා ඔබට අවශ්ය ප්රකාරයයි. දෙවැන්න /32 පවරන්නේ ලිපිනය LAN උපසර්ගය සමඟ ගැටීම වැළැක්වීමටය, සහ හතරවැන්න shim හරහා කන්ටේනරයේ ලිපිනය පමණක් යවයි.
මුළු LAN එකම නව අතුරුමුහුණත හරහා හරවන්න එපා. සාමාන්ය සම්බන්ධිත මාර්ගය එලෙසම පවතී, සහ සත්කාරක මාර්ගය හිතාමතාම පටු වන්නේ එක් කන්ටේනරයකට මාර්ගයක් ලැබී කොටසේ ඉතිරි කොටසෙහි හැසිරීම නොවෙනස් වන පරිදිය. shim දෙසට යොමු වූ පෙරනිමි මාර්ගයක් වෙනත් ප්රතිවිපාක සහිත වෙනත් නිර්මාණයක් වනු ඇත. එය නිශ්චිතව තබන්න, හානි පරාසය කුඩාව පවතී.
මෙම විධාන ක්රියාත්මක සත්කාරකයක ජාල සැකසුම් වෙනස් කරයි. උපකරණයක හෝ කළමනාකරණ ප්ලැට්ෆෝමයක එම ප්ලැට්ෆෝමයේ ආධාරක සංරචන ක්රමවේදය භාවිත කරන්න, මන්ද root-shell හි අන්තර්ක්රියාකාරී වෙනසක් උත්ශ්රේණි කිරීමෙන් පසු රැඳී නොසිටිය හැක.
මූලාශ්රය ආරක්ෂා වන ආකාරය තීරණය කරන්න
shim තිබියදී කන්ටේනරයට සත්කාරකයට ළඟා විය හැක, සහ ප්රශ්නය වන්නේ පිළිතුර කුමන මූලාශ්ර ලිපිනයක් රැගෙන යනවාද යන්නය. මුල් VPN මූලාශ්රය ආරක්ෂා කිරීම පිරිසිදු ආකෘතියයි: කන්ටේනරය සේවාදායකයාගේ සැබෑ ලිපිනය දකී, සහ සේවාවේ ලොග සහ ප්රවේශ නියම එය භාවිත කළ හැක.
එය ක්රියා කිරීමට කන්ටේනරයේ ජාල සංරචනය මෙම මාර්ගය සඳහා 10.95.0.0/24 හි ගමන් 192.168.60.250 වෙත එහි ගේට්වේ ලෙස යැවිය යුතුය. එය කන්ටේනරයේම සංරචනය තුළ ආධාරක මාර්ග හෝ ගේට්වේ සැකසුමක් මිස සත්කාරක පැත්තේ උපායක් නොවේ. සැකසුම බලාත්මක වී ඇතැයි උපකල්පනය කරනවා වෙනුවට කන්ටේනරය තුළින් එය තහවුරු කරන්න. තවමත් LAN රවුටරය දෙසට යොමු වන පෙරනිමි ගේට්වේ පිළිතුරු එම සිදුරටම යැවීම දිගටම කරගෙන යනු ඇත.
අනුමත නිර්මාණය ඒ වෙනුවට VPN මූලාශ්ර සඟවන්නේ නම්, පරිවර්තනය පටුව සීමා කරන්න: සැබෑ VPN තටාකය, පිටවන අතුරුමුහුණත ලෙස shim, සහ නිශ්චිත කන්ටේනරය සහ සේවාව.
iptables -t nat -A POSTROUTING -s 10.95.0.0/24 -o macvlan-vpn -j SNAT --to-source 192.168.60.250
shim එක පිටවන අතුරුමුහුණත ලෙස ගලපන්න, උමඟ නොව. උමඟ පිටවන අතුරුමුහුණත ලෙස නම් කරන නියමයක් කන්ටේනරය දෙසට යන පැකට්ටුවක් සමඟ නොගැලපේ, සහ මේ ආකාරයේ සැකසුම්වල සාමාන්යයෙන් ඇත්තේ එම වැරැද්දයි. නියමය ඉහත වාක්යය තරම්ම පටුව තබන්න, සහ තටාකය වෙනස් වූ විට එය නැවත සමාලෝචනය කරන්න.
සේවාදායකයාගෙන් සත්යාපනය කරන්න, සත්කාරකයෙන් නොව
සත්කාරකයෙන්ම shim ලිපිනයට බැඳුණු ඉල්ලීමක් shim එකට කන්ටේනරයට ළඟා විය හැකි බව ඔප්පු කරයි. එය කන්ටේනරයට ආරක්ෂිත 10.95.0.x මූලාශ්රයකට ගමන් ආපසු යැවිය හැකි බව ඔප්පු නොකරයි, මන්ද එම පරීක්ෂාවේ මූලාශ්ර ලිපිනය shim එකේම ලිපිනය බැවිනි.
curl -sS --interface 192.168.60.250 -o /dev/null -w '%{http_code}\n' http://192.168.60.210:8080/health
sudo tcpdump -ni macvlan-vpn host 192.168.60.210පළමු විධානය සත්කාරකයේ සිට කන්ටේනරය දක්වා කොටස පරීක්ෂා කරයි, දෙවැන්න සැබෑ VPN සේවාදායකයා ඉල්ලීම කරන අතරේ shim හරහා සැබවින්ම ගමන් කරන්නේ කුමක්ද යන්න පෙන්වයි. ඇතුළු වන මාර්ගයේ මූලාශ්ර ලිපිනය සහ එම ප්රවාහයම සමඟ පිළිතුරක් පෙනේද යන්න බලන්න.
සත්කාරකයේ යැවීම සක්රීය කර තිබිය යුතුය, සහ යැවීමේ මාර්ගයට සේවා තොටුපළේ VPN තටාකයේ සිට shim දක්වා අවසරයක් සහ ස්ථාපිත පිළිතුරු සඳහා අවසරයක් අවශ්ය වේ. සත්කාරකයේ INPUT නියමය යවන ලද ගමන් අනුමත නොකරයි, සහ මාර්ගගත කිරීම නිවැරදි ලෙස පෙනුණු පසු පැකට්ටුව ඉවත දැමීමට එය සාමාන්ය හේතුවකි.
සැබෑ යෙදුම සැබෑ විද්යමානතා සමඟ ධාවනය කරන්න, පසුව එම කන්ටේනරයේ දෙවන, සම්බන්ධ නොවන සේවාව තවමත් ඔබව ප්රතික්ෂේප කරනවාද යන්න පරීක්ෂා කරන්න. එය ක්රියා කරවීමට ඇති එකම මාර්ගය සෑම යැවීමේ නියමයක්ම විවෘත කිරීම නම්, නිර්මාණය අවසන් නොවේ. සේවාව වාර්තා කළ මූලාශ්ර ලිපිනය කුමක්දැයි ද සටහන් කරන්න, මන්ද ඉන්පසු එහිම ප්රවේශ නියම එය භාවිත කරනු ඇත.