nftables-pakettisuodattimen julkaisu 0.9.5

julkaistu pakettisuodattimen vapauttaminen nftables 0.9.5, joka on kehitetty korvaamaan iptables, ip6table, arptables ja ebtables yhdistämällä pakettisuodatusliitännät IPv4-, IPv6-, ARP- ja verkkosiltoja varten. Paketti nftables sisältää pakettisuodatinkomponentteja, jotka toimivat käyttäjätilassa, kun taas ydintason työn tarjoaa nf_tables-alijärjestelmä, joka on ollut osa Linux-ydintä julkaisusta 3.13 lähtien. Muutokset, joita tarvitaan nftables 0.9.5 -julkaisun toimimiseen, sisältyvät ytimeen Linux 5.7.

Ydintaso tarjoaa vain yleisen protokollasta riippumattoman rajapinnan, joka tarjoaa perustoiminnot datan poimimiseen paketeista, datatoimintojen suorittamiseen ja vuon ohjaukseen. Suodatussäännöt ja protokollakohtaiset käsittelijät käännetään käyttäjätilassa tavukoodiksi, jonka jälkeen tämä tavukoodi ladataan ytimeen Netlink-rajapinnan avulla ja suoritetaan ytimessä erityisessä BPF:ää (Berkeley Packet Filters) muistuttavassa virtuaalikoneessa. Tämän lähestymistavan avulla voit pienentää merkittävästi ydintasolla käynnissä olevan suodatuskoodin kokoa ja siirtää kaikki jäsennyssääntöjen ja protokollien kanssa työskentelyn logiikan toiminnot käyttäjätilaan.

Tärkeimmät innovaatiot:

  • Joukkoelementteihin liittyvien paketti- ja liikennelaskurien tuki on lisätty sarjoihin. Laskurit otetaan käyttöön "laskuri"-avainsanalla:

    taulukon ip x {
    set y {
    ip-tyyppi saddr
    torjua
    elementit = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    ketju z {
    tyyppi suodatin koukku lähtö prioriteetti suodatin; hyväksyä politiikka;
    ip isä @y
    }
    }

  • Jos haluat asettaa laskureiden alkuarvot, esimerkiksi palauttaaksesi aiemmat laskurit uudelleenkäynnistyksen jälkeen, voit käyttää komentoa "nft -f":

    # kissan säännöt.nft
    taulukon ip x {
    set y {
    ip-tyyppi saddr
    torjua
    elementit = { 192.168.10.35 laskuripaketit 1 tavua 84, 192.168.10.101 \
    laskuri p 192.168.10.135 laskuripaketit 0 tavua 0 }
    }

    ketju z {
    tyyppi suodatin koukku lähtö prioriteetti suodatin; hyväksyä politiikka;
    ip isä @y
    }
    }
    # nft -f säännöt.nft
    #nft-luettelosäännöt
    taulukon ip x {
    set y {
    ip-tyyppi saddr
    torjua
    elementit = { 192.168.10.35 laskuripaketit 1 tavua 84, 192.168.10.101 \
    laskuri p 192.168.10.135 laskuripaketit 0 tavua 0 }
    }

    ketju z {
    tyyppi suodatin koukku lähtö prioriteetti suodatin; hyväksyä politiikka;
    ip isä @y
    }
    }

  • Vastatuki on myös lisätty vuotaulukkoon:

    table ip foo {
    virtaava baari {
    koukun sisääntuloprioriteetti -100
    laitteet = { eth0, eth1 }
    torjua
    }

    ketju eteenpäin {
    tyyppi suodatin koukku eteenpäin prioriteettisuodatin;
    virtaus lisää @baarilaskuri
    }
    }

    Voit tarkastella laskuriluetteloa komennolla “conntrack -L”:

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 pakettia=9 tavua=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 pakettia=8 tavua=428 [OFFLOAD] mark=0 \
    sectx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    paketit=1005763 tavua=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    paketit=967505 tavua=50310268 [OFFLOAD] mark=0 sectx=null use=2

  • Yhdistelmäsarjoissa (ketjuttaminen, tietyt osoiteniput ja portit, jotka yksinkertaistavat vertailua) on mahdollista käyttää "typeof" -direktiiviä, joka määrittää elementtien tietotyypin joukon elementtien osatekijöille:

    table ip foo {
    aseta sallittujen lista {
    ip:n tyyppi saddr. tcp dport
    elementit = { 192.168.10.35 . 80, 192.168.10.101. 80}
    }

    ketjutanko {
    tyyppi suodatinkoukku prerouting prioriteettisuodatin; politiikan lasku;
    ip isä tcp dport @whitelist hyväksy
    }
    }

  • Direktiivin tyyppi koskee nyt myös karttaluetteloiden liitoksia:

    table ip foo {
    kartta addr2mark {
    ip:n tyyppi saddr. tcp dport: metamerkki
    elementit = { 192.168.10.35 . 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002 }
    }

    ketjutanko {
    tyyppi suodatinkoukku prerouting prioriteettisuodatin; politiikan lasku;
    metamark set ip daddr . tcp dport map @addr2mark hyväksy
    }
    }

  • Lisätty tuki alueliitoksille anonyymeissä (nimeämättömissä) ryhmissä:

    # 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 } hyväksy

  • Mahdollisuus hylätä paketit 802.1q (VLAN) -lipuilla verkkosiltoja käsiteltäessä tarjotaan:

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

  • Lisätty tuki TCP-istuntotunnisteen (conntrack ID) mukauttamiseen. Conntrack-tunnuksen määrittämiseksi voit käyttää "--output id" -vaihtoehtoa:

    # conntrack -L —lähtötunnus
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 pakettia=2 \
    tavua=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 pakettia=2 tavua=320 \
    [VARMETTU] mark=0 use=1 id=2779986232

    # nft add rule foo bar ct id 2779986232 counter

Lähde: opennet.ru

Lisää kommentti