āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° nftables 1.0.2 āĻĒā§āĻ°āĻāĻžāĻļ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, IPv4, IPv6, ARP āĻāĻŦāĻ āĻ¨ā§āĻāĻāĻ¯āĻŧāĻžāĻ°ā§āĻ āĻŦā§āĻ°āĻŋāĻ (iptables, ip6table, arptables āĻāĻŦāĻ ebtables āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨ā§āĻ° āĻ˛āĻā§āĻˇā§āĻ¯ā§) āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°ā§āĨ¤ nftables 1.0.2 āĻ°āĻŋāĻ˛āĻŋāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨āĻā§āĻ˛āĻŋ Linux kernel 5.17-rc-āĻ āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻā§āĻā§āĻ¤ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤
nftables āĻĒā§āĻ¯āĻžāĻā§āĻā§āĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ° āĻāĻĒāĻžāĻĻāĻžāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ā§ āĻāĻ˛ā§, āĻ¯āĻāĻ¨ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ āĻ¸ā§āĻ¤āĻ°āĻāĻŋ nf_tables āĻ¸āĻžāĻŦāĻ¸āĻŋāĻ¸ā§āĻā§āĻŽ āĻĻā§āĻŦāĻžāĻ°āĻž āĻāĻĒāĻ˛āĻŦā§āĻ§ āĻāĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¯āĻž 3.13 āĻĒā§āĻ°āĻāĻžāĻļā§āĻ° āĻĒāĻ° āĻĨā§āĻā§ Linux āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ā§āĻ° āĻ āĻāĻļāĨ¤ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ āĻ¸ā§āĻ¤āĻ°ā§, āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻāĻāĻāĻŋ āĻā§āĻ¨ā§āĻ°āĻŋāĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛-āĻ¸ā§āĻŦāĻžāĻ§ā§āĻ¨ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻ¯āĻž āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĨā§āĻā§ āĻĄā§āĻāĻž āĻāĻšāĻ°āĻŖ, āĻĄā§āĻāĻžāĻ° āĻāĻĒāĻ° āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻāĻ˛āĻžāĻĒ āĻ¸āĻŽā§āĻĒāĻžāĻĻāĻ¨ āĻāĻŦāĻ āĻĒā§āĻ°āĻŦāĻžāĻš āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŽā§āĻ˛āĻŋāĻ āĻĢāĻžāĻāĻļāĻ¨ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§āĨ¤
āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻā§āĻ°āĻžāĻ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛-āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻšā§āĻ¯āĻžāĻ¨ā§āĻĄāĻ˛āĻžāĻ°āĻā§āĻ˛āĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§-āĻ¸ā§āĻĒā§āĻ¸ āĻŦāĻžāĻāĻāĻā§āĻĄā§ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻ āĻŦāĻžāĻāĻāĻā§āĻĄāĻāĻŋ āĻ¨ā§āĻāĻ˛āĻŋāĻāĻ āĻāĻ¨ā§āĻāĻžāĻ°āĻĢā§āĻ¸ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ā§ āĻ˛ā§āĻĄ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ BPF (āĻŦāĻžāĻ°ā§āĻāĻ˛ā§ āĻĒā§āĻ¯āĻžāĻā§āĻ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°) āĻ¸āĻĻā§āĻļ āĻāĻāĻāĻŋ āĻŦāĻŋāĻļā§āĻˇ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ā§ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ā§ āĻāĻžāĻ°ā§āĻ¯āĻāĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻāĻŋ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ āĻ¸ā§āĻ¤āĻ°ā§ āĻāĻ˛āĻŽāĻžāĻ¨ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻā§āĻĄā§āĻ° āĻāĻāĻžāĻ° āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯āĻāĻžāĻŦā§ āĻšā§āĻ°āĻžāĻ¸ āĻāĻ°āĻž āĻāĻŦāĻ āĻĒāĻžāĻ°ā§āĻ¸āĻŋāĻ āĻ¨āĻŋāĻ¯āĻŧāĻŽā§āĻ° āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻĢāĻžāĻāĻļāĻ¨ āĻāĻŦāĻ āĻĒā§āĻ°ā§āĻā§āĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§ āĻāĻžāĻ āĻāĻ°āĻžāĻ° āĻ¯ā§āĻā§āĻ¤āĻŋāĻā§ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻāĻžāĻ°ā§āĻ° āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻ¸āĻŽā§āĻāĻŦ āĻāĻ°ā§ āĻ¤ā§āĻ˛ā§āĨ¤
āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻĻā§āĻāĻžāĻŦāĻ¨:
- āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ¯āĻŧāĻŽ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ āĻŽā§āĻĄ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¨āĻ¤ā§āĻ¨ "-o" ("--āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ") āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻ¸āĻā§āĻ°āĻŋāĻ¯āĻŧ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§, āĻ¯āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦā§ āĻ˛ā§āĻĄ āĻ¨āĻž āĻāĻ°ā§āĻ āĻ°ā§āĻ˛āĻ¸ā§āĻ āĻĢāĻžāĻāĻ˛ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻā§āĻ āĻāĻŦāĻ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāĻ°āĻ¤ā§ "--āĻā§āĻ" āĻŦāĻŋāĻāĻ˛ā§āĻĒā§āĻ° āĻ¸āĻžāĻĨā§ āĻŽāĻŋāĻ˛āĻŋāĻ¤ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤ . āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻžāĻ¨ āĻāĻĒāĻ¨āĻžāĻā§ āĻ
āĻ¨ā§āĻ°ā§āĻĒ āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻā§āĻ˛āĻŋāĻā§ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻ
āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§āĻ¯āĻŧ, āĻāĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§āĻĒ, āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻā§āĻ˛āĻŋ: meta iifname eth1 ip saddr 1.1.1.1 ip daddr 2.2.2.3 āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨ meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.2.5 ip saddr.1.1.1.1 daddr.2.2.2.2 āĻ¸ā§āĻŦā§āĻāĻžāĻ° āĻāĻ°ā§āĻ¨ .2.2.2.2 ip saddr 3.3.3.3 ip daddr XNUMX āĻĄā§āĻ°āĻĒ āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻ¨
āĻŽā§āĻāĻž iifname āĻ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻāĻāĻĒāĻŋ āĻ¸āĻĻāĻ°āĨ¤ ip daddr {eth1. 1.1.1.1. 2.2.2.3, eth1āĨ¤ 1.1.1.2āĨ¤ 2.2.2.5} āĻāĻāĻĒāĻŋ āĻ¸āĻĻāĻ° āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻ¨āĨ¤ ip daddr vmap { 1.1.1.1 2.2.2.2 : āĻā§āĻ°āĻšāĻŖ āĻāĻ°ā§āĻ¨, 2.2.2.2āĨ¤ 3.3.3.3 : āĻĄā§āĻ°āĻĒ }
āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°: # nft -c -o -f ruleset.test āĻŽāĻžāĻ°ā§āĻāĻŋāĻ: ruleset.nft:16:3-37: ip daddr 192.168.0.1 counter accept ruleset.nft:17:3-37: ip daddr 192.168.0.2 counter accept Ruleset.nft:18:3-37: ip daddr 192.168.0.3 āĻĒāĻžāĻ˛ā§āĻāĻž āĻā§āĻ°āĻšāĻ¨ āĻāĻ°ā§: ip daddr { 192.168.0.1, 192.168.0.2, 192.168.0.3 } āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻĒā§āĻ¯āĻžāĻā§āĻ 0 āĻŦāĻžāĻāĻ 0 āĻā§āĻ°āĻšāĻŖ
- āĻ¸ā§āĻ āĻ¤āĻžāĻ˛āĻŋāĻāĻžāĻā§āĻ˛āĻŋ ip āĻāĻŦāĻ tcp āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ sctp āĻāĻŖā§āĻĄāĻā§āĻ˛āĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°ā§: āĻ¸ā§āĻ s5 { typeof ip option ra value āĻāĻĒāĻžāĻĻāĻžāĻ¨ = { 1, 1024 } } āĻ¸ā§āĻ s7 { typeof sctp chunk init num-inbound-streams āĻāĻĒāĻžāĻĻāĻžāĻ¨ = { 1, 4 } } āĻā§āĻāĻ¨ c5 { ip option ra value @s5 accept } āĻā§āĻāĻ¨ c7 { sctp āĻāĻŖā§āĻĄ āĻļā§āĻ°ā§ num-inbound-streams @s7 accept }
- TCP āĻŦāĻŋāĻāĻ˛ā§āĻĒāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ fastopen, md5sig āĻāĻŦāĻ mptcp.
- āĻŽā§āĻ¯āĻžāĻĒāĻŋāĻ-āĻ mp-tcp āĻ¸āĻžāĻŦāĻāĻžāĻāĻĒ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§: tcp āĻŦāĻŋāĻāĻ˛ā§āĻĒ mptcp āĻ¸āĻžāĻŦāĻāĻžāĻāĻĒ 1
- āĻāĻ¨ā§āĻ¨āĻ¤ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛-āĻ¸āĻžāĻāĻĄ āĻĢāĻŋāĻ˛ā§āĻāĻžāĻ°āĻŋāĻ āĻā§āĻĄāĨ¤
- āĻĢā§āĻ˛ā§āĻā§āĻŦāĻ˛ā§ āĻāĻāĻ¨ JSON āĻĢāĻ°ā§āĻŽā§āĻ¯āĻžāĻā§āĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°ā§āĻŖ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ°āĻ¯āĻŧā§āĻā§āĨ¤
- āĻāĻĨāĻžāĻ°āĻ¨ā§āĻ āĻĢā§āĻ°ā§āĻŽ āĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§ "āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻā§āĻ¯āĻžāĻ¨" āĻ ā§āĻ¯āĻžāĻāĻļāĻ¨ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻāĻĨāĻžāĻ° āĻ¸āĻĻāĻ° aa:bb:cc:dd:ee:ff ip daddr 192.168.0.1 āĻĒā§āĻ°āĻ¤ā§āĻ¯āĻžāĻā§āĻ¯āĻžāĻ¨
āĻāĻ¤ā§āĻ¸: opennet.ru