nftables paka filtrilo 0.9.5 eldono

eldonita paka filtrilo liberigo nftables 0.9.5, evoluante kiel anstataŭaĵo por iptables, ip6table, arptables kaj ebtables unuigante pakaĵetfiltrilinterfacojn por IPv4, IPv6, ARP kaj retaj pontoj. La nftables-pakaĵo inkluzivas uzantspacajn pakaĵfiltrilkomponentojn, dum la kern-nivela laboro estas disponigita per la nf_tables subsistemo, kiu estis parto de la Linukso-kerno ekde eldono 3.13. Ŝanĝoj bezonataj por la eldono de nftables 0.9.5 por funkcii estas inkluzivitaj en la kerno Linukso 5.7.

Sur la kernnivelo, nur senmarka protokol-sendependa interfaco estas disponigita kiu disponigas bazajn funkciojn por eltiri datenojn de pakaĵetoj, elfarante operaciojn sur datenoj, kaj kontrolante fluon. La filtraj reguloj mem kaj protokol-specifaj pritraktiloj estas kompilitaj en uzantspacan bajtkodon, post kiu tiu bajtokodo estas ŝarĝita en la kernon uzante la Netlink-interfacon kaj efektivigita en la kerno en speciala virtuala maŝino simila al BPF (Berkeley Packet Filters). Ĉi tiu aliro ebligas signife redukti la grandecon de la filtra kodo funkcianta ĉe la kernnivelo kaj movi ĉiujn funkciojn de analizaj reguloj kaj la logikon labori kun protokoloj en uzantspacon.

Ĉefaj novigoj:

  • Subteno por pakaĵeto kaj trafiko nombriloj asociitaj kun aro elementoj estis aldonita al aroj. Nombriloj estas ebligitaj uzante la ŝlosilvorton "nombrilo":

    tablo ip x {
    starigu y {
    tipo de ip saddr
    counter
    elementoj = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    ĉeno z {
    tipo filtrilo hoko eligo prioritata filtrilo; politiko akcepti;
    ip paĉjo @y
    }
    }

  • Por agordi la komencajn valorojn de nombriloj, ekzemple, por restarigi antaŭajn nombrilojn post rekomenco, vi povas uzi la komandon "nft -f":

    # kato ruleset.nft
    tablo ip x {
    starigu y {
    tipo de ip saddr
    counter
    elementoj = { 192.168.10.35 nombrilo pakoj 1 bajtoj 84, 192.168.10.101 \
    nombrilo p 192.168.10.135 nombrilo pakoj 0 bajtoj 0 }
    }

    ĉeno z {
    tipo filtrilo hoko eligo prioritata filtrilo; politiko akcepti;
    ip paĉjo @y
    }
    }
    # nft -f regularo.nft
    #nft listo reguloj
    tablo ip x {
    starigu y {
    tipo de ip saddr
    counter
    elementoj = { 192.168.10.35 nombrilo pakoj 1 bajtoj 84, 192.168.10.101 \
    nombrilo p 192.168.10.135 nombrilo pakoj 0 bajtoj 0 }
    }

    ĉeno z {
    tipo filtrilo hoko eligo prioritata filtrilo; politiko akcepti;
    ip paĉjo @y
    }
    }

  • Kontraŭsubteno ankaŭ estis aldonita al flutabelo:

    tablo ip foo {
    flutabla stango {
    hoko eniro prioritato -100
    aparatoj = { eth0, eth1 }
    counter
    }

    ĉeno antaŭen {
    tipo filtrilo hoko antaŭen prioritato filtrilo;
    fluo aldonu @bar counter
    }
    }

    Vi povas vidi la liston de nombriloj uzante la komandon "conntrack -L":

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 pakoj=9 bajtoj=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 pakoj=8 bajtoj=428 [ELĈU] mark=0 \
    secctx=nula uzo=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    pakoj=1005763 bajtoj=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    pakoj = 967505 bajtoj = 50310268 [ELĈU] mark = 0 secctx = nula uzo = 2

  • En aroj por kunligado (kunligado, certaj faskoj de adresoj kaj havenoj kiuj simpligas komparon), eblas uzi la "typeof" direktivo, kiu determinas la datumspecon de elementoj por la konsistigaj partoj de la elementoj de la aro:

    tablo ip foo {
    agordi blankan liston {
    tipo de ip saddr. tcp dport
    elementoj = { 192.168.10.35 . 80, 192.168.10.101. 80}
    }

    ĉenstango {
    tajpi filtrilon hoko prerouting prioritata filtrilo; politika guto;
    ip daddr. tcp dport @blanklisto akceptu
    }
    }

  • La speco de direktivo nun validas ankaŭ por kuniĝoj en maplistoj:

    tablo ip foo {
    mapo addr2mark {
    tipo de ip saddr. tcp dport : meta marko
    elementoj = { 192.168.10.35 . 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002 }
    }

    ĉenstango {
    tajpi filtrilon hoko prerouting prioritata filtrilo; politika guto;
    meta mark set ip daddr . tcp dport mapo @addr2mark akcepti
    }
    }

  • Aldonita subteno por intervalkuniĝoj en anonimaj (sennomitaj) aroj:

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

  • La kapablo forĵeti pakaĵetojn kun 802.1q (VLAN) flagoj dum prilaborado de retaj pontoj estas disponigita:

    # nft aldoni regulponto foo bar etero tipo vlan malakcepto kun tcp reset

  • Aldonita subteno por kongruo per TCP-sesio-identigilo (conntrack ID). Por determini la kontran ID, vi povas uzi la opcion "--output id":

    # conntrack -L —eliga id
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 pakoj=2 \
    bajtoj=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 pakoj=2 bajtoj=320 \
    [CERITA] mark=0 uzo=1 id=2779986232

    # nft aldoni regulon foo bar ct id 2779986232 counter

fonto: opennet.ru

Aldoni komenton