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

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

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

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

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

    ဇယား ip x {
    သတ်မှတ် y {
    ip saddr အမျိုးအစား
    ဆိုင်ရောင်းခုံရှည်
    အစိတ်အပိုင်းများ = { 192.168.10.35၊ 192.168.10.101၊ 192.168.10.135 }
    }

    ကွင်းဆက် z {
    အမျိုးအစား filter ချိတ် output ဦးစားပေး filter; မူဝါဒလက်ခံ;
    ip daddr @y
    }
    }

  • ကောင်တာများ၏ကနဦးတန်ဖိုးများကိုသတ်မှတ်ရန်၊ ဥပမာအားဖြင့်၊ ပြန်လည်စတင်ပြီးနောက်ယခင်ကောင်တာများကိုပြန်လည်ရယူရန်၊ သင်သည် "nft -f" အမိန့်ကိုသုံးနိုင်သည်-

    #ကြောင် ruleset.nft
    ဇယား ip x {
    သတ်မှတ် y {
    ip saddr အမျိုးအစား
    ဆိုင်ရောင်းခုံရှည်
    အစိတ်အပိုင်းများ = { 192.168.10.35 တန်ပြန်ပက်ကတ်များ 1 bytes 84၊ 192.168.10.101 \
    ကောင်တာ p 192.168.10.135 ကောင်တာပက်ကတ်များ 0 bytes 0 }
    }

    ကွင်းဆက် z {
    အမျိုးအစား filter ချိတ် output ဦးစားပေး filter; မူဝါဒလက်ခံ;
    ip daddr @y
    }
    }
    # nft -f ruleset.nft
    #nft စာရင်းစည်းမျဉ်းများ
    ဇယား ip x {
    သတ်မှတ် y {
    ip saddr အမျိုးအစား
    ဆိုင်ရောင်းခုံရှည်
    အစိတ်အပိုင်းများ = { 192.168.10.35 တန်ပြန်ပက်ကတ်များ 1 bytes 84၊ 192.168.10.101 \
    ကောင်တာ p 192.168.10.135 ကောင်တာပက်ကတ်များ 0 bytes 0 }
    }

    ကွင်းဆက် z {
    အမျိုးအစား filter ချိတ် output ဦးစားပေး filter; မူဝါဒလက်ခံ;
    ip daddr @y
    }
    }

  • ကောင်တာပံ့ပိုးမှုအား flowtable တွင် ထည့်သွင်းထားသည်။

    ip foo ဇယား {
    flowtable bar {
    ချိတ် ingress ဦးစားပေး -100
    ကိရိယာများ = {eth0၊ eth1 }
    ဆိုင်ရောင်းခုံရှည်
    }

    ရှေ့သို့ ကွင်းဆက် {
    အမျိုးအစား filter ကိုရှေ့ဆက်ချိတ် ဦးစားပေး filter;
    flow ကို @bar ကောင်တာထည့်ပါ။
    }
    }

    command "conntrack -L" ကို အသုံးပြု၍ ကောင်တာများစာရင်းကို သင်ကြည့်ရှုနိုင်သည်-

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packets=9 bytes=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packets=8 bytes=428 [OFFLOAD] mark=0 \
    secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    packets=1005763 bytes=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    packets=967505 bytes=50310268 [OFFLOAD] mark=0 secctx=null အသုံးပြုမှု=2

  • concatenation အတွက် sets များတွင် (ပေါင်းစပ်မှု၊ အချို့သော လိပ်စာများ အစုအဝေးများနှင့် နှိုင်းယှဉ်မှုကို ရိုးရှင်းစေသော ports) တွင်၊ set ၏ ဒြပ်စင်အစိတ်အပိုင်းများအတွက် ဒေတာအမျိုးအစားကို ဆုံးဖြတ်ပေးသည့် "typeof" ညွှန်ကြားချက်ကို အသုံးပြုရန် ဖြစ်နိုင်သည်-

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

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

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

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

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

  • အမည်မသိ (အမည်မဖော်လိုသော) အစုံများတွင် အပိုင်းအခြားပါဝင်မှုများအတွက် ပံ့ပိုးမှု ထပ်ထည့်သည်-

    # nft add rule inet filter input ip daddr . tcp dport\
    { 10.0.0.0/8 . 10-23၊ 192.168.1.1-192.168.3.8။ 80-443 } လက်ခံပါသည်။

  • ကွန်ရက်တံတားများကို စီမံဆောင်ရွက်ပေးသည့်အခါ 802.1q (VLAN) အလံများပါရှိသော ပက်ကတ်များကို စွန့်ပစ်နိုင်သည်-

    # nft စည်းမျဉ်းပေါင်းကူးတံတား foo bar ether အမျိုးအစား vlan reject ကို tcp ပြန်လည်သတ်မှတ်ခြင်းဖြင့်

  • TCP session identifier (conntrack ID) ဖြင့် ကိုက်ညီမှုအတွက် ပံ့ပိုးမှု ထပ်လောင်းထည့်ထားပါသည်။ conntrack ID ကိုဆုံးဖြတ်ရန်၊ "--output id" option ကိုသုံးနိုင်သည်-

    # conntrack -L —output ID
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 packets=2 \
    bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
    [ASSURED] mark=0 use=1 id=2779986232

    # nft add rule foo bar ct id 2779986232 ကောင်တာ

source: opennet.ru

မှတ်ချက် Add