එක් cgroup එකකින් එන ගමන් වාහනය සලකුණු කිරීම පහසු කොටසයි. එක් යෙදුමක් භෞතික අතුරුමුහුණත හරහා පිටවී අනෙක් සියල්ල උමඟ තුළම රැඳී සිටීමට පෙර වෙන වෙනම තීරණ තුනක් එකඟ විය යුතුය: කුමන සොකට් එක ව්යතිරේකයට අයත්ද, සලකුණ කුමන මාර්ග සෙවීමක් ඇති කරයිද, සහ පිටවන විට පැකට්ටුව කුමන මූලාශ්ර ලිපිනය රැගෙන යයිද. අසාර්ථක උත්සාහයන්ගෙන් බොහොමයක් පළමුවැන්න නිවැරදිව කරයි, දෙවැන්න අඩක්, සහ තුන්වැන්න දෙස කිසිදා නොබලයි.

තීරණ තුනක්, එකක් නොවේ

වර්ගීකරණය කවුරුන් නිදහස්ද යන්නට පිළිතුරු දෙයි. මාර්ගගත කිරීම සලකුණු කළ පැකට්ටුව ඒ වෙනුවට කොහේ යයිද යන්නට පිළිතුරු දෙයි. මූලාශ්ර තේරීම දුර කෙළවර කුමක් දකිනු ඇත්ද සහ පිළිතුර කොහේ නැවත යා යුතුද යන්නට පිළිතුරු දෙයි.

මේවා ස්වාධීනව අසාර්ථක වේ. පැකට්ටුවක් වර්ගීකරණය කර, භෞතික අතුරුමුහුණතට නැවත මාර්ගගත කර, ඉහළ මාර්ගගතකරුවෙකුට නැවත එවිය නොහැකි පුද්ගලික ලිපිනයක් තවමත් රැගෙන යා හැක; එය ෆයර්වෝල් අවහිරයක් ලෙසම පෙනෙන කාලය ඉකුත්වීමක් ඇති කරයි. වර්ගීකරණ පියවරේ කිසිවක් ඒ ගැන අනතුරු අඟවන්නේ නැත. මාර්ග පියවරේද කිසිවක් නැත.

අනුපිළිවෙලද වැදගත්ය. පැකට්ටුව සෑදෙන විට වර්ගීකරණය සිදු වේ, ඉන් පසු මාර්ගගත කිරීම, සහ පිටවන ස්ථානයේ පරිවර්තනය සිදු වේ.

පියවර තුනෙන් කුමක් කැඩී ඇත්දැයි කිව නොහැකි නම්, ඔබ දෝෂ නිරාකරණය නොකරයි, නීති නැවත සකස් කර බලාපොරොත්තු වේ.

හෙටත් පවතින cgroup එකකට ගැළපෙන්න

nftables හට සොකට් එකක cgroup v2 සාමාජිකත්වය පරීක්ෂා කළ හැක; එය ගමනාන්තය නොව ක්රියාවලිය අනුගමනය කරන බැවින් සැබවින්ම ප්රයෝජනවත්ය. උගුල වන්නේ හඳුනාගැනීමයි. මෙනුවකින් ආරම්භ කරන ඩෙස්ක්ටොප් යෙදුමක් බොහෝ විට ඊළඟ ආරම්භයේදී නම වෙනස් වන තාවකාලික scope එකක ජීවත් වේ.

nft list ruleset
systemctl status session.slice 2>/dev/null
cat /proc/self/cgroup

එක් සැසියකින් scope නාමය පරිසර්ජනය කර දෘඩ ලෙස ලිවීම අද ක්රියා කර හෙට නිහඬව නොගැළපෙන නීතියක් ඇති කරයි. ඒ වෙනුවට යෙදුම ඔබ පාලනය කරන කැපවූ scope එකක් හෝ unit එකක් වැනි අභිප්රේත, ස්ථාවර ක්රියාත්මක විස්තරයක තබා එයට ගැළපෙන්න. එවිට නීතිය නැවත ආරම්භ කිරීම් සහ පැකේජ යාවත්කාලීනවලින් ඉතිරි වේ. එය ඔබේ සැසි ඉතිහාසය නොමැතිව සගයෙකුට සිතිය හැකි දෙයක්ද බවට පත් වේ.

ඔබ භාවිතා කරන යාන්ත්රණය කුමක්ද යන්න ගැනද නිවැරදි වන්න. cgroup v1 හි net_cls වර්ගීකරණය සහ cgroup v2 හි සොකට් ගැළපීම වෙනස් දේවල් වන අතර, ලේඛනවල එකම නමක් ඇති ක්ෂේත්රයක් ඒවා එකිනෙකට හුවමාරු කළ හැකි නොකරයි.

දෙවන සෙවීම ඇති කරන්නේ route දාමයයි

ස්ථානීයව ජනනය වන ගමන් වාහනය සඳහා, සලකුණ තැබීමෙන් පසු යමක් සිදු වේද නැද්ද යන්න තීරණය කරන්නේ දාම වර්ගයයි. filter වර්ගයේ output දාමයකට පැකට්ටුව සලකුණු කළ හැකි අතර කර්නලය දැනටමත් තෝරාගත් මාර්ගයම දිගටම භාවිතා කරයි. route වර්ගයේ දාමය නව සෙවීමක් ඉල්ලා සිටින යාන්ත්රණයයි.

table inet bypass {
  chain mark {
    type route hook output priority mangle; policy accept;
    socket cgroupv2 level 2 "app.slice" meta mark set 0x1 comment "app bypass"
  }
}
ip rule add fwmark 0x1 lookup 200
ip route add default via 203.0.113.1 dev wlan0 table 200

ඉන්පසු සලකුණට එය වගුවකට යවන ප්රතිපත්ති නීතියක් අවශ්ය වන අතර එම වගුව සම්පූර්ණ විය යුතුය: පෙරනිමි මාර්ගය, යෙදුමට තවමත් අවශ්ය ස්ථානීය ගමනාන්ත, සහ සැබවින්ම පිළිතුරු දෙන ඉහළ ගේට්වේ එකක්.

සලකුණේ අගය අභිප්රේතව තෝරන්න. WireGuard බාහිර ප්රවාහන ගමන් වාහනය සඳහා තමන්ගේම fwmark භාවිතා කරන අතර, අහම්බෙන් එම සංඛ්යාවටම පතිත වීම උමඟේම මාර්ග ව්යතිරේකයට රෝග විනිශ්චය කිරීම අපහසු ආකාරවලින් බාධා කළ හැක.

මූලාශ්ර ලිපිනය මාර්ගය අනුගමනය නොකරයි

උමඟ මාර්ගය සඳහා දැනටමත් මූලාශ්ර ලිපිනයක් තෝරාගෙන ඇති සොකට් එකක් නැවත මාර්ගගත කිරීමෙන් පසුවත් එම ලිපිනයම රඳවා ගනී. මාර්ග වෙනසෙහි එය නැවත ලියන කිසිවක් නැත, එබැවින් ඉහළ ජාලයට නැවත එවිය නොහැකි පුද්ගලික මූලාශ්රයක් සමඟ පැකට්ටුව භෞතික අතුරුමුහුණතින් පිටවේ.

දෘශ්ය රෝග ලක්ෂණය වන්නේ දත්ත යවන බව පෙනෙන නමුත් කිසිදා පිළිතුරක් නොලබන යෙදුමක්, සහ පැකට්ටුව කිසිදා ආපසු නොආ බැවින් කිසිවක් නොපෙන්වන ෆයර්වෝල් ලොගයක්ය.

පටු නිවැරදි කිරීම වන්නේ එම යෙදුමේ සලකුණට සහ එහි සැබෑ ප්රතිදාන අතුරුමුහුණතට සීමා වූ, දැනටමත් ඇති NAT සමඟ ඒකාබද්ධ කළ, එය ප්රතිස්ථාපනය නොකරන මූලාශ්ර පරිවර්තන නීතියකි:

table inet bypass {
  chain postrouting {
    type nat hook postrouting priority srcnat; policy accept;
    meta mark 0x1 oifname "wlan0" masquerade
  }
}

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

තවමත් ව්යතිරේකයෙන් ගැලවෙන දේ

නාම විභේදනය වෙනත් cgroup එකක ඇති වෙනම resolver ක්රියාවලියකින් පැමිණිය හැක, එබැවින් බ්රවුසරයේ සොකට් එක වර්ගීකරණය කිරීම එහි සෙවීම් වර්ගීකරණය නොකරයි. resolver හි ප්රශ්න උමඟ තුළම රැඳී සන්ධානය ඉන් පිටතට ගියහොත්, split-horizon පිළිතුරු මාර්ගය සමඟ නොගැළපිය හැක. එම නොගැළපීම DNS දෝෂ මෙන් පෙනෙන නමුත් එසේ නොවන විෂමතා ඇති කරයි.

බොහෝ සැකසුම්වල දරු ක්රියාවලි cgroup උරුම කර ගනී, නමුත් තමන්ව තමන්ගේම scope එකකට ගෙන යන සහායකයෙක් උරුම නොකරයි. උපකල්පනය නොකර පරීක්ෂා කරන්න, විශේෂයෙන් තමන්ව නැවත ක්රියාත්මක කරන සියල්ල සඳහා.

අවසාන වශයෙන්, උමඟ වැටී ඇති විට කුමක් සිදු විය යුතුද යන්න තීරණය කරන්න. නිහඬව සම්පූර්ණ මඟහැරීමක් වන ව්යතිරේකයක්, අසාර්ථක විට වැසී යන ව්යතිරේකයකින් වෙනස් ආරක්ෂක ඉරියව්වකි, සහ ඔබ අදහස් කළේ ඉන් එකක් පමණි.

අදාළ ලිපි