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

packet filter nftables 1.0.3 ကို ထုတ်ဝေပြီး IPv4၊ IPv6၊ ARP နှင့် network bridges (iptables၊ ip6table၊ arptables နှင့် ebtables) များအတွက် packet filtering interface များကို ပေါင်းစည်းပြီး ထုတ်ဝေထားပါသည်။ အလုပ်လုပ်ရန်အတွက် nftables 1.0.3 ထုတ်ဝေမှုအတွက် လိုအပ်သောပြောင်းလဲမှုများသည် Linux 5.18 kernel တွင်ပါဝင်သည်။

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

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

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

  • ယခုသတ်မှတ်ထားသောစာရင်းများသည် “*” သင်္ကေတကို အသုံးပြု၍ သတ်မှတ်ထားသော မျက်နှာဖုံးတစ်ခုမှ ကိုက်ညီသော ကွန်ရက်အင်တာဖေ့စ်အမည်များကို ပံ့ပိုးပေးနေပါပြီ- table inet testifsets { set simple_wild { type ifname flags interval elements = { “abcdef*”, “othername”, “ppp0” } } ကွင်းဆက် v4icmp { အမျိုးအစား filter ချိတ်ထည့်သွင်းမှု ဦးစားပေး 0; မူဝါဒလက်ခံ; iifname @simple_wild ကောင်တာပက်ကတ်များ 0 bytes 0 iifname { “abcdef*”, “eth0” } တန်ပြန်ပက်ကတ်များ 0 bytes 0 } }
  • လည်ပတ်နေစဉ်အတွင်း ဖြတ်တောက်ထားသော set-list element များကို အလိုအလျောက် ပေါင်းစည်းခြင်းကို အကောင်အထည်ဖော်ခဲ့သည်။ ယခင်က၊ "အော်တို-ပေါင်းစည်းခြင်း" ရွေးချယ်မှုကို သတ်မှတ်သောအခါ၊ စည်းမျဥ်းများကြေညာသည့်အဆင့်တွင် ပေါင်းစည်းခြင်းကို လုပ်ဆောင်ခဲ့သော်လည်း ယခုအခါ လုပ်ဆောင်ချက်အတွင်း ဒြပ်စင်အသစ်များ တိုးလာသောအခါတွင်လည်း ၎င်းသည် အလုပ်လုပ်ပါသည်။ ဥပမာအားဖြင့်၊ ကြေငြာချက်အဆင့်တွင်၊ စာရင်းသည် y { အလံများကြားကာလ အလိုအလျောက်ပေါင်းစည်းသည့်ဒြပ်စင်များ = { 1.2.3.0၊ 1.2.3.255၊ 1.2.3.0/24၊ 3.3.3.3၊ 4.4.4.4၊ 4.4.4.4-4.4.4.8 ဟု သတ်မှတ်သည် , 3.3.3.4 , 3.3.3.5 } } သည် ဒြပ်စင်များ = { 1.2.3.0/24 ၊ 3.3.3.3-3.3.3.5 ၊ 4.4.4.4-4.4.4.8 } နှင့် ဒြပ်စင်အသစ်များ ထည့်ပါက # nft အစိတ်အပိုင်းကို ပေါင်းထည့်ပါ ip xy { 1.2.3.0 -1.2.4.255, 3.3.3.6 } သည် ဒြပ်စင်များ = { 1.2.3.0-1.2.4.255၊ 3.3.3.3-3.3.3.6၊ 4.4.4.4-4.4.4.8 }

    ရှိပြီးသား အပိုင်းအခြားအရာများအတွင်း ကျရောက်နေသော စာရင်းမှ တစ်ခုချင်းစီကို ဖယ်ရှားသောအခါ၊ အပိုင်းအခြားကို တိုတောင်းခြင်း သို့မဟုတ် ကွဲသွားပါသည်။

  • လိပ်စာမျိုးစုံဘာသာပြန်ဆိုခြင်း (NAT) စည်းမျဉ်းများကို မြေပုံစာရင်းထဲသို့ “-o/—optimize” ရွေးချယ်မှုကို သတ်မှတ်သည့်အခါ ဟုခေါ်သော စည်းမျဉ်းများကို ပိုမိုကောင်းမွန်အောင်လုပ်ဆောင်ခြင်းသို့ ပေါင်းထည့်ခြင်းအတွက် ပံ့ပိုးမှုပေးထားပါသည်။ ဥပမာအားဖြင့် set # cat ruleset.nft ဇယား ip x { chain y { nat hook postrouting ဦးစားပေး srcnat; မူဝါဒကျဆင်းခြင်း၊ ip saddr 1.1.1.1 tcp dport 8000 snat မှ 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat မှ 5.5.5.5:90 } }

    “nft -o -c -f ruleset.nft” ကို လုပ်ဆောင်ခြင်းဖြင့် သီးခြား “ip saddr” စည်းမျဉ်းများကို မြေပုံစာရင်းအဖြစ်သို့ ပြောင်းလဲပေးမည်- snat မှ ip saddr . tcp dport မြေပုံ { 1.1.1.1 . 8000: 4.4.4.4 ။ 80၊ 2.2.2.2။ 8001: 5.5.5.5 ။ 90}

    အလားတူ၊ ကုန်ကြမ်းအသုံးအနှုန်းများကို မြေပုံစာရင်းများအဖြစ်သို့ ပြောင်းနိုင်သည်- # cat ruleset.nft ဇယား ip x { […] ကွင်းဆက် nat_dns_acme { udp အရှည် 47-63 @th,160,128 0x0e373135363130333131303735353203 goto အရှည် 62 78x160,128e0e nat_dns_this_0 သို့သွားပါ udp အရှည် 31393032383939353831343037320-5301 @th,62 78x160,128e0e goto nat_dns_saturn_0 udp အရှည် 31363436323733373931323934300-5301 @th,62 78x160,128 0 0e goto nat_dns_saturn_32393535373539353636383732310 udp အရှည် 5302-62 @th,78 160,128x0e0e go to nat_dns_saturn_38353439353637323038363633390 drop } }

    ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ပြီးနောက် ကျွန်ုပ်တို့သည် မြေပုံစာရင်းတစ်ခုရရှိသည်- udp အရှည်။ @th၊160,128 vmap { 47-63 . 0x0e373135363130333131303735353203 : nat_dns_dnstc၊ 62-78 သို့သွားပါ။ 0x0e31393032383939353831343037320e : nat_dns_this_5301၊ 62-78 သို့သွားပါ။ 0x0e31363436323733373931323934300e : nat_dns_saturn_5301၊ 62-78 သို့ သွားပါ။ 0x0e32393535373539353636383732310e : nat_dns_saturn_5302၊ 62-78 သို့ သွားပါ။ 0x0e38353439353637323038363633390e : go to nat_dns_saturn_5303 }

  • ပေါင်းစည်းခြင်းလုပ်ငန်းများတွင် ကုန်ကြမ်းအသုံးအနှုန်းများကို အသုံးပြုခြင်းကို ခွင့်ပြုထားသည်။ ဥပမာ- #nft သည် xy ip saddr စည်းမျဉ်းကိုထည့်သည်။ @ih,32,32 { 1.1.1.1 . 0x14၊ 2.2.2.2 0x1e } သို့မဟုတ် ဇယား x { set y { ip saddr အမျိုးအစား။ @ih,32,32 ဒြပ်စင်များ = { 1.1.1.1 . 0x14 } } }
  • ပေါင်းစပ်လုပ်ဆောင်မှုများတွင် ကိန်းပြည့်ခေါင်းစီးအကွက်များကို သတ်မှတ်ခြင်းအတွက် ထပ်လောင်းပံ့ပိုးမှု- ဇယား inet t { map m1 { typeof udp length . @ih,32,32 : စီရင်ချက် အလံများ ကြားကာလ အစိတ်အပိုင်းများ = { 20-80 . 0x14 : လက်ခံပါ၊ ၁-၁၀။ 1xa : drop } } chain c { type filter hook input ကို ဦးစားပေး 10; မူဝါဒကျဆင်းခြင်း၊ udp အရှည်။ @ih၊0၊0 vmap @m32,32 } }
  • TCP ရွေးချယ်မှုများကို ပြန်လည်သတ်မှတ်ခြင်းအတွက် ထပ်လောင်းပံ့ပိုးမှု (Linux kernel 5.18+ နှင့်သာ အလုပ်လုပ်သည်)- tcp အလံများ syn reset tcp option sack-perm
  • ကွင်းဆက်အထွက်အမိန့်များ (“nft စာရင်းကွင်းဆက် xy”) ကို အရှိန်မြှင့်လုပ်ဆောင်ခဲ့သည်။

source: opennet.ru

မှတ်ချက် Add