nftables pakét filter release 1.0.0

Pelepasan packet filter nftables 1.0.0 parantos diterbitkeun, ngahijikeun panyaring pakét antarmuka pikeun IPv4, IPv6, ARP sareng sasak jaringan (ditujukeun pikeun ngagentos iptables, ip6table, arptables sareng ebtables). Parobihan anu diperyogikeun pikeun rilis nftables 1.0.0 pikeun dianggo kalebet dina kernel Linux 5.13. Parobahan signifikan dina jumlah versi teu pakait sareng sagala parobahan fundamental, tapi ngan konsekuensi tina terusan konsisten panomeran dina notasi decimal (pelepasan saméméhna éta 0.9.9).

Paket nftables kalebet komponén saringan pakét anu dijalankeun dina rohangan pangguna, sedengkeun padamelan tingkat kernel disayogikeun ku subsistem nf_tables, anu parantos janten bagian tina kernel Linux ti saprak ngaleupaskeun 3.13. Tingkat kernel ngan nyadiakeun antarbeungeut protokol-bebas generik nu nyadiakeun pungsi dasar pikeun extracting data tina pakét, ngajalankeun operasi data, jeung kontrol aliran.

Aturan nyaring jeung panangan husus protokol anu disusun kana bytecode dina spasi pamaké, nu satutasna bytecode ieu dimuat kana kernel ngagunakeun panganteur Netlink sarta dieksekusi dina kernel dina mesin virtual husus reminiscent of BPF (Berkeley Packet Filters). Pendekatan ieu ngamungkinkeun anjeun sacara signifikan ngirangan ukuran kode nyaring anu dijalankeun dina tingkat kernel sareng mindahkeun sadaya fungsi aturan parsing sareng logika pikeun damel sareng protokol kana rohangan pangguna.

Inovasi utama:

  • Rojongan pikeun unsur topeng "*" geus ditambahkeun kana daptar set, nu dipicu pikeun sagala bungkusan nu teu digolongkeun dina elemen séjén didefinisikeun dina set teh. tabél x {peta blocklist {tipe ipv4_addr: vonis umbul elemen interval = {192.168.0.0/16: narima, 10.0.0.0/8: narima, *: serelek}} ranté y {tipe filter hook prerouting prioritas 0; kawijakan narima; ip saddr vmap @blocklist } }
  • Kasebut nyaéta dimungkinkeun pikeun nangtukeun variabel tina garis paréntah nganggo pilihan "--define". # ucing test.nft tabel netdev x {ranté y {tipe filter hook ingress alat = $ dev prioritas 0; turunna kawijakan; } } # nft —define dev="{ eth0, eth1}" -f test.nft
  • Dina daptar peta, pamakéan konstanta (stateful) éksprési diwenangkeun: tabel inet filter {map portmap {tipe inet_service: vonis counter elemen = {22 counter packets 0 bytes 0: jump ssh_input, * counter packets 0 bytes 0: drop}} ranté ssh_input {} ranté wan_input {tcp dport vmap @portmap} ranté prerouting {tipe filter hook prerouting prioritas atah; kawijakan narima; iif vmap {"lo": luncat wan_input}}}
  • Ditambahkeun paréntah "daftar kait" pikeun ningalikeun daptar panangan pikeun kulawarga pakét anu dipasihkeun: # nft daptar kait ip alat eth0 kulawarga ip {hook ingress {+0000000010 ranté netdev xy [nf_tables] +0000000300 ranté inet mw [nf_tables] } input hook {-0000000100 ranté ip ab [nf_tables] +0000000300 ranté inet mz [nf_tables] } kait maju {-0000000225 selinux_ipv4_forward 0000000000 ranté ip ac [nf_tables] } kait ka hareup {-0000000225 selinux_ipv4_forward 0000000225 ranté ip ac [nf_tables] 4 uxlin output {XNUMX} hook postrouting { +XNUMX XNUMX selinux_ipvXNUMX_postroute } }
  • Blok antrian ngamungkinkeun éksprési jhash, symhash, sareng numgen digabungkeun pikeun ngadistribusikaeun pakét ka antrian dina rohangan pangguna. … antrian ka symhash mod 65536 … antrian umbul bypass ka numgen inc mod 65536 … antrian ka jhash oif . meta tanda Emod 32 "Antrian" ogé bisa digabungkeun jeung daptar peta pikeun milih antrian dina spasi pamaké dumasar kana kenop sawenang. ... antrian umbul bypass kana oifname peta { "eth0": 0, "ppp0": 2, "eth1": 2}
  • Kasebut nyaéta dimungkinkeun pikeun dilegakeun variabel anu kalebet daptar set kana sababaraha peta. nangtukeun interfaces = {eth0, eth1} tabél ip x {ranté y {tipe filter hook prioritas input 0; kawijakan narima; iifname vmap {lo: narima, $ interfaces: leupaskeun}}} # nft -f x.nft # nft daptar ruleset tabel ip x {ranté y {tipe filter hook prioritas input 0; kawijakan narima; iifname vmap { "lo": nampi, "eth0": serelek, "eth1": serelek}}}}
  • Ngagabungkeun vmaps (peta putusan) dina interval diwenangkeun: # nft nambahkeun aturan xy tcp dport. ip saddr vmap {1025-65535. 192.168.10.2 : narima}
  • Sintaksis saderhana pikeun pemetaan NAT. Diidinkeun pikeun nangtukeun rentang alamat: ... snat ka ip saddr map { 10.141.11.4 : 192.168.2.2-192.168.2.4 } atawa alamat IP eksplisit jeung port: ... dnat to ip saddr map { 10.141.11.4 : 192.168.2.3 : . 80 } atawa kombinasi rentang IP jeung port: ... dnat to ip saddr . peta tcp dport {192.168.1.2. 80: 10.141.10.2-10.141.10.5. 8888-8999 }

sumber: opennet.ru

Tambahkeun komentar