nftables soso àlẹmọ 0.9.4 Tu

atejade soso àlẹmọ Tu nftables 0.9.4, to sese bi awọn kan rirọpo fun iptables, ip6table, arptables ati ebtables nipa isokan soso sisẹ atọkun fun IPv4, IPv6, ARP ati nẹtiwọki afara. Apopọ nftables pẹlu awọn paati àlẹmọ apo-iwe ti o ṣiṣẹ ni aaye olumulo, lakoko ti iṣẹ ipele kernel ti pese nipasẹ eto ipilẹ-nf_tables, eyiti o jẹ apakan ti ekuro Linux lati itusilẹ 3.13. Awọn ayipada pataki fun awọn nftables 0.9.4 itusilẹ lati ṣiṣẹ wa ninu ẹka ekuro iwaju Linux 5.6.

Ipele ekuro n pese nikan ni wiwo olominira ilana ilana jeneriki ti o pese awọn iṣẹ ipilẹ fun yiyo data lati awọn apo-iwe, ṣiṣe awọn iṣẹ data, ati iṣakoso sisan. Awọn ofin sisẹ ati awọn olutọju-ila-ilana ni a ṣe akojọpọ sinu bytecode ni aaye olumulo, lẹhin eyi ti a ti kojọpọ bytecode sinu ekuro nipa lilo wiwo Netlink ati ṣiṣe ni ekuro ni ẹrọ foju foju pataki kan ti o ṣe iranti ti BPF (Awọn Ajọ Packet Berkeley). Ọna yii ngbanilaaye lati dinku iwọn iwọn koodu sisẹ ti n ṣiṣẹ ni ipele ekuro ati gbe gbogbo awọn iṣẹ ti awọn ofin itọka ati ọgbọn fun ṣiṣẹ pẹlu awọn ilana sinu aaye olumulo.

Awọn imotuntun akọkọ:

  • Atilẹyin fun awọn sakani ni awọn asopọ (concatenation, awọn edidi ti awọn adirẹsi ati awọn ebute oko oju omi ti o rọrun lafiwe). Fun apẹẹrẹ, fun ṣeto “whitelist” ti awọn eroja rẹ jẹ asomọ, titọka asia “aarin” yoo fihan pe eto le pẹlu awọn sakani ninu asomọ (fun asomọ “ipv4_addr. ipv4_addr. inet_service” o ṣee ṣe tẹlẹ lati ṣe atokọ gangan gangan. ibaamu ti awọn fọọmu "192.168.10.35. 192.68.11.123", ati bayi o le pato awọn ẹgbẹ ti awọn adirẹsi "80-192.168.10.35-192.168.10.40").

    tabili ip foo {
    ṣeto akojọ funfun {
    tẹ ipv4_addr. ipv4_addr. inet_iṣẹ
    awọn asia aarin
    eroja = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    igi ẹwọn {
    iru àlẹmọ kio prerouting ayo àlẹmọ; silẹ eto imulo;
    ip saddr. ip baba. tcp dport @whitelist gba
    }
    }

  • Ninu awọn eto ati awọn atokọ maapu, o ṣee ṣe lati lo itọsọna “typeof”, eyiti o pinnu ọna kika ti eroja nigbati o baamu.
    Fun apere:

    tabili ip foo {
    ṣeto akojọ funfun {
    oriṣi ip saddr
    eroja = {192.168.10.35, 192.168.10.101, 192.168.10.135}
    }

    igi ẹwọn {
    iru àlẹmọ kio prerouting ayo àlẹmọ; silẹ eto imulo;
    ip baba @whitelist gba
    }
    }

    tabili ip foo {
    map addr2mark {
    typeof ip saddr: ami meta
    eroja = {192.168.10.35: 0x00000001, 192.168.10.135: 0x00000002}
    }
    }

  • Ṣe afikun agbara lati lo awọn idapọ ninu awọn asopọ NAT, eyiti o fun ọ laaye lati pato adirẹsi ati ibudo nigba asọye awọn iyipada NAT ti o da lori awọn atokọ maapu tabi awọn eto ti a darukọ:

    nft add ofin ip nat pre dnat ip addr. ibudo to ip saddr map {1.1.1.1: 2.2.2.2. ọgbọn }

    nft ṣafikun maapu ip nat awọn ibi {tẹ ipv4_addr. inet_iṣẹ: ipv4_addr. inet_iṣẹ \; }
    nft add ofin ip nat pre dnat ip addr. ibudo to ip saddr. tcp dport maapu @destinations

  • Atilẹyin fun isare ohun elo pẹlu diẹ ninu awọn iṣẹ sisẹ ti a ṣe nipasẹ kaadi nẹtiwọọki. Isare ti wa ni sise nipasẹ awọn ethtool IwUlO ("ethtool -K eth0 hw-tc-offload on"), lẹhin eyi o ti wa ni mu ṣiṣẹ ni nftables fun awọn ifilelẹ ti awọn pq lilo asia "offload". Nigbati o ba nlo ekuro Linux 5.6, isare ohun elo jẹ atilẹyin fun ibaramu aaye akọsori ati ayewo wiwo ti nwọle ni apapo pẹlu gbigba, sisọnu, pidánpidán (dup), ati awọn apo-iwe firanšẹ siwaju (fwd). Ninu apẹẹrẹ ti o wa ni isalẹ, awọn iṣẹ ti sisọ awọn apo-iwe ti o nbọ lati adirẹsi 192.168.30.20 ni a ṣe ni ipele kaadi nẹtiwọki, laisi gbigbe awọn apo-iwe si ekuro:

    # o nran file.nft
    tabili netdev x {
    ẹwọn y {
    iru àlẹmọ kio ingress ẹrọ eth0 ayo 10; awọn asia offload;
    ip saddr 192.168.30.20 silẹ
    }
    }
    # nft -f file.nft

  • Alaye ti ilọsiwaju nipa ipo ti aṣiṣe ninu awọn ofin.

    # nft paarẹ ofin ip yz mu 7
    Aṣiṣe: Ko le ṣe ilana ofin: Ko si iru faili tabi ilana
    pa ofin ip yz ọwọ 7
    ^

    # nft paarẹ ofin ip xx mu 7
    Aṣiṣe: Ko le ṣe ilana ofin: Ko si iru faili tabi ilana
    pa ofin ip xx kuro 7
    ^

    # nft paarẹ tabili twst
    Aṣiṣe: Ko si iru faili tabi ilana; ṣe o tumọ si tabili ‘idanwo' ni idile ip?
    pa twst tabili
    ^^^^

    Apeere akọkọ fihan pe tabili “y” ko si ninu eto naa, keji ti olutọju “7” ti nsọnu, ati ẹkẹta ti titẹ titẹ ti han nigbati o ba tẹ orukọ tabili naa.

  • Atilẹyin ti a ṣafikun fun ṣiṣayẹwo wiwo ẹrú nipa sisọ “meta sdif” tabi “meta sdifname”:

    ... meta sdifname vrf1 ...

  • Atilẹyin ti a ṣafikun fun awọn iṣẹ iṣipopada sọtun tabi sosi. Fun apẹẹrẹ, lati yi aami apo-iwe ti o wa tẹlẹ silẹ nipasẹ 1 bit ati ṣeto bit kekere si 1:

    Ami meta ṣeto aami meta lshift 1 tabi 0x1…

  • Aṣayan "-V" ti ṣe lati ṣe afihan alaye ti ikede ti o gbooro sii.

    # nft -V
    nfttables v0.9.4 (Jive ni marun)
    cli: readline
    json: bẹẹni
    minigmp: rara
    libxtables: bẹẹni

  • Awọn aṣayan laini aṣẹ gbọdọ wa ni pato ni bayi ṣaaju awọn aṣẹ. Fun apẹẹrẹ, o nilo lati pato “nft -a list ruleset”, ati ṣiṣe “nft list ruleset -a” yoo ja si aṣiṣe.

    orisun: opennet.ru

Fi ọrọìwòye kun