แแแแแฅแแแงแแแ แแแแแขแแก แคแแแขแ แแก nftables 1.0.6 แแแแแจแแแแ, แ แแแแแแช แแแ แแแแแแแก แแแแแขแแแแก แคแแแขแ แแชแแแก แแแขแแ แคแแแกแแแก IPv4, IPv6, ARP แแ แฅแกแแแแก แฎแแแแแแกแแแแก (แแแแแแ แแกแแฎแแแก iptables, ip6table, arptables แแ ebtables แฉแแแแชแแแแแแก). nftables แแแแแขแ แแแแชแแแก แแแแแขแแก แคแแแขแ แแก แแแแแแแแแขแแแก, แ แแแแแแแช แแฃแจแแแแก แแแแฎแแแ แแแแแก แกแแแ แชแแจแ, แฎแแแ แแแ แแแแก แแแแแก แแฃแจแแแแแก แฃแแ แฃแแแแแงแแคแก nf_tables แฅแแแกแแกแขแแแ, แ แแแแแแช Linux kernel-แแก แแแฌแแแแ 3.13 แแแแแจแแแแแก แจแแแแแ. แแแ แแแแก แแแแ แฃแแ แฃแแแแแงแแคแก แแฎแแแแ แแแแแ แแ แแขแแแแแแกแแแ แแแแแฃแแแแแแแ แแแขแแ แคแแแกแก, แ แแแแแแช แฃแแ แฃแแแแแงแแคแก แแแแแขแแแแแแ แแแแแชแแแแแแก แแแแฆแแแแก, แแแแแชแแแแ แแแแ แแชแแแแแก แจแแกแ แฃแแแแแกแ แแ แแแแแแแก แแแแขแ แแแแก แซแแ แแแแ แคแฃแแฅแชแแแแก.
แคแแแขแ แแชแแแก แฌแแกแแแ แแ แแ แแขแแแแแแก แกแแแชแแคแแแฃแ แ แแแแแฃแจแแแแแแแแ แจแแแแแแแแแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ แแแแขแแแแแจแ, แ แแก แจแแแแแแแช แแก แแแแขแ แแขแแแ แแแแ แแแ แแแจแ Netlink แแแขแแ แคแแแกแแก แแแแแงแแแแแแ แแ แจแแกแ แฃแแแแฃแแแ แแแ แแแจแ แกแแแชแแแแฃแ แแแ แขแฃแแแฃแ แแแแฅแแแแจแ, แ แแแแแแช แแแแแแแแแแแก BPF-แก (Berkeley Packet Filters). แแก แแแแแแแ แกแแจแฃแแแแแแก แแแซแแแแ แแแแจแแแแแแแแแ แจแแแแชแแ แแ แแแ แแแแก แแแแแแ แแแจแแแแฃแแ แคแแแขแ แแชแแแก แแแแแก แแแแ แแ แแแแแแขแแแแ แแ แแขแแแแแแแแแ แแฃแจแแแแแก แฌแแกแแแแกแ แแ แแแแแแแก แงแแแแ แคแฃแแฅแชแแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ.
แซแแ แแแแแ แชแแแแแแแแแ:
- ะ ะพะฟัะธะผะธะทะฐัะพัะต ะฟัะฐะฒะธะป, ะฒัะทัะฒะฐะตะผะพะผ ะฟัะธ ัะบะฐะทะฐะฝะธะธ ะพะฟัะธะธ ยซ-o/โoptimizeยป, ะฝะฐะปะฐะถะตะฝะฐ ะฐะฒัะพะผะฐัะธัะตัะบะฐั ัะฟะฐะบะพะฒะบะฐ ะฟัะฐะฒะธะป ัะตัะตะท ะธั ะพะฑัะตะดะธะฝะตะฝะธะต ะธ ะฟัะตะพะฑัะฐะทะพะฒะฐะฝะธะต ะฒ map- ะธ set-ัะฟะธัะบะธ. ะะฐะฟัะธะผะตั, ะฟัะฐะฒะธะปะฐ # cat ruleset.nft table ip x { chain y { type filter hook input priority filter; policy drop; meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept } } ะฟะพัะปะต ะฒัะฟะพะปะฝะตะฝะธั ยซnft -o -c -f ruleset.nftยป ะฑัะดัั ะฟัะตะพะฑัะฐะทะพะฒะฐะฝั ะฒ ัะปะตะดัััะธะผ ะพะฑัะฐะทะพะผ: ruleset.nft:4:17-74: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 accept ruleset.nft:5:17-74: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.4 accept ruleset.nft:6:17-77: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept ruleset.nft:7:17-83: meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept ruleset.nft:8:17-74: meta iifname eth2 ip saddr 1.1.1.3 ip daddr 2.2.2.5 accept into: iifname . ip saddr . ip daddr { eth1 . 1.1.1.1 . 2.2.2.3, eth1 . 1.1.1.2 . 2.2.2.4, eth1 . 1.1.1.2 . 2.2.3.0/24, eth1 . 1.1.1.2 . 2.2.4.0-2.2.4.10, eth2 . 1.1.1.3 . 2.2.2.5 } accept
- ะะฟัะธะผะธะทะฐัะพั ัะฐะบะถะต ะผะพะถะตั ะฟัะตะพะฑัะฐะทะพะฒัะฒะฐัั ะฒ ะฑะพะปะตะต ะบะพะผะฟะฐะบัะฝัั ัะพัะผั ะฟัะฐะฒะธะปะฐ, ะฒ ะบะพัะพััั ัะถะต ะธัะฟะพะปัะทััััั ะฟัะพัััะต set-ัะฟะธัะบะธ, ะฝะฐะฟัะธะผะตั ะฟัะฐะฒะธะปะฐ: # cat ruleset.nft table ip filter { chain input { type filter hook input priority filter; policy drop; iifname ยซloยป accept ct state established,related accept comment ยซIn traffic we originate, we trustยป iifname ยซenp0s31f6ยป ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 accept iifname ยซenp0s31f6ยป ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept } } ะฟะพัะปะต ะฒัะฟะพะปะฝะตะฝะธั ยซnft -o -c -f ruleset.nftยป ะฑัะดัั ัะฟะฐะบะพะฒะฐะฝั ัะปะตะดัััะธะผ ะพะฑัะฐะทะพะผ: ruleset.nft:6:22-149: iifname ยซenp0s31f6ยป ip saddr { 209.115.181.102, 216.197.228.230 } ip daddr 10.0.0.149 udp sport 123 udp dport 32768-65535 accept ruleset.nft:7:22-143: iifname ยซenp0s31f6ยป ip saddr { 64.59.144.17, 64.59.150.133 } ip daddr 10.0.0.149 udp sport 53 udp dport 32768-65535 accept into: iifname . ip saddr . ip daddr . udp sport . udp dport { enp0s31f6 . 209.115.181.102 . 10.0.0.149 . 123 . 32768-65535, enp0s31f6 . 216.197.228.230 . 10.0.0.149 . 123 . 32768-65535, enp0s31f6 . 64.59.144.17 . 10.0.0.149 . 53 . 32768-65535, enp0s31f6 . 64.59.150.133 . 10.0.0.149 . 53 . 32768-65535 } accept
- ะ ะตัะตะฝะฐ ะฟัะพะฑะปะตะผะฐ ั ะณะตะฝะตัะฐัะธะตะน ะฑะฐะนัะบะพะดะฐ ะดะปั ัะปะธัะฝะธั ะธะฝัะตัะฒะฐะปะพะฒ, ะฒ ะบะพัะพััั ะฟัะธะผะตะฝััััั ัะธะฟั ั ัะฐะทะฝัะผ ะฟะพััะดะบะพะผ ัะปะตะดะพะฒะฐะฝะธั ะฑะฐะนัะพะฒ, ะฝะฐะฟัะธะผะตั IPv4 (ัะตัะตะฒะพะน ะฟะพััะดะพะบ ัะปะตะดะพะฒะฐะฝะธั ะฑะฐะนัะพะฒ) ะธ meta mark (ัะธััะตะผะฝัะน ะฟะพััะดะพะบ ัะปะตะดะพะฒะฐะฝะธั ะฑะฐะนัะพะฒ). table ip x { map w { typeof ip saddr . meta mark : verdict flags interval counter elements = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : accept, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : accept, } } chain k { type filter hook input priority filter; policy drop; ip saddr . meta mark vmap @w } }
- ะะฐะปะฐะถะตะฝะพ ัะพะฟะพััะฐะฒะปะตะฝะธั ัะตะดะบะธั ะฟัะพัะพะบะพะปะพะฒ ะฟัะธ ะธัะฟะพะปัะทะพะฒะฐะฝะธะธ raw-ะฒััะฐะถะตะฝะธะน, ะฝะฐะฟัะธะผะตั: meta l4proto 91 @th,400,16 0x0 accept
- ะ ะตัะตะฝั ะฟัะพะฑะปะตะผั ั ะฒะบะปััะตะฝะธะตะผ ะฟัะฐะฒะธะป ั ะธะฝัะตัะฒะฐะปะฐะผะธ: insert rule x y tcp sport { 3478-3497, 16384-16387 } counter accept
- ะฃะปัััะตะฝ API JSON, ะฒ ะบะพัะพัะพะผ ะฟะพัะฒะธะปะฐัั ะฟะพะดะดะตัะถะบะฐ ะฒััะฐะถะตะฝะธะน ะฒ set- ะธ map-ัะฟะธัะบะฐั .
- ะ ัะฐััะธัะตะฝะธัั ะบ python-ะฑะธะฑะปะธะพัะตะบะต nftables ัะฐะทัะตัะตะฝะฐ ะทะฐะณััะทะบะฐ ะฝะฐะฑะพัะพะฒ ะฟัะฐะฒะธะป ะดะปั ะพะฑัะฐะฑะพัะบะธ ะฒ ัะตะถะธะผะต ะฟัะพะฒะตัะบะธ (ยซ-cยป) ะธ ะดะพะฑะฐะฒะปะตะฝะฐ ะฟะพะดะดะตัะถะบะฐ ะฒะฝะตัะฝะตะณะพ ะพะฟัะตะดะตะปะตะฝะธั ะฟะตัะตะผะตะฝะฝัั .
- ะ ัะปะตะผะตะฝัะฐั set-ัะฟะธัะบะพะฒ ัะฐะทัะตัะตะฝะพ ะดะพะฑะฐะฒะปะตะฝะธะต ะบะพะผะผะตะฝัะฐัะธะตะฒ.
- ะ byte ratelimit ัะฐะทัะตัะตะฝะพ ัะบะฐะทะฐะฝะธั ะฝัะปะตะฒะพะณะพ ะทะฝะฐัะตะฝะธั.
แฌแงแแ แ: opennet.ru