nftables แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก แƒ’แƒแƒ›แƒแƒจแƒ•แƒ”แƒ‘แƒ 1.0.6

แƒ’แƒแƒ›แƒแƒฅแƒ•แƒ”แƒงแƒœแƒ“แƒ แƒžแƒแƒ™แƒ”แƒขแƒ˜แƒก แƒคแƒ˜แƒšแƒขแƒ แƒ˜แƒก 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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ