nftables pakkie filter 0.9.5 vrystelling

gepubliseer pakkie filter vrystelling nftables 0.9.5, ontwikkel as 'n plaasvervanger vir iptables, ip6table, arptables en ebtables deur pakketfiltrering-koppelvlakke vir IPv4, IPv6, ARP en netwerkbrûe te verenig. Die nftables-pakket bevat pakkiefilterkomponente wat in gebruikersruimte loop, terwyl die kernvlakwerk verskaf word deur die nf_tables-substelsel, wat sedert vrystelling 3.13 deel van die Linux-kern is. Veranderinge wat nodig is vir nftables 0.9.5 vrystelling om te werk is ingesluit in die kern Linux 5.7.

Die kernvlak bied slegs 'n generiese protokol-onafhanklike koppelvlak wat basiese funksies verskaf vir die onttrekking van data uit pakkies, die uitvoering van data-bewerkings en vloeibeheer. Die filterreëls en protokolspesifieke hanteerders word in greepkode in gebruikersruimte saamgestel, waarna hierdie greepkode met behulp van die Netlink-koppelvlak in die kern gelaai word en in die kern uitgevoer word in 'n spesiale virtuele masjien wat aan BPF (Berkeley Packet Filters) herinner. Hierdie benadering laat jou toe om die grootte van die filterkode wat op kernvlak loop, aansienlik te verminder en al die funksies van ontledingsreëls en logika vir die werk met protokolle na gebruikersruimte te skuif.

Belangrikste innovasies:

  • Ondersteuning vir pakkie- en verkeerstellers wat met stelelemente geassosieer word, is by stelle gevoeg. Tellers word geaktiveer deur die sleutelwoord "teller" te gebruik:

    tabel ip x {
    stel y {
    tipe ip saddr
    teen
    elemente = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    ketting z {
    tipe filter haak uitset prioriteit filter; beleid aanvaar;
    ip pappa @y
    }
    }

  • Om die aanvanklike waardes van tellers in te stel, byvoorbeeld om vorige tellers na 'n herbegin te herstel, kan jy die opdrag "nft -f" gebruik:

    # katreëlstel.nft
    tabel ip x {
    stel y {
    tipe ip saddr
    teen
    elemente = { 192.168.10.35 tellerpakkies 1 grepe 84, 192.168.10.101 \
    teller bl 192.168.10.135 tellerpakkies 0 grepe 0 }
    }

    ketting z {
    tipe filter haak uitset prioriteit filter; beleid aanvaar;
    ip pappa @y
    }
    }
    # nft -f reëlstel.nft
    #nft lys reëlstel
    tabel ip x {
    stel y {
    tipe ip saddr
    teen
    elemente = { 192.168.10.35 tellerpakkies 1 grepe 84, 192.168.10.101 \
    teller bl 192.168.10.135 tellerpakkies 0 grepe 0 }
    }

    ketting z {
    tipe filter haak uitset prioriteit filter; beleid aanvaar;
    ip pappa @y
    }
    }

  • Toonbankondersteuning is ook by vloeitabel gevoeg:

    tabel ip foo {
    vloeitabelbalk {
    haak ingang prioriteit -100
    toestelle = { eth0, eth1 }
    teen
    }

    ketting vorentoe {
    tipe filter haak vorentoe prioriteit filter;
    vloei voeg @bar counter
    }
    }

    Jy kan die lys van tellers sien deur die opdrag "conntrack -L" te gebruik:

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 pakkies=9 grepe=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 pakkies=8 grepe=428 [AFLAAI] merk=0 \
    secctx=nul gebruik=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    pakkies=1005763 grepe=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    pakkies=967505 grepe=50310268 [AFLAAI] punt=0 secctx=nul gebruik=2

  • In stelle vir aaneenskakeling (aaneenskakeling, sekere bundels adresse en poorte wat vergelyking vereenvoudig), is dit moontlik om die "tipeof"-aanwysing te gebruik, wat die datatipe elemente vir die samestellende dele van die elemente van die stel bepaal:

    tabel ip foo {
    stel witlys {
    tipe ip saddr. tcp dport
    elemente = {192.168.10.35. 80, 192.168.10.101. 80}
    }

    kettingstaaf {
    tipe filter haak prerouting prioriteit filter; polisdaling;
    ip pappa. tcp dport @witlys aanvaar
    }
    }

  • Die tipe riglyn is nou ook van toepassing op aansluitings in kaartlyste:

    tabel ip foo {
    kaart addr2mark {
    tipe ip saddr. tcp dport: meta merk
    elemente = {192.168.10.35. 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002 }
    }

    kettingstaaf {
    tipe filter haak prerouting prioriteit filter; polisdaling;
    meta merk stel ip daddr . tcp dport kaart @addr2mark aanvaar
    }
    }

  • Bygevoeg ondersteuning vir reeksaansluitings in anonieme (onnaamde) stelle:

    # nft voeg reël inet filter invoer ip daddr . tcp dport\
    { 10.0.0.0/8 . 10-23, 192.168.1.1-192.168.3.8. 80-443 } aanvaar

  • Die vermoë om pakkies met 802.1q (VLAN)-vlae weg te gooi wanneer netwerkbrûe verwerk word, word voorsien:

    # nft voeg reël brug foo bar eter tipe vlan verwerp met tcp reset

  • Bygevoeg ondersteuning vir passing deur TCP-sessie-identifiseerder (verbindings-ID). Om die verbindings-ID te bepaal, kan jy die "--output id" opsie gebruik:

    # verbindingspoor -L —uitvoer-ID
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 pakkies=2 \
    grepe=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 pakkies=2 grepe=320 \
    [VERSEKER] punt=0 gebruik=1 ID=2779986232

    # nft voeg reël foo bar ct id 2779986232 teller

Bron: opennet.ru

Voeg 'n opmerking