nftables pakete iragazkiaren bertsioa 0.9.5

argitaratua pakete-iragazkia askatzea nftables 0.9.5, iptables, ip6table, arptables eta ebtables ordezko gisa garatuz, paketeak iragazteko interfazeak bateratuz IPv4, IPv6, ARP eta sareko zubietarako. nftables paketeak erabiltzailearen espazioan exekutatzen diren pakete-iragazki osagaiak biltzen ditu, kernel-mailako lana, berriz, nf_tables azpisistemak eskaintzen du, 3.13 bertsiotik Linux nukleoaren parte izan dena. nftables 0.9.5 bertsioa funtzionatzeko beharrezkoak diren aldaketak nukleoan sartzen dira Linux 5.7.

Nukleo mailan, paketeetatik datuak ateratzeko, datuekin eragiketak egiteko eta fluxua kontrolatzeko oinarrizko funtzioak eskaintzen dituen protokolotik independentea den interfaze generiko bat baino ez da eskaintzen. Iragazte-arauak beraiek eta protokoloaren berariazko kudeatzaileak erabiltzaile-espazioko byte-kodean konpilatzen dira, eta ondoren byte-kode hori nukleoan kargatzen da Netlink interfazea erabiliz eta nukleoan exekutatzen da BPF (Berkeley Packet Filters) antzeko makina birtual berezi batean. Ikuspegi honek nukleo mailan exekutatzen den iragazketa-kodearen tamaina nabarmen murriztea eta analizatzeko arauen funtzio guztiak eta protokoloekin lan egiteko logika erabiltzaileen espaziora eramatea ahalbidetzen du.

Berrikuntza nagusiak:

  • Multzoei lotutako pakete eta trafiko-kontagailuetarako laguntza gehitu zaie multzoei. Kontagailuak "counter" gako-hitza erabiliz gaitzen dira:

    taula ip x {
    ezarri y {
    typeof ip saddr
    kontraerasora
    elementuak = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    katea z {
    motako iragazkia kako irteera lehentasunezko iragazkia; politika onartu;
    ip daddr @y
    }
    }

  • Kontagailuen hasierako balioak ezartzeko, adibidez, berrabiarazi ondoren aurreko kontagailuak berrezartzeko, "nft -f" komandoa erabil dezakezu:

    # cat ruleset.nft
    taula ip x {
    ezarri y {
    typeof ip saddr
    kontraerasora
    elementuak = { 192.168.10.35 kontagailu paketeak 1 byte 84, 192.168.10.101 \
    kontagailua p 192.168.10.135 kontagailu paketeak 0 byte 0}
    }

    katea z {
    motako iragazkia kako irteera lehentasunezko iragazkia; politika onartu;
    ip daddr @y
    }
    }
    # nft -f ruleset.nft
    #nft zerrendako arau multzoa
    taula ip x {
    ezarri y {
    typeof ip saddr
    kontraerasora
    elementuak = { 192.168.10.35 kontagailu paketeak 1 byte 84, 192.168.10.101 \
    kontagailua p 192.168.10.135 kontagailu paketeak 0 byte 0}
    }

    katea z {
    motako iragazkia kako irteera lehentasunezko iragazkia; politika onartu;
    ip daddr @y
    }
    }

  • Kontrako euskarria ere gehitu da flowtaulari:

    taula ip foo {
    flowtable bar {
    amua sartzeko lehentasuna -100
    gailuak = { eth0, eth1 }
    kontraerasora
    }

    katea aurrera {
    motako iragazkia hook aurrera lehentasunezko iragazkia;
    flow gehitu @bar counter
    }
    }

    Kontagailuen zerrenda ikus dezakezu "conntrack -L" komandoa erabiliz:

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 pakete=9 byte=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 pakete=8 byte=428 [DESKARGA] mark=0 \
    secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    paketeak=1005763 byte=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    paketeak=967505 byte=50310268 [DESKARGA] mark=0 secctx=null erabilera=2

  • Kateatze-multzoetan (konkatenazioa, konparaketa errazten duten zenbait helbide eta ataka-sorta), "typeof" zuzentaraua erabil daiteke, multzoko elementuen elementuen datu-mota zehazten duena:

    taula ip foo {
    ezarri zerrenda zuria {
    typeof ip saddr . tcp dport
    elementuak = { 192.168.10.35 . 80, 192.168.10.101. 80}
    }

    kate-barra {
    type filter hook prerouting lehentasunezko iragazkia; politika jaitsiera;
    ip daddr. tcp dport @whitelist onartu
    }
    }

  • Zuzentarau mota orain mapa-zerrendetako batuketei ere aplikatzen zaie:

    taula ip foo {
    mapa addr2mark {
    typeof ip saddr . tcp dport: meta marka
    elementuak = { 192.168.10.35 . 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002}
    }

    kate-barra {
    type filter hook prerouting lehentasunezko iragazkia; politika jaitsiera;
    meta mark ezarri ip daddr . tcp dport map @addr2mark onartu
    }
    }

  • Multzo anonimoetan (izenik gabeko) barruti-juntzeetarako laguntza gehitu da:

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

  • Sareko zubiak prozesatzen direnean 802.1q (VLAN) bandera duten paketeak baztertzeko gaitasuna eskaintzen da:

    # nft gehitu araua zubia foo bar ether mota vlan errefusatu tcp berrezarri

  • TCP saio-identifikatzailearekin (conntrack ID) bat etortzeko laguntza gehitu da. Conntrack IDa zehazteko, "--output id" aukera erabil dezakezu:

    # conttrack -L β€”irteerako 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 pakete=2 byte=320 \
    [ZIURTU] mark=0 erabilera=1 id=2779986232

    # nft gehitu araua foo bar ct id 2779986232 kontagailua

Iturria: opennet.ru

Gehitu iruzkin berria