nftables pakete iragazkiaren bertsioa 1.0.3

Packet filter nftables 1.0.3 kaleratzea argitaratu da, IPv4, IPv6, ARP eta sare-zubietarako paketeak iragazteko interfazeak bateratuz (iptables, ip6table, arptables eta ebtables ordezkatzera zuzenduta). nftables 1.0.3 bertsioak funtziona dezan beharrezkoak diren aldaketak Linux 5.18 nukleoan sartzen dira.

nftables paketeak erabiltzailearen espazioan exekutatzen diren pakete-iragazki osagaiak biltzen ditu, kernel mailako lana, berriz, nf_tables azpisistemak eskaintzen du, 3.13 bertsiotik Linux nukleoaren parte izan dena. Nukleo mailak protokolotik independentea den interfaze generiko bat eskaintzen du, paketeetatik datuak ateratzeko, datu-eragiketak egiteko eta fluxu-kontrolerako oinarrizko funtzioak eskaintzen dituena.

Iragazte-arauak eta protokoloen berariazko kudeatzaileak bytecode batean konpilatzen dira erabiltzailearen espazioan, eta, ondoren, bytecode hau nukleoan kargatzen da Netlink interfazea erabiliz eta nukleoan exekutatzen da BPF (Berkeley Packet Filters) gogorarazten duen makina birtual berezi batean. Ikuspegi honek nukleo mailan exekutatzen den iragazketa-kodearen tamaina nabarmen murrizteko eta protokoloekin lan egiteko analisi-arauak eta logika funtzio guztiak erabiltzaileen espaziora mugitzeko aukera ematen du.

Berrikuntza nagusiak:

  • Ezarri zerrendek orain maskara baten bidez bat datozen sare-interfazearen izenak onartzen dituzte, adibidez, β€œ*” ikurra erabiliz zehaztuta: table inet testifssets { set simple_wild { type ifname flags interval elements = { β€œabcdef*”, β€œothername”, β€œppp0” } } chain v4icmp { type filter hook sarrerako lehentasuna 0; politika onartu; iifname @simple_wild kontagailu paketeak 0 byte 0 iifname { β€œabcdef*”, β€œeth0” } kontagailu paketeak 0 byte 0 } }
  • Eragiketan zehar gurutzatzen diren multzo-zerrendako elementuen batuketa automatikoa ezarri da. Lehen, "auto-batere" aukera ezarri zenean, batuketa arauak deklaratzeko fasean egiten zen, baina orain funtzionatzen du funtzionamenduan zehar elementu berriak gehitzen direnean. Adibidez, deklarazio fasean, zerrenda multzoa y { flags interval auto-fusion elements = { 1.2.3.0, 1.2.3.255, 1.2.3.0/24, 3.3.3.3, 4.4.4.4, 4.4.4.4-4.4.4.8 , 3.3.3.4 , 3.3.3.5 } } elementu bihurtuko dira = { 1.2.3.0/24, 3.3.3.3-3.3.3.5, 4.4.4.4-4.4.4.8 } eta gero elementu berriak gehitzen badituzu # nft add element ip xy { 1.2.3.0 -1.2.4.255, 3.3.3.6 } elementuen itxura izango du = { 1.2.3.0-1.2.4.255, 3.3.3.3-3.3.3.6, 4.4.4.4-4.4.4.8 }

    Lehendik dauden barruti-elementuen barruan sartzen diren elementu indibidualak zerrendatik kentzen dituzunean, barrutia laburtu edo zatitu egiten da.

  • Helbide anitzeko itzulpen-arauak (NAT) mapa-zerrenda batean konbinatzeko laguntza gehitu zaio arau-optimizatzaileari, "-o/β€”optimize" aukera zehazten denean deitzen dena. Adibidez, multzorako # cat ruleset.nft table ip x { chain y { type nat hook postrouting priority srcnat; politika jaitsiera; ip saddr 1.1.1.1 tcp dport 8000 snat 4.4.4.4:80 ip saddr 2.2.2.2 tcp dport 8001 snat 5.5.5.5:90 } }

    "nft -o -c -f ruleset.nft" exekutatzeak "ip saddr" arau bereiziak mapa zerrenda batean bihurtuko ditu: snat to ip saddr . tcp dport mapa { 1.1.1.1 . 8000: 4.4.4.4. 80, 2.2.2.2. 8001: 5.5.5.5. 90}

    Era berean, adierazpen gordinak mapa zerrendetan bihur daitezke: # cat ruleset.nft table ip x { […] chain nat_dns_acme { udp length 47-63 @th,160,128 0x0e373135363130333131303735353203 ,62 78x160,128e0e joan nat_dns_this_0 udp luzera 31393032383939353831343037320-5301 @th,62 78x160,128e0e joan nat_dns_saturn_0 udp luzera 31363436323733373931323934300-5301 @th,62 78x160,128 0e joan nat_dns_saturn_0 udp luzera 32393535373539353636383732310-5302 @th,62 78x160,128e0e joan nat_dns_saturn_0 drop } 38353439353637323038363633390

    optimizatu ondoren mapa zerrenda bat lortzen dugu: udp length . @th,160,128 vmap { 47-63 . 0x0e373135363130333131303735353203: joan nat_dns_dnstc, 62-78. 0x0e31393032383939353831343037320e: joan nat_dns_this_5301, 62-78. 0x0e31363436323733373931323934300e: joan nat_dns_saturn_5301, 62-78. 0x0e32393535373539353636383732310e: joan nat_dns_saturn_5302, 62-78. 0x0e38353439353637323038363633390e: joan nat_dns_saturn_5303}

  • Adierazpen gordinak kateatze eragiketetan erabiltzea onartzen da. Adibidez: #nft add rule xy ip saddr. @ih,32,32 { 1.1.1.1 . 0x14, 2.2.2.2. 0x1e } edo taula x { set y { typeof ip saddr . @ih,32,32 elementu = { 1.1.1.1 . 0x14 } } }
  • Kateatze eragiketetan osoko goiburuko eremuak zehazteko laguntza gehitu da: table inet t { map m1 { typeof udp length . @ih,32,32 : epaiak tarteko elementuak = { 20-80 . 0x14: onartu, 1-10. 0xa : jaregin } } katea c { mota iragazkia kako sarrera lehentasuna 0; politika jaitsiera; udp luzera. @ih,32,32 vmap @m1 } }
  • TCP aukerak berrezartzeko laguntza gehitu da (Linux kernel 5.18+ekin bakarrik funtzionatzen du): tcp flags syn reset tcp option sack-perm
  • Katearen irteerako komandoen exekuzioa ("nft list chain xy") bizkortu da.

Iturria: opennet.ru

Gehitu iruzkin berria