Нусхаи филтри бастаи nftables 0.9.4

нашр шудааст озод кардани филтри баста nftables 0.9.4, ҳамчун ҷойгузини iptables, ip6table, arptables ва ebtables тавассути муттаҳид кардани интерфейсҳои филтркунии бастаҳо барои IPv4, IPv6, ARP ва пулҳои шабакавӣ таҳия карда мешавад. Бастаи nftables ҷузъҳои филтри пакети фазои корбарро дар бар мегирад, дар ҳоле ки кори сатҳи ядро ​​аз ҷониби зерсистемаи nf_tables таъмин карда мешавад, ки аз замони нашри 3.13 қисми ядрои Linux мебошад. Тағиротҳое, ки барои версияи nftables 0.9.4 барои кор заруранд, ба шохаи ояндаи ядро ​​​​дохил карда мешаванд. Linux 5.6.

Сатҳи ядро ​​​​танҳо интерфейси мустақили протоколро таъмин мекунад, ки вазифаҳои асосиро барои истихроҷи додаҳо аз пакетҳо, иҷрои амалиёти додаҳо ва назорати ҷараён таъмин мекунад. Қоидаҳои филтркунӣ ва коркардкунандагони мушаххаси протокол дар фазои корбар ба байткод тартиб дода мешаванд, ки пас аз он ин байткод бо истифода аз интерфейси Netlink ба ядро ​​бор карда мешавад ва дар ядро ​​​​дар мошини махсуси виртуалӣ, ки BPF (Беркли Пакет Филтрҳо) ба хотир меорад, иҷро карда мешавад. Ин равиш ба шумо имкон медиҳад, ки андозаи коди филтркуниро, ки дар сатҳи ядро ​​кор мекунад, хеле кам кунед ва тамоми функсияҳои қоидаҳои таҳлил ва мантиқи кор бо протоколҳоро ба фазои корбар интиқол диҳед.

Навовариҳои асосӣ:

  • Дастгирии диапазонҳо дар пайвастшавӣ (пайванд, маҷмӯи муайяни суроғаҳо ва портҳое, ки муқоисаро содда мекунанд). Масалан, барои маҷмӯи "рӯйхати сафед", ки унсурҳои он замима мебошанд, нишон додани парчами "фосила" нишон медиҳад, ки маҷмӯа метавонад диапазонҳоро дар замима дар бар гирад (барои замимаи "ipv4_addr . ipv4_addr . inet_service" пештар номгӯи дақиқи имконпазир буд. мувофиқати шакли "192.168.10.35. 192.68.11.123" ва акнун шумо метавонед гурӯҳҳои суроғаҳоро "80-192.168.10.35-192.168.10.40." муайян кунед.

    table ip foo {
    муқаррар кардани рӯйхати сафед {
    ipv4_addr нависед. ipv4_addr. inet_service
    фосилаи парчамҳо
    унсурҳои = {192.168.10.35-192.168.10.40. 192.68.11.123-192.168.11.125. 80}
    }

    бари занҷир {
    навъи филтр қалмоқе пеш аз масир филтри афзалиятнок; паст кардани сиёсат;
    ip саддр. ip падар. tcp dport @whitellist қабул кунед
    }
    }

  • Дар маҷмӯаҳо ва рӯйхатҳои харитаҳо директиваи "typeof" -ро истифода бурдан мумкин аст, ки формати элементро ҳангоми мувофиқат муайян мекунад.
    Масалан:

    table ip foo {
    муқаррар кардани рӯйхати сафед {
    typeof ip saddr
    унсурҳо = {192.168.10.35, 192.168.10.101, 192.168.10.135}
    }

    бари занҷир {
    навъи филтр қалмоқе пеш аз масир филтри афзалиятнок; паст кардани сиёсат;
    ip daddr @whitellist қабул кунед
    }
    }

    table ip foo {
    харитаи addr2mark {
    typeof ip saddr: мета тамға
    унсурҳо = {192.168.10.35: 0x00000001, 192.168.10.135: 0x00000002}
    }
    }

  • Имконияти истифодаи пайвастшавӣ дар пайвандҳои NAT илова карда шуд, ки ба шумо имкон медиҳад суроға ва портро ҳангоми муайян кардани тағироти NAT дар асоси рӯйхатҳои харита ё маҷмӯи номбаршуда муайян кунед:

    nft add rule ip nat pre dnat ip addr. порт ба IP saddr харитаи {1.1.1.1: 2.2.2.2. сӣ}

    nft илова кардани харитаи IP nat самтҳо {навъи ipv4_addr. inet_service: ipv4_addr. inet_service \\; }
    nft add rule ip nat pre dnat ip addr. порт ба IP saddr. харитаи tcp dport @destinations

  • Дастгирии суръатбахшии сахтафзор бо баъзе амалиёти филтркунӣ, ки тавассути корти шабака анҷом дода мешавад. Шитоб тавассути утилитаи ethtool фаъол карда мешавад ("ethtool -K eth0 hw-tc-offload on"), пас аз он дар nftables барои занҷири асосӣ бо истифода аз парчами "offload" фаъол карда мешавад. Ҳангоми истифодаи ядрои Linux 5.6, суръатбахшии сахтафзор барои мувофиқати майдони сарлавҳа ва санҷиши интерфейси воридотӣ дар якҷоягӣ бо қабул, партофтан, нусхабардорӣ (дуп) ва интиқол (fwd) дастгирӣ карда мешавад. Дар мисоли зер, амалиёти партофтани пакетҳое, ки аз суроғаи 192.168.30.20 меоянд, дар сатҳи корти шабакавӣ бидуни интиқоли пакетҳо ба ядро ​​иҷро карда мешаванд:

    # cat file.nft
    ҷадвали netdev x {
    занҷир y {
    навъи филтр қалмоқе дастгоҳи воридшавӣ eth0 афзалият 10; фаровардани парчамҳо;
    ip саддр 192.168.30.20 тарки
    }
    }
    # nft -f файл.nft

  • Маълумот дар бораи ҷойгиршавии хато дар қоидаҳо такмил дода шудааст.

    # nft нест кардани қоидаи ip yz дастаки 7
    Хатогӣ: Қоида коркард карда нашуд: Чунин файл ё директория нест
    Нест кардани қоидаи ip yz дастаки 7
    ^

    # nft нест кардани қоидаи ip xx дастаки 7
    Хатогӣ: Қоида коркард карда нашуд: Чунин файл ё директория нест
    Нест кардани қоидаи ip xx дастаки 7
    ^

    # nft twst ҷадвалро нест кунед
    Хатогӣ: Чунин файл ё директория нест; Оё шумо ҷадвали "санҷиш"-ро дар IP оилавӣ дар назар доред?
    twst ҷадвалро нест кунед
    ^^^^

    Мисоли аввал нишон медиҳад, ки ҷадвали "y" дар система нест, дуюмаш, ки коркардкунандаи "7" мавҷуд нест ва сеюм, ҳангоми чоп кардани номи ҷадвал дархости хато нишон дода мешавад.

  • Дастгирии иловашуда барои тафтиши интерфейси ғулом бо нишон додани "meta sdif" ё "meta sdifname":

    ... meta sdifname vrf1 ...

  • Дастгирии иловагӣ барои амалиёти гузариш ба рост ё чап. Масалан, барои иваз кардани нишони бастаи мавҷуда ба 1 бит ба чап ва битҳои хурдро ба 1 таъин кунед:

    … маҷмӯи мета тамғаи мета тамғаи lshift 1 ё 0x1 …

  • Опсияи "-V" барои намоиш додани маълумоти васеъшудаи версия амалӣ карда шуд.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli: хати хониш
    json: ҳа
    minigmp: не
    libxtables: ҳа

  • Имконоти сатри фармон бояд акнун пеш аз фармонҳо муайян карда шаванд. Масалан, ба шумо лозим аст, ки "nft -a list ruleset" -ро муайян кунед ва иҷро кардани "nft list ruleset -a" боиси хатогӣ мегардад.

    Манбаъ: opennet.ru

Илова Эзоҳ