د کرنل کچه یوازې یو عمومي پروتوکول - خپلواک انٹرفیس چمتو کوي چې د پاکټونو څخه د ډیټا ایستلو ، د معلوماتو عملیاتو ترسره کولو ، او جریان کنټرول لپاره لومړني دندې چمتو کوي. د فلټر کولو قواعد او د پروتوکول ځانګړي هینډلرونه د کارونکي ځای کې بایټ کوډ کې تنظیم شوي ، وروسته له دې چې دا بایټ کوډ د Netlink انٹرفیس په کارولو سره کرنل کې بار شوی او په ځانګړي مجازی ماشین کې د BPF (برکلي پاکټ فلټرونو) یادونه کوي په کرنل کې اجرا کیږي. دا طریقه تاسو ته اجازه درکوي د فلټر کولو کوډ اندازه د پام وړ کمه کړئ چې د کرنل په کچه روان دي او د پروتوکولونو سره کار کولو لپاره د پارس کولو قواعد او منطق ټولې دندې د کارونکي ځای کې حرکت کوي.
اصلي نوښتونه:
- په اتصالونو کې د سلسلې لپاره ملاتړ (تړون، د پتې ځینې بنډلونه او بندرونه چې پرتله کول ساده کوي). د مثال په توګه، د یوې سیټ "ویټ لیست" لپاره چې عناصر یې ضمیمه دي، د "وقاله" بیرغ مشخص کول به دا په ګوته کړي چې سیټ کولی شي په ضمیمه کې سلسلې شاملې کړي (د ضمیمه "ipv4_addr. ipv4_addr. inet_service" لپاره دا دمخه ممکنه وه چې دقیق لیست کړئ د "192.168.10.35. 192.68.11.123" فورمې سره سمون لري، او اوس تاسو کولی شئ د پتې ګروپونه مشخص کړئ "80-192.168.10.35-192.168.10.40".
جدول ip foo {
سپین لیست ترتیب کړئ {
ipv4_addr ټایپ کړئ. ipv4_addr. inet_service
د پرچم وقفه
عناصر = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
}زنځیر بار {
د فلټر هک ډول پریروټینګ لومړیتوب فلټر؛ د پالیسۍ کمښت
ip saddr. ip daddr. tcp dport@whitelist مني
}
} - په سیټونو او نقشو لیستونو کې ، دا ممکنه ده چې د "ډول" لارښود وکاروئ ، کوم چې د میچ کولو پرمهال د عنصر بڼه ټاکي.
د مثال په توګه:جدول ip foo {
سپین لیست ترتیب کړئ {
د ip saddr ډول
عناصر = {192.168.10.35, 192.168.10.101, 192.168.10.135 }
}زنځیر بار {
د فلټر هک ډول پریروټینګ لومړیتوب فلټر؛ د پالیسۍ کمښت
ip daddr@whitelist مني
}
}جدول ip foo {
نقشه addr2mark {
د ip saddr ډول: میټا نښه
عناصر = {192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
}
} - د NAT بانډونو کې د شمولیت کارولو وړتیا اضافه کړه ، کوم چې تاسو ته اجازه درکوي د نقشې لیستونو یا نومول شوي سیټونو پراساس د NAT بدلونونو تعریف کولو پرمهال پته او بندر مشخص کړئ:
nft ضمیمه ضابطه ip nat pre dnat ip addr. بندر ته د ip صدر نقشه { 1.1.1.1 : 2.2.2.2 . دیرش }
nft نقشه ip nat منزلونه اضافه کړئ { ټایپ ipv4_addr. inet_service: ipv4_addr. inet_service \\; }
nft ضمیمه ضابطه ip nat pre dnat ip addr. بندر ته ip sadr. tcp dport نقشه @ منزلونه - د شبکې کارت لخوا ترسره شوي ځینې فلټر کولو عملیاتو سره د هارډویر سرعت لپاره ملاتړ. سرعت د ethtool یوټیلیټ ("ethtool -K eth0 hw-tc-offload on") له لارې فعال شوی ، له هغې وروسته دا د "آفلوډ" بیرغ په کارولو سره د اصلي سلسلې لپاره په nftables کې فعال کیږي. کله چې د لینکس کرنل 5.6 کاروئ، د هارډر ګړندیتوب د سرلیک ساحې میچ کولو او راتلونکي انٹرفیس تفتیش لپاره د ترلاسه کولو ، ردولو ، نقل کولو (ډوپ) ، او فارورډ کولو (fwd) پاکټونو سره په ترکیب کې ملاتړ کیږي. په لاندې مثال کې، د 192.168.30.20 پتې څخه راځي د پاکټونو د غورځولو عملیات د شبکې کارت په کچه ترسره کیږي، پرته له دې چې کڅوړې کرنل ته انتقال کړي:
# cat file.nft
جدول netdev x {
زنځیر y {
د فلټر هک د ننوتلو وسیله ډول eth0 لومړیتوب 10؛ بيرغونه پورته کول
IP Saddr 192.168.30.20 ډراپ
}
}
# nft -f file.nft - په مقرراتو کې د غلطۍ د موقعیت په اړه ښه معلومات.
# nft حذف قاعده ip yz هینډل 7
تېروتنه: قاعده پروسس نشو کولی: داسې فایل یا لارښود نشته
قاعده ip yz هینډل 7 حذف کړئ
^# nft حذف قاعده ip xx هینډل 7
تېروتنه: قاعده پروسس نشو کولی: داسې فایل یا لارښود نشته
د ip xx هینډل 7 قاعده حذف کړئ
^# nft ړنګ جدول twst
تېروتنه: داسې کومه فایل یا لارښود نشته؛ ایا تاسو په کورنۍ ip کې د میز "ټیسټ" معنی لرئ؟
د میز twst حذف کړئ
^^^^لومړۍ بیلګه ښیي چې جدول "y" په سیسټم کې نه دی، دوهم دا چې د "7" هینډلر ورک دی، او دریم دا چې د میز نوم ټایپ کولو پر مهال د ټایپو پرامپټ ښکاره کیږي.
- د "meta sdif" یا "meta sdifname" مشخص کولو سره د غلام انٹرفیس چک کولو لپاره ملاتړ اضافه شوی:
... meta sdifname vrf1 ...
- د ښي یا چپ شفټ عملیاتو لپاره ملاتړ اضافه شوی. د مثال په توګه، د موجوده پیکټ لیبل د 1 بټ لخوا پریښودل او کوچني بټ 1 ته تنظیم کړئ:
… میټا مارک سیټ میټا مارک lshift 1 یا 0x1 …
- د پراخ شوي نسخې معلوماتو ښودلو لپاره "-V" اختیار پلي شوی.
# nft -V
nftables v0.9.4 (په پنځو کې ژوند)
cli: readline
json: هو
minigmp: نه
libxtables: هو - د کمانډ لاین اختیارونه باید اوس د کمانډونو دمخه مشخص شي. د مثال په توګه، تاسو اړتیا لرئ د "nft -a لیست قواعد" مشخص کړئ، او د "nft لیست قواعد -a" چلول به د تېروتنې پایله ولري.
سرچینه: opennet.ru