nftables packet filter 0.9.5 famoahana

MIVOAKA famotsorana sivana fonosana nftables 0.9.5, mivelatra ho solon'ny iptables, ip6table, arptables ary ebtables amin'ny alΓ lan'ny fampiraisana ny fifandraisana amin'ny sivana fonosana ho an'ny IPv4, IPv6, ARP ary tetezana tambajotra. Ny fonosana nftables dia ahitana singa sivana packet izay mandeha amin'ny habaka mpampiasa, raha 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.5 dia tafiditra ao anaty kernel Linux 5.7.

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:

  • Ny fanohanana ny packet sy ny kaontera fifamoivoizana mifandraika amin'ny singa napetraka dia nampiana tao anaty andian-dahatsoratra. Mampiasa ny teny fanalahidy "counter" ny mpikirakira:

    latabatra ip x {
    mametraka y {
    karazana ip saddr
    MediaWiki
    singa = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    rojo z {
    karazana sivana hook Output laharam-pahamehana sivana; manaiky ny politika;
    ip dadr @y
    }
    }

  • Mba hametrahana ny soatoavina voalohany amin'ny kaontinao, ohatra, mba hamerenana ny kaontera teo aloha aorian'ny fanombohana, azonao atao ny mampiasa ny baiko "nft -f":

    # cat ruleset.nft
    latabatra ip x {
    mametraka y {
    karazana ip saddr
    MediaWiki
    singa = { 192.168.10.35 fonosana counter 1 bytes 84, 192.168.10.101 \
    counter p 192.168.10.135 counter packets 0 bytes 0 }
    }

    rojo z {
    karazana sivana hook Output laharam-pahamehana sivana; manaiky ny politika;
    ip dadr @y
    }
    }
    # nft -f ruleset.nft
    #nft lisitry ny fitsipika
    latabatra ip x {
    mametraka y {
    karazana ip saddr
    MediaWiki
    singa = { 192.168.10.35 fonosana counter 1 bytes 84, 192.168.10.101 \
    counter p 192.168.10.135 counter packets 0 bytes 0 }
    }

    rojo z {
    karazana sivana hook Output laharam-pahamehana sivana; manaiky ny politika;
    ip dadr @y
    }
    }

  • Nampiana ihany koa ny fanohanan'ny mpifanandrina amin'ny flowtable:

    table ip foo {
    bara mikoriana {
    laharam-pahamehana fidirana -100
    fitaovana = { eth0, eth1 }
    MediaWiki
    }

    rojo mandroso {
    karazana sivana hook mandroso laharam-pahamehana sivana;
    mikoriana manampy @bar counter
    }
    }

    Azonao atao ny mijery ny lisitry ny kaontera mampiasa ny baiko "conntrack -L":

    tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47278 dport=5201 packet=9 bytes=608 \
    src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47278 packet=8 bytes=428 [OFFLOAD] marika=0 \
    secctx=null use=2 tcp 6 src=192.168.10.2 dst=10.0.1.2 sport=47280 dport=5201 \
    fonosana=1005763 octet=44075714753 src=10.0.1.2 dst=10.0.1.1 sport=5201 dport=47280 \
    packets=967505 bytes=50310268 [OFFLOAD] marika=0 secctx=null use=2

  • Ao amin'ny seta ho an'ny concatenation (concatenation, adiresy sy seranana sasany manatsotra fampitahana), azo atao ny mampiasa ny torolΓ lana "karazana", izay mamaritra ny karazana angona singa ho an'ny ampahany amin'ny singa ao amin'ny set:

    table ip foo {
    mametraka lisitra fotsy {
    karazana ip saddr . tcp dport
    singa = { 192.168.10.35 . 80, 192.168.10.101. 80}
    }

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

  • Ny karazana torolalana izao dia mihatra amin'ny fidirana amin'ny lisitry ny sari-tany:

    table ip foo {
    sari-tany addr2mark {
    karazana ip saddr . tcp dport: marika meta
    singa = { 192.168.10.35 . 80 : 0x00000001,
    192.168.10.135. 80 : 0x00000002 }
    }

    barazy {
    karazana sivana hook prerouting laharam-pahamehana sivana; fidinana politika;
    meta mark set ip daddr . tcp dport map @addr2mark manaiky
    }
    }

  • Fanohanana fanampiny ho an'ny fitambaran'ny faritra tsy fantatra anarana (tsy fantatra anarana):

    # 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 } manaiky

  • Ny fahafahana manary ny fonosana misy saina 802.1q (VLAN) rehefa omena ny tetezana tambajotra:

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

  • Fanampiana fanampiny amin'ny fampitoviana amin'ny alΓ lan'ny famantarana ny session TCP (Conntrack ID). Mba hamaritana ny ID conntrack dia azonao ampiasaina ny safidy "--output id":

    # conntrack -L β€”output id
    udp 17 18 src=192.168.2.118 dst=192.168.2.1 sport=36424 dport=53 fonosana=2 \
    bytes=122 src=192.168.2.1 dst=192.168.2.118 sport=53 dport=36424 packets=2 bytes=320 \
    [ASSURED] marika=0 mampiasa=1 id=2779986232

    # nft ampio fitsipika foo bar ct id 2779986232 counter

Source: opennet.ru

Add a comment