Android හි main වගුවට එකතු කරන ලද මාර්ගයක් සෑම ලැයිස්තුවකම නිවැරදිව පෙනෙන නමුත් තවමත් රථවාහන ගෙනයන්නේ නැත. හේතුව වන්නේ main වගුව විකල්ප කිහිපයකින් එකක් පමණක් වන අතර එය පළමුව විමසන්නේ නැත. Android හි ජාල සේවාව ගමනාන්ත ලිපිනයේ නොමැති තොරතුරු භාවිතයෙන් මාර්ගගත කිරීමේ වගුවක් තෝරන ප්‍රතිපත්ති නීති තනයි — යෙදුමේ uid, පැකට්ටුවේ ඇති සලකුණ, එය පැමිණි අතුරුමුහුණත — සහ ගමනාන්ත සෙවීම ඊට පසුව, එම නීති තෝරාගත් වගුව තුළ සිදු වේ.

ස්ථිර අනුපිළිවෙලකින් තීරණ තුනක්

පිටවන පැකට්ටුවක් වෙනස් තීරණ තුනක් ගනී. පළමුව, ප්‍රතිපත්ති නීතියක් තීරණය කරන්නේ කුමන මාර්ගගත වගුව අදාළ වන්නේ ද කියාය. දෙවනුව, එම වගුව තුළ ඇති මාර්ගයක් ඊළඟ පිම්ම සහ පිටවන අතුරුමුහුණත තීරණය කරයි. තෙවනුව, netfilter කොකු තීරණය කරන්නේ පැකට්ටුව නැති වී යයි ද, වෙනස් වේ ද, නැතහොත් නැවත හරවා යවයි ද කියාය.

අනුපිළිවෙල වැදගත් වන්නේ සෑම අදියරකටම එහිම ප්‍රශ්නයට පමණක් පිළිතුරු දිය හැකි බැවිනි. පැකට්ටුවක් පිළිගන්නා firewall නීතියක් වගුවක් තෝරන්නේ නැත, තවද කිසිදු නීතියක් තෝරා නොගන්නා වගුවකට එකතු කරන මාර්ගයක් අක්‍රීයය. Android VPN සම්බන්ධ බොහෝ ව්‍යාකූලත්වය පැමිණෙන්නේ තුනෙන් එකක් නිවැරදි කර වෙනසක් නොපෙනීමෙනි, මන්ද දෝෂය තවත් එකක තිබුණි.

StageSelectorWhat it cannot decide
Policy ruleuid range, mark, incoming interfaceWhich route exists inside the table
Route lookupDestination prefix, longest matchWhether the packet is allowed out
Netfilter hookChain position, match conditionsWhich table was selected

සලකුණු යනු ඇසුරුම් කළ ක්ෂේත්‍රයකි, ඔබට අයත් ලේබලයක් නොවේ

Android එකම සලකුණු අගය තුළ කරුණු කිහිපයක් ඇසුරුම් කරයි: කුමන ජාලය තෝරා ගත්තේ ද, යෙදුමක් පැහැදිලිවම ජාලයක් තෝරා ගත්තේ ද, සොකට් එකක් VPN එකෙන් ආරක්ෂා වී ඇත්ද, සහ අවසරවලට සම්බන්ධ බිටු. AOSP හි fwmark ශීර්ෂය වර්තමාන ගස සඳහා එම පිරිසැලසුම අර්ථ දක්වයි, සහ පිරිසැලසුම නිකුතු අතර වෙනස් වන වේදිකා අභ්‍යන්තර කරුණකි.

එබැවින් Android හි iptables -j MARK --set-mark මගින් සම්පූර්ණ සලකුණු අගයක් ලිවීම අනතුරුදායකය. එය ටැගයක් එකතු නොකරයි; එය පද්ධතිය දැනටමත් සිදු කළ ජාල තේරීම ප්‍රතිස්ථාපනය කරයි. ඉන්පසු පැකට්ටුව වෙනත් නීතිවලට ගැළපෙන අතර, එය VPN ක්‍රියාත්මක වීම ආරම්භ වූ ලෙස හෝ අදාළ නොවන යෙදුමක් සම්බන්ධතාවය අහිමි වූ ලෙස පෙනිය හැක, නැවත ලියන ලද බිටු මත පදනම්ව.

සලකුණු ස්පර්ශ කළ යුතුම නම්, පළමුව වර්තමාන අගය කියවා ඔබට තේරෙන බිටු පමණක් වෙනස් වන පරිදි ආවරණයක් භාවිත කරන්න:

ip rule show
ip route show table all | head -40
ip route get 10.20.4.11

සම්බන්ධතා සලකුණ පැකට්ටු සලකුණෙන් වෙන් වූ වස්තුවක් වන අතර දෙකම මාර්ගයක් නොවේ. පිළිතුරු පැකට්ටු මත සලකුණ ප්‍රතිස්ථාපනය කිරීම පිටවන විට වගුවක් තෝරා ගැනීමෙන් වෙනස් පියවරකි, එබැවින් එක්-දිශානුගත නිවැරදි කිරීම් විවෘත වී පසුව එල්ලී යන සම්බන්ධතා නිපදවයි.

නීති සහ වගු හිමිකරු කවුද

Android හි ජාල සේවාව වන netd නීති සහ ජාලයකට වගු නිර්මාණය කරයි. AOSP RouteController යනු VPN, භෞතික ජාල සහ uid පරාස සඳහා එම නීති එකලස් කරන ස්ථානය වන අතර එහි ජීවන චක්‍රය වින්‍යාස ගොනුවකට නොව ජාල සිදුවීම්වලට බැඳී ඇත.

ප්‍රතිවිපාක දෙකක් අනුගමනය කරයි. පළමුව, එක් උපාංගයක ඔබට හමුවන ප්‍රමුඛතා සහ වගු අංක ගොඩනැගීමේ අභ්‍යන්තර විස්තර වන අතර අතුරුමුහුණතක් නොවේ: වෙනත් Android අනුවාදයක එකම ලෙස පෙනෙන අංක සම්පූර්ණයෙන්ම වෙනත් දෙයක් අදහස් කළ හැක. දෙවනුව, ජාල වෙනස් වන විට තත්ත්වය නැවත ගොඩනැගේ, එබැවින් අද root ෂෙලයකින් ඇතුළු කරන ලද නීතියක් ඊළඟ Wi-Fi මාරුවෙන් පසු අතුරුදහන් වී තිබිය හැක.

මෙම අතුරුදහන් වීම බොහෝ විට වාර්තා වන්නේ පද්ධතිය මාර්ගයක් නොසලකා හරින බවටය. සැබවින්ම සිදු වූයේ වගුව තෝරාගත් නීතිය තවදුරටත් නොපවතින බවත්, වගුව තුළ ඇති මාර්ගය දැන් පැකට්ටුවේ දෘෂ්ටිකෝණයෙන් ළඟා විය නොහැකි බවත්ය. නැවත සම්බන්ධ වීමෙන් පසු ක්‍රියා කළ වින්‍යාසයක් ක්‍රියා කිරීම නතර වූ විට මාර්ග ලැයිස්තුව නොව නීති ලැයිස්තුව පරීක්ෂා කරන්න.

කොකු අනුපිළිවෙල පිළිබඳ ප්‍රශ්නවලට විශ්වීය පිළිතුරක් නැත

iptables VPN මාර්ගගත කිරීමට පෙර ක්‍රියා කරනවාද යන ප්‍රශ්නයට පැකට්ටුවේ මාර්ගය නම් නොකර පිළිතුරු දිය නොහැක. ස්ථානීයව ජනනය කළ පැකට්ටුවක් output කොකුව හරහා යයි, එහිදී සලකුණු වෙනසක් නැවත මාර්ගගත කිරීමේ පරීක්ෂාවක් අවුලුවයි — එය දෙවන සෙවීමකි, පළමුවැන්න පසුව සංස්කරණය කිරීමක් නොවේ. tether කළ සේවාලාභියෙකුගෙන් පැමිණෙන පැකට්ටුව prerouting මාර්ගය හරහා ගොස් ඒ වෙනුවට ඉදිරියට යවනු ලැබේ, එය දකින දාම වෙනත් ඒවා වේ.

එබැවින් එකම නීතියක් යෙදුමක රථවාහන සඳහා ඵලදායී වන අතර tether රථවාහන සඳහා නොපෙනී යා හැක, තවද බිංදුවේ රැඳෙන ගණකයක් පවසන්නේ පැකට්ටුව ගත්තේ කුමන මාර්ගය ද කියාය, නීතිය වැරදිද කියා නොවේ. ඕනෑම ගැළපුම් කොන්දේසියක් වෙනස් කිරීමට පෙර ගණක මගින් මාර්ගය තහවුරු කරන්න.

ප්‍රතිපත්ති මාර්ගගත කිරීමේ දෝෂයක් දැකීම අපහසු වන අදියර ද මෙයයි. පවතින නමුත් ගමනාන්තය නොමැති වගුවකට මාර්ගගත කිරීම firewall බිඳවැටීමක් ලෙස පෙනෙන ජාලයට ළඟා විය නොහැක තත්ත්වයක් නිපදවයි, එහෙත් firewall බිඳවැටීමක් මාර්ගගත කිරීමේ කළු කුහරයක් ලෙස පෙනෙන කාල ඉකුත්වීමක් නිපදවයි.

පද්ධතිය තුළම රෝග විනිශ්චය කරන්න, නැතහොත් එය අතහැර දමන්න

අවසර ලත් සමාලෝචනයක් සඳහා, කිසිවක් ස්පර්ශ කිරීමට පෙර කරුණු හතරක් තහවුරු කරන්න: යෙදුමේ uid සහ පැතිකඩ, Android එය සඳහා තෝරාගත් ජාලය, VPN එම යෙදුම ඇතුළත් කරන්නේ ද, සහ ගැටලුව ලිපින පවුල් දෙකෙහිම පවතී ද. යෙදුමකට වෙන් වූ බැහැර කිරීමක් කිසිදු මාර්ගගත දෝෂයක් නොමැතිව VPN ක්‍රියා නොකරයි යන බොහෝ වාර්තා පැහැදිලි කරයි.

පසුව සැබවින්ම බලපවත්වන නීති, ආවරණ සහ වගු කියවා, නිරීක්ෂණ කවුළුව තුළ ජාල මාරුවක් තබා ගන්න. නැවත සම්බන්ධ වීම පුරා හැසිරීම වෙනස් වේ නම්, ඔබ බලන්නේ කළමනාකරණය කළ ජීවන චක්‍රයක් මිස අතුරුදහන් මාර්ගයක් නොවේ.

සාමාන්‍ය අවශ්‍යතා සඳහා ආධාරක පාලක භාවිත කරන්න: යෙදුමකට වෙන් වූ ඇතුළත් කිරීම සහ බැහැර කිරීම VPN යෙදුම තුළ, සහ නිශ්චිත මාර්ගයක් අවශ්‍ය සෑම දෙයකටම වේදිකාවේම ජාල තේරීම. වරප්‍රසාදිත ඒකාබද්ධතාවයක් සැබවින්ම මාර්ගගත කිරීමේ යන්ත්‍රය සමඟ සහයෝගයෙන් කටයුතු කළ යුතු නම්, ඔබ ආධාරක කරන නිශ්චිත Android අනුවාදයේ ක්‍රියාත්මක කිරීම ඉලක්ක කර එහි හිමිකරු වන සංරචකය හරහා එහි ජීවන චක්‍රය පවත්වා ගන්න. වේදිකා දාම හිස් කිරීම හෝ ඉහළ ප්‍රමුඛතා නීතියක් ඇතුළු කිරීම රෝග විනිශ්චය දෙවන ජාල කළමනාකරුවෙකු බවට පත් කරයි, සහ දුරකථනය එයට අනුව හැසිරෙනු ඇත.

අදාළ ලිපි