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

ထုတ်ဝေခဲ့သည်။ ပက်ကေ့ဂျ်ထုတ်ခြင်း nftables 0.9.4IPv6၊ IPv4၊ ARP နှင့် ကွန်ရက်တံတားများအတွက် packet filtering interfaces များကို ပေါင်းစည်းခြင်းဖြင့် iptables၊ ip6table၊ arptables နှင့် ebtables များအတွက် အစားထိုးတစ်ခုအဖြစ် တီထွင်ဖန်တီးနေပါသည်။ nftables ပက်ကေ့ဂျ်တွင် အသုံးပြုသူနေရာလွတ်တွင် လည်ပတ်နေသော ပက်ကက်စစ်ထုတ်သည့် အစိတ်အပိုင်းများ ပါ၀င်ပြီး kernel-level အလုပ်ကို 3.13 ကတည်းက Linux kernel ၏ တစ်စိတ်တစ်ပိုင်းဖြစ်သည့် nf_tables ခွဲစနစ်က ပံ့ပိုးပေးထားသည်။ အလုပ်လုပ်ရန်အတွက် nftables 0.9.4 ထွက်ရှိမှုအတွက် လိုအပ်သောပြောင်းလဲမှုများကို အနာဂတ် kernel ဌာနခွဲတွင် ထည့်သွင်းထားပါသည်။ Linux ကို 5.6.

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

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

  • ချိတ်ဆက်မှုများရှိ အပိုင်းအခြားများအတွက် ပံ့ပိုးမှု (ပေါင်းစပ်ဖွဲ့စည်းမှု၊ အချို့သော လိပ်စာများနှင့် နှိုင်းယှဉ်မှုကို ရိုးရှင်းစေသော ဆိပ်ကမ်းများ)။ ဥပမာအားဖြင့်၊ ပူးတွဲပါဒြပ်စင်တစ်ခုဖြစ်သည့် "ဝှိုက်စာရင်း" တစ်ခုအတွက်၊ "ကြားကာလ" အလံကို သတ်မှတ်ခြင်းသည် ပူးတွဲပါဖိုင်တွင် အပိုင်းအခြားများ ပါဝင်နိုင်သည်ကို ညွှန်ပြလိမ့်မည် (ပူးတွဲဖိုင် "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}
    }

    ကွင်းဆက်ဘား {
    အမျိုးအစား filter ချိတ်ကို prerouting ဦးစားပေး filter; မူဝါဒကျဆင်းခြင်း၊
    ip saddr။ ip ဖေဖေ။ tcp dport @whitelist လက်ခံသည်။
    }
    }

  • အစုံများနှင့် မြေပုံစာရင်းများတွင်၊ ကိုက်ညီသောအခါတွင် ဒြပ်စင်၏ဖော်မတ်ကို ဆုံးဖြတ်ပေးသည့် “အမျိုးအစား၏” ညွှန်ကြားချက်ကို အသုံးပြုနိုင်သည်။
    ဥပမာ:

    ip foo ဇယား {
    ခွင့်ပြုစာရင်းသတ်မှတ်ပါ {
    ip saddr အမျိုးအစား
    အစိတ်အပိုင်းများ = { 192.168.10.35၊ 192.168.10.101၊ 192.168.10.135 }
    }

    ကွင်းဆက်ဘား {
    အမျိုးအစား filter ချိတ်ကို prerouting ဦးစားပေး filter; မူဝါဒကျဆင်းခြင်း၊
    ip daddr @whitelist လက်ခံပါတယ်။
    }
    }

    ip foo ဇယား {
    မြေပုံ addr2mark {
    ip အမျိုးအစား saddr : meta အမှတ်အသား
    အစိတ်အပိုင်းများ = { 192.168.10.35 : 0x00000001၊ 192.168.10.135 : 0x00000002 }
    }
    }

  • မြေပုံစာရင်းများ သို့မဟုတ် အမည်ပေးထားသောအစုံများကို အခြေခံ၍ NAT အသွင်ပြောင်းမှုများကို သတ်မှတ်သည့်အခါ လိပ်စာနှင့် ဆိပ်ကမ်းကို သတ်မှတ်ခွင့်ပြုသည့် NAT ပေါင်းစပ်မှုများတွင် ချိတ်ဆက်မှုများကို အသုံးပြုရန် စွမ်းရည်ကို ပေါင်းထည့်ထားသည်-

    nft add rule ip nat pre dnat ip addr ။ port to ip saddr map { 1.1.1.1 : 2.2.2.2 . သုံးဆယ်}

    nft မြေပုံ ip nat လိုရာခရီးများကိုထည့်ပါ { ipv4_addr လို့ရိုက်ထည့်ပါ။ inet_service- ipv4_addr။ inet_service \\; }
    nft add rule ip nat pre dnat ip addr ။ ip saddr သို့ port ။ tcp dport မြေပုံ @destinations

  • ကွန်ရက်ကတ်ဖြင့် လုပ်ဆောင်သည့် စစ်ထုတ်ခြင်းလုပ်ငန်းအချို့နှင့်အတူ ဟာ့ဒ်ဝဲအရှိန်မြှင့်မှုအတွက် ပံ့ပိုးမှု။ အရှိန်မြှင့်ခြင်းကို ethtool utility (“ethtool -K eth0 hw-tc-offload on”) မှတစ်ဆင့် ဖွင့်ထားသည်)၊ ထို့နောက် ၎င်းကို “offload” အလံကို အသုံးပြု၍ ပင်မကွင်းဆက်အတွက် nftables တွင် အသက်သွင်းသည်။ Linux kernel 5.6 ကိုအသုံးပြုသောအခါ၊ လက်ခံခြင်း၊ စွန့်ပစ်ခြင်း၊ ပွားခြင်း (dup) နှင့် forwarding (fwd) packets များနှင့်အတူ ပေါင်းစည်းထားသော header field matching နှင့် incoming interface inspection အတွက် hardware acceleration ကို ပံ့ပိုးပေးပါသည်။ အောက်ဖော်ပြပါ ဥပမာတွင်၊ လိပ်စာ 192.168.30.20 မှလာသော ပက်ကေ့ချဲများကို ကွန်ရက်ကတ်အဆင့်တွင် လုပ်ဆောင်ပြီး ပက်ကတ်များကို kernel သို့မဖြတ်သန်းဘဲ၊

    # ကြောင် file.nft
    netdev x ဇယား {
    ကွင်းဆက် y {
    အမျိုးအစား filter ချိတ် ingress device eth0 ဦးစားပေး 10; အလံများ offload;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • စည်းမျဉ်းများတွင် အမှားအယွင်းတစ်ခု၏ တည်နေရာအကြောင်း အချက်အလက်ကို မြှင့်တင်ထားသည်။

    # nft delete rule ip yz handle ၇
    အမှား- စည်းမျဥ်းကို မဆောင်ရွက်နိုင်ပါ- ထိုဖိုင် သို့မဟုတ် လမ်းညွှန်မရှိပါ။
    rule ip yz handle 7 ကိုဖျက်ပါ။
    ^

    # nft delete rule ip xx handle ၇
    အမှား- စည်းမျဥ်းကို မဆောင်ရွက်နိုင်ပါ- ထိုဖိုင် သို့မဟုတ် လမ်းညွှန်မရှိပါ။
    စည်းကမ်း ip xx လက်ကိုင်ကိုဖျက်ပါ ၇
    ^

    # nft ဇယား twst ကိုဖျက်ပါ။
    အမှား- ထိုကဲ့သို့သော ဖိုင် သို့မဟုတ် လမ်းညွှန်မရှိပါ။ family ip မှာ table 'test' ကို ဆိုလိုတာလား။
    ဇယား twst ကိုဖျက်ပါ။
    ^^^^

    ပထမဥပမာတွင်ဇယား "y" သည်စနစ်တွင်မရှိကြောင်း၊ ဒုတိယ "7" ကိုင်တွယ်သူပျောက်ဆုံးနေကြောင်းနှင့်တတိယအချက်မှာဇယားအမည်ကိုရိုက်သောအခါ typo prompt ကိုပြသသည်။

  • "meta sdif" သို့မဟုတ် "meta sdifname" ကိုသတ်မှတ်ခြင်းဖြင့် slave interface ကိုစစ်ဆေးခြင်းအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်သွင်းထားသည်-

    ... meta sdifname vrf1 ...

  • ညာ သို့မဟုတ် ဘယ်ဘက်အဆိုင်း လုပ်ဆောင်ချက်များအတွက် ပံ့ပိုးမှု ထပ်ထည့်ထားသည်။ ဥပမာအားဖြင့်၊ ရှိပြီးသား packet အညွှန်းကို 1 bit ဖြင့် ထားခဲ့ပြီး minor bit ကို 1 သို့ သတ်မှတ်ရန်-

    … မက်တာ အမှတ်အသား သတ်မှတ် မက်တာ အမှတ်အသား lshift 1 သို့မဟုတ် 0x1…

  • တိုးချဲ့ဗားရှင်းအချက်အလက်ကိုပြသရန် "-V" ရွေးချယ်မှုကို အကောင်အထည်ဖော်ခဲ့သည်။

    # nft -V
    nftables v0.9.4 (ငါးရက်တွင်နေရန်)
    cli:readline
    json: ဟုတ်ကဲ့
    minigmp: မဟုတ်ဘူး
    libxtables: ဟုတ်ကဲ့

  • Command line ရွေးစရာများကို ယခုအခါ အမိန့်မချမီ သတ်မှတ်ရပါမည်။ ဥပမာအားဖြင့်၊ သင်သည် “nft -a list ruleset” ကို သတ်မှတ်ရန် လိုအပ်ပြီး “nft list ruleset -a” ကို လုပ်ဆောင်ခြင်းသည် အမှားအယွင်းတစ်ခု ဖြစ်သွားလိမ့်မည်။

    source: opennet.ru

မှတ်ချက် Add