නෙට්වර්ක් දෙකක් සහිත කන්ටේනරය වැරදි ගේට්වේ තෝරා ගනී
සම්බන්ධතා දෙකක්, එක් පෙරනිමි මාර්ගයක්, සහ වැරදි ජාලය සෑම විටම ජය ගනී. Compose gw_priority සමඟ පිටවීම සවි කර කන්ටේනරය තුළින්ම තහවුරු කරන්න.
ඔබේ කන්ටේනරය තවමත් එහි පාලන පාලම මත පිළිතුරු දෙයි, නමුත් සෑම පිටවන පැකට්ටුවක්ම කාර්යාල macvlan හරහා පිටවේ. කිසිවක් අසාර්ථක වී නැත. සම්බන්ධතා දෙකක් එකින් එක ගේට්වේ එකක් ලබා දෙන අතර, එකම පෙරනිමි මාර්ගය ඔබ අදහස් නොකළ ජාලයට ගිය නිසා සේවාව දිගටම ක්රියා කරයි, නමුත් එහි ගමනාගමනය දිගු මාර්ගයක් ගනී. යමෙකු එය දකින විට සාක්ෂිය දෝෂ පණිවිඩයක් නොව මාර්ගගත කිරීමේ වගුවකි.
සාමාන්ය පැහැදිලි කිරීම නම් Docker ජාලය අහම්බෙන් තෝරා ගත් බවයි. ප්රායෝගිකව පැරණි තීරණය සම්බන්ධ කළ ජාල නම්වල අකාරාදී අනුපිළිවෙල අනුගමනය කළ අතර, එය මාර්ගගත කිරීම ලේබලයක අතුරු ප්රතිඵලයක් බවට පත් කළේය. gw_priority එය ඔබ හිතාමතා තෝරන සංඛ්යාවකින් ප්රතිස්ථාපනය කරයි, සහ වින්යාසය ලියා අවසන් වූ පසු එය භාර ගැනීමට මිනිත්තුවක් පමණ ගත වේ.
පෙරනිමි මාර්ගය වැරදි ජාලයට වැටෙන්නේ ඇයි
සේවාවක් සම්බන්ධ වන සෑම ජාලයකටම තමන්ගේම ගේට්වේ එකක් ඉදිරිපත් කළ හැක, නමුත් කන්ටේනරයට ඉතිරි වන්නේ හරියටම එක් පෙරනිමි මාර්ගයක් පමණි. Compose 2.33.1 ට පෙර සම බෙදීම ජාල නම් වර්ග කිරීමෙන් තීරණය වූ අතර, එබැවින් control වැනි ලේබලයක් office ට පෙර පැමිණියහොත් ගමනාගමනය යන තැන එය තීරණය කළේය. කන්ටේනරය තුළ තීරණය අත්තනෝමතික බව කිසිවක් සටහන් නොකරයි, එබැවින් එය කේත සමාලෝචනය පසු කර පසුව අමුතු මාර්ගයක් ලෙස මතු වේ. compose ගොනුවේ ප්රතිපත්තියක් තැබීම තෝරා ගැනීම පරීක්ෂා කළ හැකි කිරීමට ඇති එකම මාර්ගයයි.
කුමන ජාලය ජය ගනීද යන්න සැබවින්ම වෙනස් කරන්නේ දෙයක්: ඔබ නියම කරන gw_priority අගයන් සහ කුමන ජාල සම්බන්ධ කර ඇත්ද යන්නයි. තුන්වන ජාලයක් එකතු කළහොත් අපේක්ෂක කට්ටලය වර්ධනය වේ; macvlan ඉවත් කළහොත් පාලම සමඟ තරඟ කිරීමට කිසිවක් ඉතිරි නොවේ. කිසිදු පියවරක් යෙදුම් ලොගවල නොපෙනේ, මන්ද වැරදි පෙරනිමි මාර්ගයක් සම්බන්ධතාවය සම්පූර්ණයෙන්ම කඩා දමන්නේ කලාතුරකිනි. එය පිළිතුරු අනෙක් පැත්ත අපේක්ෂා නොකරන ලිපිනයකින් පැමිණීමට පමණක් සලසයි.
gw_priority සමඟ ගේට්වේ සවි කරන්න
Compose 2.33.1 අනුවාදයේ සිට සෑම සේවා-සිට-ජාල සම්බන්ධතාවයකම gw_priority නිරාවරණය කරන අතර විශාලතම සංඛ්යාව ජය ගනී. සේවාවකට වෙන වෙනම ගේට්වේ යතුරක් නැත, එබැවින් අගය සේවාවේ networks කොටසට අයත් වේ. පහත උදාහරණය පෙරනිමිය control ට ලබා දෙන අතර office එහි සෘජුවම සම්බන්ධ LAN සඳහා ළඟා විය හැකිව පවතී.
services:
vpn:
networks:
control:
gw_priority: 1
office:
gw_priority: 0
networks:
control:
driver: bridge
ipam:
config:
- subnet: 172.30.50.0/24
office:
driver: macvlan
driver_opts:
parent: eno1.120
macvlan_mode: bridge
ipam:
config:
- subnet: 192.168.120.0/24
ip_range: 192.168.120.192/27
gateway: 192.168.120.1
කොටස වෙන වෙනම පාලන දෙකක් ලෙස කියවන්න: gw_priority පෙරනිමි මාර්ගය තීරණය කරන අතර ipam කොටස ලිපිනකරණය තීරණය කරයි. subnet පමණක් වෙනස් කිරීමෙන් පිටවීමේ තේරීම ස්පර්ශ නොවී පවතී, සහ මෙම නිවැරදි කිරීම අඩකින් යෙදෙන පොදුම ආකාරය එයයි. ප්රමුඛතා ඒවා පාලනය කරන ජාලය අසලම තබන්න, ඊළඟ කියවන්නාට තීරණය සොයා යාමට සිදු නොවන පරිදි.
gw_priority අසල ඇති සාමාන්ය priority ගුණාංගය සමඟ පටලවා නොගන්න. එය සම්බන්ධතා නිර්මාණය පිළිවෙලට තබන අතර මාර්ගගත කිරීම ගැන කිසිවක් නොකියයි, එබැවින් එයට පෙරනිමි ගේට්වේ තෝරා ගත නොහැකි අතර අතුරුමුහුණත් නම් නිවැරදි නොකරයි. ගමනාගමනය හරවා යැවීමට priority වැඩි කරන්නැයි යමෙකු යෝජනා කරන්නේ නම්, ප්රතිඵලයක් ලෙස ලැබෙන අනුපිළිවෙල අහම්බෙන් නිවැරදි බව පෙනුණත් යෝජනාව වැරදිය.
පෙරනිමි මාර්ගය සැබවින්ම ගෙන යන්නේ කුමන ජාලයදැයි තහවුරු කරන්න
ක්රියාත්මක වන කන්ටේනරය තුළ පරීක්ෂා කරන්න, මන්ද සත්කාරකයේ මාර්ගගත කිරීමේ වගුව විස්තර කරන්නේ සත්කාරකයයි, සේවාව භාවිතා කරන නාම අවකාශය නොවේ. පළමුව වින්යාස පරීක්ෂාව ධාවනය කරන්න, එවිට යතුරු ලියන දෝෂයක් නැවත ආරම්භ කිරීමට පෙර හසු වේ, පසුව කන්ටේනරය සැබවින්ම ස්ථාපනය කළ මාර්ගය කියවන්න.
docker compose config --quiet
docker exec vpn ip -4 route show default
docker exec vpn cat /proc/net/route
නිවැරදි ප්රතිඵලය පාලම් උපාංගය සහ 172.30.50.1 නම් කරයි; වැරදි එකක් 192.168.120.1 සහ macvlan උපාංගය නම් කරයි. රූපයේ iproute2 පැකේජය නොමැති නම්, /proc ගොනුව තවමත් පෙරනිමි මාර්ගය වාර්තා කරයි, ගමනාන්තය 00000000 සහ ගේට්වේ බයිට් ආපසු හැරවූ ලෙස. උපාංග නම් පැහැදිලි නොවන විට අතුරුමුහුණත් තීරුව docker inspect සමඟ සසඳන්න.
macvlan යනු භෞතික වරායකි, පාලමේ පිටපතක් නොවේ
macvlan කන්ටේනරයට රැහැන මත දෙවන අනන්යතාවයක් ලබා දෙන අතර, දේශීය උපාංගවලට ප්රවේශය ක්රියා කරවන්නේ එයයි. එයින් අදහස් වන්නේ ස්විච් වරාය සහ හයිපර්වයිසරය අමතර MAC ලිපිනයක් පිළිගත යුතු බවත්, බොහෝ ක්ලවුඩ් ජාල එය නිහඬව ප්රතික්ෂේප කරන බවත්ය. බලඇණියක් සැලසුම් කිරීමට පෙර එක් කන්ටේනරයක් පරීක්ෂා කරන්න, මන්ද ප්රතික්ෂේප වූ MAC සාමාන්යයෙන් දිස්වන්නේ ඉහළින් පවතින නමුත් කිසිවක් ගමන් නොකරන සබැඳියක් ලෙසය.
macvlan_mode: bridge සැකසුම macvlan ධාවකයේ මාදිලියකි, Docker හි මෘදුකාංග පාලම නොවේ, සහ passthru පෙරනිමියක් නොව එක් විශේෂිත මාදිලියකි. Linux ද macvlan කන්ටේනරයක් එහිම සත්කාරකයට ළඟා වීම වළක්වයි එකම මව් අතුරුමුහුණත හරහා, එබැවින් එක් සම්බන්ධතාවයක් කාර්යයන් දෙකම කරනු ඇතැයි බලා සිටීම වෙනුවට පාලන පාලම රඳවා ගනී.
Compose එය දකින්නට පෙර VLAN මව් අතුරුමුහුණත නම් කරන්න
Docker eno1.120 වැනි තිතක් සහිත මව් අතුරුමුහුණත 802.1Q උප අතුරුමුහුණතක් ලෙස සලකා VLAN උපාංගය තමන්ම නිර්මාණය කරයි. එම පහසුවට සීමා ඇත: ව්යුත්පන්න නාමය භෞතික අතුරුමුහුණතේ නාමය මත රඳා පවතින අතර, දිගු නාම ප්රතිඵලය වටා ඇති මෙවලම් අපේක්ෂා කරන තැනින් ඔබ්බට තල්ලු කළ හැක. සත්කාරකයේ ජාල වින්යාසයේ නම් කළ VLAN අතුරුමුහුණතක් සාදා parent එය වෙත යොමු කිරීමෙන් දෙකෙළවරම අනාවැකි කළ හැකිව පවතී.
networks යටතේ ඇති යතුර Compose නාමයක් මිස Linux උපාංගයක් නොවන බව මතක තබා ගන්න. සත්කාරකයේ office නම් අතුරුමුහුණතක් සෙවීම අසාර්ථක වේ, මන්ද කර්නලය දකින්නේ මව් අතුරුමුහුණත සහ කන්ටේනරය පිටුපස ඇති veth යුගලය පමණි.
ඉහළින් VPN සඳහා ඉඩ සලසන්න
VPN සේවාදායකයා සම්බන්ධ වන්නේ මෙම ජාල පවතින පසුවය, එබැවින් gw_priority නොසලකා වඩාත් නිශ්චිත මාර්ග, ප්රතිපත්ති නීති සහ පෙරහන් එකතු කළ හැක. දූරස්ථ උපසර්ග දෙකම දේශීය subnet දෙකට එරෙහිව සැලසුම් කරන්න, පාලන මාර්ගයට අවශ්ය පිළිතුරු ඇතුළුව. දූරස්ථ උපසර්ගයක් කාර්යාල LAN සමඟ අතිච්ඡාදනය වන විට, සම්පූර්ණ පෞද්ගලික පරාසයක් උමඟෙන් ඇද ඉවත් කිරීම වෙනුවට ලිපින සැලැස්ම නිවැරදි කරන්න.
VPN ආරම්භ වූ පසු සහ නැවත සම්බන්ධ වූ පසුවත් ලිපින, මාර්ග සහ සේවා මාර්ගය නැවත පරීක්ෂා කරන්න, මන්ද අතින් එකතු කළ මාර්ගය අතුරුදහන් වන්නේ නැවත සම්බන්ධ වන විටය. පළමු පරීක්ෂණයට පෙර අපේක්ෂිත වගුව ලියා තබන්න, එවිට පසුව කරන සංසන්දනය මතක අභ්යාසයක් නොව diff එකක් වේ. ජාලයේ ස්ථිර හිමිකාරිත්වය Compose තුළ තබන්න සහ VPN වින්යාසයට තමන්ගේම ප්රතිපත්තිය පමණක් තිබිය යුතුය.