nftables 0.9.4 լրատվականի թողարկում

Հրապարակվել հիմնական փաթեթային ֆիլտրի թողարկում nftables 0.9.4, որը զարգանում է որպես iptables, ip6tables, arptables և ebtables-ի փոխարինող՝ IPv4, IPv6, ARP և ցանցային կամուրջների փաթեթների ֆիլտրացման ինտերֆեյսների միավորումների միջոցով: nftables փաթեթը ներառում է օգտագործողի տարածքում աշխատող փաթեթային ֆիլտրի բաղադրիչներ, մինչդեռ միջուկի մակարդակում մասնագիտացված nf_tables ենթակառուցվածքի միջոցով, որն առկա է Linux միջուկում 3.13-ից սկսած: nftables 0.9.4 թողարկման համար պահանջվող փոփոխությունները ներառված են ապագա միջուկների ճյուղում: Linux 5.6.

Միջուկի մակարդակում տրամադրվում է ընդամենը ընդհանուր ինտերֆեյս՝ անկախ կոնկրետ پروտոկոլից և տրամադրելով տվյալների հանման, տվյալների հետագործման և հոսքի կառավարման հիմնական գործառույթները: Ֆիլտրացիայի կանոններն ու պրոտոկոլներին հատուկ պրոցեսորները կոմպիլացվում են օգտագործողի տարածքում байткոդի ձևով, հետո այդ байткոդը загрузվում է միջուկին Netlink ինտերֆեյսի միջոցով և կատարվում է միջուկում հատուկ վիրտուալ մեքենայի մեջ, որը նման է BPF-ի (Berkeley Packet Filters): Այս մոտեցումը նշանակալիորեն կրճատում է միջուկի մակարդակում աշխատող ֆիլտրացիայի կոդի չափը և բոլոր կանոնների解析ման գործառույթները և պրոտոկոլներով աշխատելու տրամաբանությունը տեղափոխում է օգտագործողի տարածք:

Կարևոր նորույթները:

  • Հաճախորդ գործառույթի աջակցություն՝ ընդհանրությունների (concatenation, որոշ հասցեի և պորտի կապեր, որոնք պարզացնում են համապատասխանները): Օրինակ՝ «whitelist» հավաքածուի համար, որի տարրերը համակցված են, «interval» դրոշի հանձնելը կօգնի ցույց տալ, որ հավաքածուն կարող է ներառել օրինագծեր (միացումային «ipv4_addr . ipv4_addr . inet_service» համար, նախկինում կարելի էր թվարկել սուտ համադրությունների ձևով «192.168.10.35 . 192.68.11.123 . 80», բայց հիմա կարելի է նշել հասցեների խմբեր «192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80»):

    լիցենզիա ip foo {
    ծաղկափոշի whitelist {
    տիպ ipv4_addr . ipv4_addr . inet_service
    դրոշները interval
    տարբերակները = { 192.168.10.35-192.168.10.40 . 192.68.11.123-192.168.11.125 . 80 }
    }

    աբով bar {
    տիպ ֆիլտր hook prerouting priority filter; քաղաքականություն drop;
    ip saddr . ip daddr . tcp dport @whitelist ընդունել
    }
    }

  • Հավաքածուների և map-սպիսի համար հնարավորություն է ընձեռնված օգտագործել «typeof» դիրկը, որը սահմանում է անդամի ձևաչափը համադրություններում:
    Օրինակ՝

    լիցենզիա ip foo {
    ծաղկափոշի whitelist {
    typeof ip saddr
    տարբերակները = { 192.168.10.35, 192.168.10.101, 192.168.10.135 }
    }

    աբով bar {
    տիպ ֆիլտր hook prerouting priority filter; քաղաքականություն drop;
    ip daddr @whitelist ընդունել
    }
    }

    լիցենզիա ip foo {
    map addr2mark {
    typeof ip saddr : meta mark
    տարբերակները = { 192.168.10.35 : 0x00000001, 192.168.10.135 : 0x00000002 }
    }
    }

  • Ավելացված է NAT-կապերում համակցությունների օգտագործման հնարավորություն, ինչը թույլ է տալիս նշել հասցե և պորտ NAT-ի تبدیلیներում map-սպիսի կամ անվանված հավաքածուների հիման վրա:

    nft ավելացնել правило ip nat pre dnat ip addr . port to ip saddr map { 1.1.1.1 : 2.2.2.2 . 30 }

    nft ավելացնել map ip nat destinations { տիպ ipv4_addr . inet_service : ipv4_addr . inet_service \\; }
    nft ավելացնել правило ip nat pre dnat ip addr . port to ip saddr . tcp dport map @destinations

  • Սարքային արագացման աջակցություն, երբ որոշ փոփոկչակներ տեղափոխվում են ցանցային քարտի վրա: Արագացումը ակտիվացվում է ethtool օգտակար ծրագրի միջոցով («ethtool -K eth0 hw-tc-offload on»), ապա ակտիվացվում է nftables-ի հիմնական օղակում «offload» դրոշի միջոցով: Linux 5.6 քերային օգտագործելով, աջակցություն է տրամադրվում գլխի դաշտերի խաղարկման և կրթական ինտերֆեյսի ստուգման համար, համադրելով թունելները, թողարկումները, կրկնությունները (dup) և ուղղորդման (fwd) փաթեթները: Անդրադարձվող օրինակներում, 192.168.30.20 հասցեից եկող փաթեթների թողարկումը կատարվում է ցանցային քարտի մակարդակում, առանց փաթեթների անցնելու քերային:

    # cat file.nft
    table netdev x {
    chain y {
    type filter hook ingress device eth0 priority 10; flags offload;
    ip saddr 192.168.30.20 drop
    }
    }
    # nft -f file.nft

  • Նորացված է սխալների տեղը տեղեկացնելու տեղեկությունը:

    # nft delete rule ip y z handle 7
    Error: Could not process rule: No such file or directory
    delete rule ip y z handle 7
    ^

    # nft delete rule ip x x handle 7
    Error: Could not process rule: No such file or directory
    delete rule ip x x handle 7
    ^

    # nft delete table twst
    Error: No such file or directory; did you mean table ‘test’ in family ip?
    delete table twst
    ^^^^

    Առաջին օրինակն ցույց է տալիս, որ «y» աղյուսակը համակարգում բացակայում է, երկրորդը, որ «7» ձեռնարկը բացակայում է, իսկ երրորդը, որ ցուցադրվում է սխալի շտկման ծվություն աղյուսակի անունը գրելու ժամանակ.

  • Ավելացել է slave-հղման ստուգման աջակցություն «meta sdif» կամ «meta sdifname» նշումով:

    … meta sdifname vrf1 …

  • Ավելացել է աջ կամ ձախ տեղաշարժի գործողություն: Օրինակ, գոյություն ունեցող փաթեթի պիտակը 1 բիտով ձախ կողմ տեղափոխելու և փոքր բիտի հորս դնելու համար:

    … meta mark set meta mark lshift 1 or 0x1 …

  • Իրականացվել է «-V» տարբերակը՝ տարբերակի ընդլայնած տեղեկառուի ցուցադրման համար.

    # nft -V
    nftables v0.9.4 (Jive at Five)
    cli: readline
    json: yes
    minigmp: no
    libxtables: yes

  • Հասկացման շարքերը այժմ պետք է խստորեն նշվեն հրամանների վրա: Օրինակ, անհրաժեշտ է նշել «nft -a list ruleset», իսկ «nft list ruleset -a» գործարկումը կհանգեցնի սխալ տրամադրման:

    Ընտանիք: opennet.ru

Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով 🔥 Գնել հուսալի հյուրընկալում DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster