nftables packet filter 0.9.5 nga pagpagawas

gipatik pagpagawas sa packet filter nftables 0.9.5, nag-develop isip kapuli sa mga iptable, ip6table, arptables ug ebtables pinaagi sa paghiusa sa mga packet filtering interface para sa IPv4, IPv6, ARP ug network bridges. Ang nftables package naglakip sa packet filter components nga nagdagan sa user space, samtang ang kernel-level work gihatag sa nf_tables subsystem, nga nahimong bahin sa Linux kernel sukad sa pagpagawas sa 3.13. Ang mga pagbag-o nga gikinahanglan alang sa pagpagawas sa nftables 0.9.5 aron magtrabaho gilakip sa kernel Linux 5.7.

Ang lebel sa kernel naghatag lamang sa usa ka generic nga protocol-independent nga interface nga naghatag og mga batakang gimbuhaton alang sa pagkuha sa datos gikan sa mga pakete, paghimo sa mga operasyon sa datos, ug pagkontrol sa dagan. Ang mga lagda sa pagsala ug mga tigdumala nga espesipiko sa protocol gihugpong ngadto sa bytecode sa user space, pagkahuman niini nga bytecode gikarga sa kernel gamit ang Netlink interface ug gipatuman sa kernel sa usa ka espesyal nga virtual machine nga nagpahinumdom sa BPF (Berkeley Packet Filters). Kini nga pamaagi nagtugot kanimo nga makunhuran ang gidak-on sa code sa pagsala nga nagdagan sa lebel sa kernel ug ibalhin ang tanan nga mga gimbuhaton sa mga lagda sa pag-parse ug lohika alang sa pagtrabaho kauban ang mga protocol sa wanang sa gumagamit.

Panguna nga mga inobasyon:

  • Ang suporta alang sa packet ug traffic counters nga may kalabutan sa set nga mga elemento gidugang sa mga set. Gi-enable ang mga counter gamit ang "counter" nga keyword:

    lamesa ip x {
    set y {
    matang sa ip saddr
    counter
    elemento = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    kadena z {
    type filter hook output priority filter; pagdawat sa palisiya;
    ip daddr @y
    }
    }

  • Aron mabutang ang mga inisyal nga kantidad sa mga counter, pananglitan, aron mapasig-uli ang nangaging mga counter pagkahuman sa pagsugod, mahimo nimong gamiton ang mando nga "nft -f":

    # iring ruleset.nft
    lamesa ip x {
    set y {
    matang sa ip saddr
    counter
    mga elemento = {192.168.10.35 mga counter packet 1 bytes 84, 192.168.10.101 \
    counter p 192.168.10.135 counter packets 0 bytes 0 }
    }

    kadena z {
    type filter hook output priority filter; pagdawat sa palisiya;
    ip daddr @y
    }
    }
    # nft -f ruleset.nft
    #nft list ruleset
    lamesa ip x {
    set y {
    matang sa ip saddr
    counter
    mga elemento = {192.168.10.35 mga counter packet 1 bytes 84, 192.168.10.101 \
    counter p 192.168.10.135 counter packets 0 bytes 0 }
    }

    kadena z {
    type filter hook output priority filter; pagdawat sa palisiya;
    ip daddr @y
    }
    }

  • Ang suporta sa counter gidugang usab sa flowtable:

    lamesa ip foo {
    flowtable bar {
    hook ingress prayoridad -100
    mga himan = { eth0, eth1 }
    counter
    }

    kadena sa unahan {
    type filter hook forward priority filter;
    flow add @bar counter
    }
    }

    Mahimo nimong tan-awon ang lista sa mga counter gamit ang command "conntrack -L":

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packet=9 bytes=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packets=8 bytes=428 [OFFLOAD] marka=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] marka=0 secctx=null use=2

  • Sa mga set alang sa concatenation (concatenation, pipila ka mga bundle sa mga adres ug mga pantalan nga nagpayano sa pagtandi), posible nga gamiton ang "typeof" nga direktiba, nga nagtino sa tipo sa datos sa mga elemento alang sa mga sangkap nga bahin sa mga elemento sa set:

    lamesa ip foo {
    ibutang ang whitelist {
    matang sa ip saddr. tcp dport
    elemento = {192.168.10.35. 80, 192.168.10.101. 80}
    }

    chain bar {
    type filter hook prerouting priority filter; pagkunhod sa palisiya;
    ip dadr. tcp dport @whitelist dawaton
    }
    }

  • Ang tipo sa direktiba karon magamit usab sa pag-apil sa mga lista sa mapa:

    lamesa ip foo {
    mapa addr2mark {
    matang sa ip saddr . tcp dport: marka sa meta
    elemento = {192.168.10.35. 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002 }
    }

    chain bar {
    type filter hook prerouting priority filter; pagkunhod sa palisiya;
    meta mark set ip daddr . tcp dport map @addr2mark dawaton
    }
    }

  • Gidugang nga suporta alang sa range nga nag-apil sa anonymous (wala hinganli) nga mga set:

    # nft pagdugang lagda inet filter input ip daddr. tcp dport\
    { 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8. 80-443 } modawat

  • Ang abilidad sa paglabay sa mga pakete nga adunay 802.1q (VLAN) nga mga bandila kung ang pagproseso sa mga tulay sa network gihatag:

    # nft add rule bridge foo bar ether type vlan reject with tcp reset

  • Gidugang nga suporta alang sa pagpares pinaagi sa TCP session identifier (conntrack ID). Aron mahibal-an ang conntrack ID, mahimo nimong gamiton ang kapilian nga "--output id":

    # conntrack -L β€”output id
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 pakete=2 \
    bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
    [ASURED] marka=0 gamit=1 id=2779986232

    # nft add rule foo bar ct id 2779986232 counter

Source: opennet.ru

Idugang sa usa ka comment