nftables packet filter 0.9.9 ထွက်ရှိသည်။

packet filter nftables 0.9.9 ကိုထုတ်ဝေပြီး IPv4၊ IPv6၊ ARP နှင့် network bridges (iptables၊ ip6table၊ arptables နှင့် ebtables) များအတွက် packet filtering interfaces များကို ပေါင်းစည်းပြီး ထုတ်ဝေထားပါသည်။ တစ်ချိန်တည်းမှာပင်၊ အဖော်စာကြည့်တိုက် libnftnl 1.2.0 ကို ထုတ်ဝေခဲ့ပြီး nf_tables စနစ်ခွဲများနှင့် အပြန်အလှန်တုံ့ပြန်ရန်အတွက် အဆင့်နိမ့် API ကို ပေးဆောင်ခဲ့သည်။ အလုပ်လုပ်ရန်အတွက် nftables 0.9.9 ထွက်ရှိမှုအတွက် လိုအပ်သောပြောင်းလဲမှုများကို Linux kernel 5.13-rc1 တွင် ထည့်သွင်းထားပါသည်။

nftables ပက်ကေ့ဂျ်တွင် အသုံးပြုသူနေရာလွတ်တွင် လည်ပတ်နေသော ပက်ကက်စစ်ထုတ်သည့် အစိတ်အပိုင်းများ ပါ၀င်ပြီး kernel-level အလုပ်ကို 3.13 ကတည်းက Linux kernel ၏ တစ်စိတ်တစ်ပိုင်းဖြစ်သည့် nf_tables ခွဲစနစ်က ပံ့ပိုးပေးထားသည်။ kernel အဆင့်သည် ပက်ကတ်များမှ ဒေတာထုတ်ယူရန်၊ ဒေတာလည်ပတ်မှုနှင့် စီးဆင်းမှုထိန်းချုပ်မှုအတွက် အခြေခံလုပ်ဆောင်ချက်များကို ပံ့ပိုးပေးသည့် ယေဘူယျပရိုတိုကော-အမှီအခိုကင်းသော အင်တာဖေ့စ်ကို ထောက်ပံ့ပေးသည်။

စစ်ထုတ်ခြင်းဆိုင်ရာ စည်းမျဉ်းများနှင့် ပရိုတိုကော-သီးသန့် ကိုင်တွယ်သူများကို အသုံးပြုသူနေရာရှိ ဘိုက်ကုဒ်အဖြစ် စုစည်းထားပြီး၊ ထို့နောက်တွင် ဤ bytecode ကို Netlink မျက်နှာပြင်ကို အသုံးပြု၍ kernel ထဲသို့ တင်ကာ BPF (Berkeley Packet Filters) ကို အမှတ်ရသည့် အထူး virtual machine တွင် kernel တွင် လုပ်ဆောင်သည်။ ဤချဉ်းကပ်မှုသည် kernel အဆင့်တွင် လုပ်ဆောင်နေသော စစ်ထုတ်ကုဒ်၏ အရွယ်အစားကို သိသာထင်ရှားစွာ လျှော့ချနိုင်ပြီး ပရိုတိုကောများနှင့် လုပ်ဆောင်ရန်အတွက် အသုံးပြုသူနေရာသို့ ခွဲခြမ်းစိတ်ဖြာခြင်းဆိုင်ရာ စည်းမျဉ်းများနှင့် ယုတ္တိဗေဒဆိုင်ရာ လုပ်ငန်းဆောင်တာအားလုံးကို ရွှေ့နိုင်စေပါသည်။

အဓိက တီထွင်ဆန်းသစ်မှုများ-

  • 'offload' အလံကို အသုံးပြု၍ flowtable လုပ်ဆောင်ခြင်းအား ကွန်ရက် adapter ဘက်သို့ ရွှေ့ရန် စွမ်းရည်ကို အကောင်အထည်ဖော်ပြီးဖြစ်သည်။ Flowtable သည် packet redirection ၏လမ်းကြောင်းကို အကောင်းဆုံးဖြစ်အောင်ပြုလုပ်သည့် ယန္တရားတစ်ခုဖြစ်ပြီး၊ ၎င်းတွင် rule processing chains များအားလုံးကို ပထမ packet တွင်သာအသုံးပြုပြီး flow ရှိ အခြားသော packet အားလုံးကို တိုက်ရိုက် forward လုပ်ပါသည်။ ဇယား ip global { flowtable f { ချိတ် ingress ဦးစားပေး filter + 1 devices = { lan3, lan0, wan } flags offload } chain forward { type filter hook forward priority filter; မူဝါဒလက်ခံ; ip protocol { tcp, udp } flow add @f } chain post { nat hook postrouting priority filter; မူဝါဒလက်ခံ; oifname "wan" ဟန်ဆောင် } }
  • လုပ်ငန်းစဉ်တစ်ခုအားဖြင့် ဇယားကို သီးသန့်အသုံးပြုမှုသေချာစေရန် ပိုင်ရှင်အလံကို စားပွဲတစ်ခုတွင် ပူးတွဲထည့်သွင်းခြင်းအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်သွင်းထားသည်။ လုပ်ငန်းစဉ်တစ်ခု ရပ်ဆိုင်းသွားသောအခါ၊ ၎င်းနှင့်ဆက်စပ်နေသော ဇယားကို အလိုအလျောက် ဖျက်သွားပါမည်။ လုပ်ငန်းစဉ်နှင့်ပတ်သက်သည့် အချက်အလက်ကို မှတ်ချက်တစ်ခုပုံစံဖြင့် စည်းမျဉ်းစည်းကမ်းများ အမှိုက်ပုံတွင် ဖော်ပြသည်- table ip x { # progname nft flags owner chain y { type filter hook input priority filter; မူဝါဒလက်ခံ; ကောင်တာအထုပ်များ 1 bytes 309 } }
  • IEEE 802.1ad သတ်မှတ်ချက် (VLAN stacking သို့မဟုတ် QinQ) အတွက် ပံ့ပိုးမှု ပေါင်းထည့်ထားသော VLAN တက်ဂ်များကို Ethernet ဖရိန်တစ်ခုထဲသို့ အစားထိုးခြင်းအတွက် နည်းလမ်းတစ်ခုအဖြစ် သတ်မှတ်သည်။ ဥပမာအားဖြင့်၊ ပြင်ပ အီသာနက်ဖရိန် 8021ad နှင့် vlan id=342 အမျိုးအစားကို စစ်ဆေးရန်၊ တည်ဆောက်မှုကို သင်အသုံးပြုနိုင်သည် ... ether အမျိုးအစား 802.1ad vlan id 342 Ethernet frame 8021ad/vlan id=1၊ nested 802.1 ၏ ပြင်ပအမျိုးအစားကို စစ်ဆေးရန်၊ q/vlan id=2 နှင့် နောက်ထပ် IP packet encapsulation- ... ether အမျိုးအစား 8021ad vlan id 1 vlan အမျိုးအစား 8021q vlan id 2 vlan အမျိုးအစား ip ကောင်တာ
  • ပေါင်းစည်းထားသော အထက်အောက် cgroups v2 ကို အသုံးပြု၍ အရင်းအမြစ်များကို စီမံခန့်ခွဲခြင်းအတွက် ပံ့ပိုးမှု ပေါင်းထည့်ထားသည်။ cgroups v2 နှင့် v1 အကြား အဓိကကွာခြားချက်မှာ အရင်းအမြစ်အမျိုးအစားအားလုံးအတွက် ဘုံ cgroups hierarchy ကိုအသုံးပြုခြင်းဖြစ်ပြီး CPU အရင်းအမြစ်များကိုခွဲဝေပေးခြင်း၊ မှတ်ဉာဏ်သုံးစွဲမှုထိန်းညှိခြင်းအတွက် နှင့် I/O အတွက် သီးခြားအထက်တန်းအဆင့်များအစား၊ ဥပမာအားဖြင့်၊ ပထမအဆင့် cgroupv2 ရှိ socket ၏ဘိုးဘေးများသည် “system.slice” mask နှင့် ကိုက်ညီမှုရှိမရှိ စစ်ဆေးရန်၊ တည်ဆောက်မှုကို သင်အသုံးပြုနိုင်သည်- ... socket cgroupv2 အဆင့် 1 “system.slice”
  • SCTP ပက်ကေ့ခ်ျများ၏ အစိတ်အပိုင်းများကို စစ်ဆေးနိုင်စွမ်းကို ထပ်ဖြည့်ထားပါသည် (၎င်းအတွက် လိုအပ်သော လုပ်ဆောင်နိုင်စွမ်းသည် Linux kernel 5.14 တွင် ပေါ်လာမည်)။ ဥပမာအားဖြင့်၊ ပက်ကတ်တစ်ခုတွင် အမျိုးအစား 'ဒေတာ' နှင့် အကွက် 'အမျိုးအစား' ပါရှိသော အပိုင်းတစ်ခုပါရှိ၊
  • “-f” အလံကို အသုံးပြု၍ စည်းကမ်းတင်ခြင်း လုပ်ဆောင်ချက်ကို နှစ်ကြိမ်ခန့် အရှိန်မြှင့်ခဲ့သည်။ စည်းမျဥ်းစည်းကမ်းများ ထုတ်ပေးရေးကိုလည်း အရှိန်မြှင့်ခဲ့သည်။
  • အလံဘစ်များကို သတ်မှတ်ပေးထားခြင်းရှိမရှိ စစ်ဆေးရန်အတွက် သေးငယ်သောပုံစံ။ ဥပမာအားဖြင့်၊ snat နှင့် dnat status bits များကို မသတ်မှတ်ထားကြောင်း စစ်ဆေးရန်၊ သင်သတ်မှတ်နိုင်သည်- ... ct status ! bitmask syn,ack: ... tcp အလံများ syn/sync တွင် syn bit ကိုသတ်မှတ်ထားကြောင်းစစ်ဆေးရန်၊ dnat သည် bitmask syn,ack,fin,rst တွင် fin နှင့် rst bit များကိုမသတ်မှတ်ထားကြောင်းစစ်ဆေးရန်- ... tcp အလံများ ! = fin,rst / syn,ack,fin,rst
  • set/map type of definitions တွင် "စီရင်ချက်" သော့ချက်စာလုံးကို ခွင့်ပြုပါ- မြေပုံ xm { typeof iifname . ip ပရိုတိုကော th dport : စီရင်ချက် ;}

source: opennet.ru

မှတ်ချက် Add