nftables pakettfiltri 0.9.4 väljalase

avaldatud pakettfiltri vabastamine nftables 0.9.4, mis töötatakse välja iptableside, ip6table, arptablete ja ebtable'ide asendajana, ühendades IPv4, IPv6, ARP ja võrgusildade pakettide filtreerimise liidesed. Pakett nftables sisaldab pakettfiltri komponente, mis töötavad kasutajaruumis, samas kui kerneli tasemel töö tagab alamsüsteem nf_tables, mis on Linuxi kerneli osa olnud alates versioonist 3.13. Muudatused, mis on vajalikud nftables 0.9.4 väljalaske toimimiseks, sisalduvad tulevases kerneli harus Linux 5.6.

Kerneli tase pakub ainult üldist protokollist sõltumatut liidest, mis pakub põhifunktsioone pakettidest andmete eraldamiseks, andmetoimingute tegemiseks ja voo juhtimiseks. Filtreerimisreeglid ja protokollispetsiifilised töötlejad kompileeritakse kasutajaruumis baitkoodiks, misjärel laaditakse see baitkood Netlink liidese abil kernelisse ja käivitatakse kernelis spetsiaalses BPF-i meenutavas virtuaalmasinas (Berkeley Packet Filters). Selline lähenemine võimaldab oluliselt vähendada kerneli tasemel töötava filtreerimiskoodi suurust ning teisaldada kasutajaruumi kõik sõelumisreeglite ja protokollidega töötamise loogika funktsioonid.

Peamised uuendused:

  • Ühenduste vahemike tugi (konkateneerimine, teatud aadresside ja pordide komplektid, mis lihtsustavad võrdlemist). Näiteks komplekti "valge nimekirja" puhul, mille elemendid on manus, näitab lipu "intervall" määramine, et komplekt võib manusesse sisaldada vahemikke (manuse "ipv4_addr . ipv4_addr . inet_service" jaoks oli varem võimalik loetleda täpne vasted kujul "192.168.10.35. 192.68.11.123" ja nüüd saate määrata aadresside rühmad "80-192.168.10.35-192.168.10.40"):192.68.11.123.

    tabel ip foo {
    määra valge nimekiri {
    tippige ipv4_addr . ipv4_addr. inet_service
    lippude intervall
    elemendid = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    kettriba {
    tüüp filter konks premarsruutimise prioriteetfilter; poliitika langus;
    ip saddr. ip isa. tcp dport @whitelist nõustu
    }
    }

  • Komplektides ja kaardiloendites on võimalik kasutada “typeof” käskkirja, mis määrab sobitamisel elemendi vormingu.
    Näiteks:

    tabel ip foo {
    määra valge nimekiri {
    ip tüüp saddr
    elemendid = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    kettriba {
    tüüp filter konks premarsruutimise prioriteetfilter; poliitika langus;
    ip isa @whitelist nõustu
    }
    }

    tabel ip foo {
    kaart addr2mark {
    ip saddr tüüp: metamärk
    elemendid = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Lisatud on võimalus kasutada NAT-i sidumistel liitumisi, mis võimaldab teil määrata aadressi ja pordi NAT-teisenduste määratlemisel kaardiloendite või nimega komplektide põhjal:

    nft lisamise reegel ip nat pre dnat ip addr . port ip-sse saddr map { 1.1.1.1 : 2.2.2.2 . kolmkümmend }

    nft lisa kaart ip nat sihtkohad { type ipv4_addr . inet_service: ipv4_addr. inet_service \\; }
    nft lisamise reegel ip nat pre dnat ip addr . port ip-sse saddr. tcp dport kaart @sihtkohad

  • Riistvaralise kiirenduse tugi mõne võrgukaardi poolt läbiviidava filtreerimistoiminguga. Kiirendus on lubatud utiliidi ethtool kaudu (“ethtool -K eth0 hw-tc-offload on”), misjärel aktiveeritakse see põhiahela nftables, kasutades lipu “offload”. Linuxi kerneli versiooni 5.6 kasutamisel toetatakse riistvarakiirendust päisevälja sobitamiseks ja sissetuleva liidese kontrollimiseks koos pakettide vastuvõtmise, äraviskamise, dubleerimise (dup) ja edastamisega (fwd). Allolevas näites tehakse aadressilt 192.168.30.20 tulevate pakettide kukutamise toimingud võrgukaardi tasemel, ilma pakette kernelile edastamata:

    # kassi fail.nft
    tabel netdev x {
    kett y {
    tüüp filter konks sisendseade eth0 prioriteet 10; lipud mahalaadimine;
    ip saddr 192.168.30.20 langus
    }
    }
    # nft -f fail.nft

  • Täiustatud teave vea asukoha kohta reeglites.

    # nft kustutamisreegli ip yz käepide 7
    Viga: reeglit ei saa töödelda: sellist faili või kataloogi pole
    kustuta reegel ip yz käepide 7
    ^

    # nft kustutamisreegli ip xx käepide 7
    Viga: reeglit ei saa töödelda: sellist faili või kataloogi pole
    Kustuta reegli ip xx käepide 7
    ^

    # nft kustuta tabel twst
    Viga: sellist faili või kataloogi pole; kas sa mõtlesid perekonna IP-s tabelit ‘test'?
    kustuta tabel twst
    ^^^^

    Esimene näide näitab, et tabelit “y” süsteemis pole, teisest, et töötleja “7” puudub, ja kolmandast, et tabeli nime sisestamisel kuvatakse kirjavea teade.

  • Lisatud tugi alamliidese kontrollimiseks, määrates "meta sdif" või "meta sdifname":

    ... meta sdifname vrf1 ...

  • Lisatud tugi paremale või vasakule nihutamiseks. Näiteks olemasoleva paketisildi nihutamiseks 1 biti võrra vasakule ja väikese biti määramiseks 1-le:

    … metamärgise seadistus metamärgi lshift 1 või 0x1 …

  • Rakendatud valik "-V" laiendatud versiooniteabe kuvamiseks.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli:readline
    json: jah
    minigmp: ei
    libxtables: jah

  • Käsurea valikud tuleb nüüd enne käske määrata. Näiteks peate määrama "nft -a list Regulationset" ja "nft list rulett -a" käivitamine põhjustab tõrke.

    Allikas: opennet.ru

Lisa kommentaar