nftables packet filter 0.9.4 famoahana

MIVOAKA famotsorana sivana fonosana nftables 0.9.4, mivelatra ho solon'ny iptables, ip6table, arptables ary ebtables amin'ny alΓ lan'ny fampiraisana ny sivana fonosana ho an'ny IPv4, IPv6, ARP ary tetezana tambajotra. Ny fonosana nftables dia ahitana singa sivana fonosana izay mandeha amin'ny habaka mpampiasa, raha toa kosa ny asan'ny kernel-level dia omen'ny subsystem nf_tables, izay anisan'ny kernel Linux hatramin'ny famoahana 3.13. Ny fanovana ilaina amin'ny famoahana nftables 0.9.4 dia tafiditra ao amin'ny sampana kernel ho avy Linux 5.6.

Eo amin'ny sehatry ny kernel, interface tsy miankina amin'ny protocol generic ihany no omena izay manome asa fototra amin'ny fakana angona avy amin'ny fonosana, fanaovana asa amin'ny data, ary fanaraha-maso ny fandehanana. Ny fitsipika fanivanana sy ireo mpikirakira manokana momba ny protocole dia natambatra ho bytecode-space-n'ny mpampiasa, ary avy eo dia ampidirina ao amin'ny kernel ity bytecode ity amin'ny alΓ lan'ny interface Netlink ary atao ao anaty kernel ao anaty milina virtoaly manokana mitovy amin'ny BPF (Berkeley Packet Filters). Ity fomba fiasa ity dia ahafahana mampihena be ny haben'ny kaody sivana mandeha amin'ny haavon'ny kernel ary mamindra ny fiasa rehetra amin'ny fitsipi-pitenenana sy ny lojika amin'ny fiasana amin'ny protocols ho any amin'ny habaka mpampiasa.

Fanavaozana lehibe:

  • Fanohanana ny elanelana eo amin'ny fifandraisana (fifandraisana, adiresin'ny amboara sasany ary seranana manatsotra fampitahana). Ohatra, ho an'ny "lisitra fotsy" iray izay misy singa dia attachment, manondro ny saina "interval" dia manondro fa ny setroka dia afaka mampiditra salan'isa ao amin'ny fametahana (ho an'ny fametahana "ipv4_addr . ipv4_addr . inet_service" dia azo atao ny mitanisa ny marina mifanandrify amin'ny endrika "192.168.10.35. 192.68.11.123", ary izao dia azonao atao ny mamaritra ny vondron'ny adiresy "80-192.168.10.35-192.168.10.40".

    table ip foo {
    mametraka lisitra fotsy {
    karazana ipv4_addr . ipv4_addr. inet_service
    elanelana saina
    singa = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125. 80}
    }

    barazy {
    karazana sivana hook prerouting laharam-pahamehana sivana; fidinana politika;
    ip saddr. ip dadr. tcp dport @whitelist manaiky
    }
    }

  • Ao amin'ny lisitra sy ny lisitry ny sarintany dia azo atao ny mampiasa ny torolΓ lana "karazana", izay mamaritra ny endriky ny singa rehefa mifanandrify.
    Ohatra:

    table ip foo {
    mametraka lisitra fotsy {
    karazana ip saddr
    singa = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    barazy {
    karazana sivana hook prerouting laharam-pahamehana sivana; fidinana politika;
    ip daddr @whitelist manaiky
    }
    }

    table ip foo {
    sari-tany addr2mark {
    karazana ip saddr: meta mark
    singa = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Nampiana ny fahafahana mampiasa ny fikambanan'ny NAT bindings, izay ahafahanao mamaritra adiresy sy seranan-tsambo rehefa mamaritra ny fiovan'ny NAT mifototra amin'ny lisitry ny sari-tany na andiana anarana:

    nft add rule ip nat pre dnat ip addr . seranan-tsambo mankany ip saddr map {1.1.1.1: 2.2.2.2. telopolo}

    nft add map ip nat destinations { type ipv4_addr . inet_service: ipv4_addr. inet_service \\; }
    nft add rule ip nat pre dnat ip addr . port ho ip saddr. tcp dport map @destinations

  • Fanohanana ny fanafainganana ny fitaovana miaraka amin'ny asa sivana sasany ataon'ny karatra tambajotra. Ny fanafainganana dia alefa amin'ny alΓ lan'ny fampiasa ethtool ("ethtool -K eth0 hw-tc-offload on"), ary avy eo dia alefa amin'ny nftables ho an'ny rojo lehibe amin'ny fampiasana ny saina "offload". Rehefa mampiasa ny Linux kernel 5.6, dia tohanana ny fanafainganana ny fitaovana amin'ny fampitoviana ny saha lohapejy sy ny fisafoana interface tsara miaraka amin'ny fonosana fandraisana, fanariana, famadihana (dup), ary fandefasana (fwd). Ao amin'ny ohatra etsy ambany, ny fampandehanana ny fandefasana fonosana avy amin'ny adiresy 192.168.30.20 dia atao amin'ny haavon'ny karatra tambajotra, nefa tsy mampita ny fonosana amin'ny kernel:

    # cat file.nft
    table netdev x {
    rojo y {
    karazana fitaovana fampidiran-dresaka sivana eth0 laharam-pahamehana 10; faneva offload;
    ip saddr 192.168.30.20 mitete
    }
    }
    # nft -f rakitra.nft

  • Fanatsarana vaovao momba ny toerana misy lesoka ao amin'ny fitsipika.

    # nft hamafa fitsipika ip yz mitantana 7
    Error: Tsy afaka nandamina fitsipika: Tsy misy rakitra na lahatahiry toy izany
    esory ny fitsipika ip yz tΓ nana 7
    ^

    # nft hamafa fitsipika ip xx tΓ nana 7
    Error: Tsy afaka nandamina fitsipika: Tsy misy rakitra na lahatahiry toy izany
    esory ny fitsipika ip xx 7
    ^

    # nft mamafa latabatra twst
    Error: Tsy misy rakitra na lahatahiry toy izany; table Γ’β‚¬Λœtest' ao amin'ny family ip ve no tianao holazaina?
    mamafa latabatra twst
    ^^^^

    Ny ohatra voalohany dia mampiseho fa ny latabatra "y" dia tsy ao amin'ny rafitra, ny faharoa dia ny "7" mpitantana tsy hita, ary ny fahatelo dia misy typo bitsika aseho rehefa manoratra ny anaran'ny latabatra.

  • Fanampiana fanampiny amin'ny fanamarinana ny interface andevo amin'ny famaritana ny "meta sdif" na "meta sdifname":

    ... meta sdifname vrf1 ...

  • Fanohanana fanampiny ho an'ny fampandehanan-draharaha miankavanana na ankavia. Ohatra, hanova ny mari-pamantarana fonosana efa misy tavela 1 bit ary apetraho amin'ny 1 ny bitika kely:

    … marika meta mametraka marika meta lshift 1 na 0x1 …

  • Safidy "-V" nampiharina mba hampisehoana fampahalalana momba ny dikan-teny.

    # nft -V
    nftables v0.9.4 (Jive amin'ny dimy)
    cli:readline
    json: eny
    migmp: tsy
    libxtables: eny

  • Ny safidy andalana baiko dia tsy maintsy voafaritra mialoha ny baiko. Ohatra, mila mamaritra ny "nft -a list ruleset" ianao, ary ny fandehanana "nft list ruleset -a" dia hiteraka hadisoana.

    Source: opennet.ru

Add a comment