IPv1.0.6, IPv4, ARP ๋ฐ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ๋ํ ํจํท ํํฐ๋ง ์ธํฐํ์ด์ค๋ฅผ ํตํฉํ๋ ํจํท ํํฐ nftables 6 ๋ฆด๋ฆฌ์ค๊ฐ ๊ฒ์๋์์ต๋๋ค(iptables, ip6table, arptables ๋ฐ ebtables๋ฅผ ๋์ฒดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ). nftables ํจํค์ง์๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๋ ํจํท ํํฐ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ปค๋ ์์ค ์์ ์ ๋ฆด๋ฆฌ์ค 3.13๋ถํฐ Linux ์ปค๋์ ์ผ๋ถ์๋ nf_tables ํ์ ์์คํ ์์ ์ ๊ณต๋ฉ๋๋ค. ์ปค๋ ์์ค์ ํจํท์์ ๋ฐ์ดํฐ ์ถ์ถ, ๋ฐ์ดํฐ ์์ ์ํ ๋ฐ ํ๋ฆ ์ ์ด๋ฅผ ์ํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ผ๋ฐ์ ์ธ ํ๋กํ ์ฝ ๋ ๋ฆฝ์ ์ธ ์ธํฐํ์ด์ค๋ง ์ ๊ณตํฉ๋๋ค.
ํํฐ๋ง ๊ท์น๊ณผ ํ๋กํ ์ฝ๋ณ ํธ๋ค๋ฌ๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ๋ ํ ์ด ๋ฐ์ดํธ์ฝ๋๊ฐ Netlink ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋์ ๋ก๋๋๊ณ BPF(Berkeley Packet Filters)๋ฅผ ์ฐ์์ํค๋ ํน์ ๊ฐ์ ๋จธ์ ์ ์ปค๋์์ ์คํ๋ฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ปค๋ ์์ค์์ ์คํ๋๋ ํํฐ๋ง ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ํ๋กํ ์ฝ ์์ ์ ์ํ ๊ตฌ๋ฌธ ๋ถ์ ๊ท์น ๋ฐ ๋ ผ๋ฆฌ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ๊ณต๊ฐ์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
์ฃผ์ ๋ณ๊ฒฝ ์ฌํญ :
- "-o/โoptimize" ์ต์ ์ด ์ง์ ๋๋ฉด ํธ์ถ๋๋ ๊ท์น ์ต์ ํ ํ๋ก๊ทธ๋จ์ ๊ท์น์ ๊ฒฐํฉํ๊ณ ์ด๋ฅผ ๋งต ๋ฐ ์ธํธ ๋ชฉ๋ก์ผ๋ก ๋ณํํ์ฌ ์๋์ผ๋ก ํจํค์งํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ท์น # cat ruleset.nft table ip x { chain y { type filter Hook input Priority filter; ์ ์ฑ ํ๋ฝ; ๋ฉํ iifname eth1 ip saddr 1.1.1.1 ip Daddr 2.2.2.3 ์๋ฝ ๋ฉํ iifname eth1 ip saddr 1.1.1.2 ip Daddr 2.2.2.4 ์๋ฝ ๋ฉํ iifname eth1 ip saddr 1.1.1.2 ip Daddr 2.2.3.0/24 ์๋ฝ ๋ฉํ iifname eth1 ip saddr 1.1.1.2 .2.2.4.0 ip Daddr 2.2.4.10-2 accept Meta iifname eth1.1.1.3 ip saddr 2.2.2.5 ip Daddr 4 accept } } "nft -o -c -f ruleset.nft"๋ฅผ ์คํํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ท์น ์ธํธ๋ก ๋ณํ๋ฉ๋๋ค. .nft:17:74-1: ๋ฉํ iifname eth1.1.1.1 ip saddr 2.2.2.3 ip Daddr 5 ์๋ฝ ruleset.nft:17:74-1: ๋ฉํ iifname eth1.1.1.2 ip saddr 2.2.2.4 ip Daddr 6 ์๋ฝ ruleset.nft : 17:77-1: ๋ฉํ iifname eth1.1.1.2 ip saddr 2.2.3.0 ip Daddr 24/7 accept ruleset.nft:17:83-1: Meta iifname eth1.1.1.2 ip saddr 2.2.4.0 ip Daddr 2.2.4.10-8 ruleset.nft:17:74-2 ์๋ฝ: ๋ฉํ iifname eth1.1.1.3 ip saddr 2.2.2.5 ip Daddr 1 ์๋ฝ: iifname . IP ์ฌํ ์ฌ๋. IP Daddr { eth1.1.1.1 . 2.2.2.3. 1, eth1.1.1.2 . 2.2.2.4. 1, eth1.1.1.2 . 2.2.3.0. 24/1, eth1.1.1.2 . 2.2.4.0. 2.2.4.10-2, eth1.1.1.3. 2.2.2.5. XNUMX } ์๋ฝ
- ์ตํฐ๋ง์ด์ ๋ ์ด๋ฏธ ๊ฐ๋จํ ์ธํธ ๋ชฉ๋ก์ ์ฌ์ฉํ๋ ๊ท์น์ ๋ณด๋ค ๊ฐ๊ฒฐํ ํํ๋ก ๋ณํํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. # cat ruleset.nft table ip filter { chain input { type filter Hook input Priority filter; ์ ์ฑ ํ๋ฝ; iifname "lo" accept ct ์ํ ์ค์ , ๊ด๋ จ accept comment "์ฐ๋ฆฌ๊ฐ ๋ฐ์ํ๋ ํธ๋ํฝ์์ ์ฐ๋ฆฌ๋ ์ ๋ขฐํฉ๋๋ค" 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 ์๋ฝ: iifname . IP ์ฌํ ์ฌ๋. IP ์๋น . UDP ์คํฌ์ธ . 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 } ์๋ฝ
- IPv4(๋คํธ์ํฌ ๋ฐ์ดํธ ์์) ๋ฐ ๋ฉํ ๋งํฌ(์์คํ ๋ฐ์ดํธ ์์)์ ๊ฐ์ด ๋ฐ์ดํธ ์์๊ฐ ๋ค๋ฅธ ์ ํ์ ์ฌ์ฉํ๋ ๋ณํฉ ๊ฐ๊ฒฉ์ ๋ํ ๋ฐ์ดํธ ์ฝ๋ ์์ฑ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ํ ์ด๋ธ ip x { ์ง๋ w { ip saddr ์ ํ. ๋ฉํ ๋งํฌ : ํ์ ํ๋๊ทธ ๊ฐ๊ฒฉ ์นด์ดํฐ ์์ = { 127.0.0.1-127.0.0.4 . 0x123434-0xb00122 : ์๋ฝ, 192.168.0.10-192.168.1.20 . 0x0000aa00-0x0000aaff : ์๋ฝ, } } chain k { ์ ํ ํํฐ ํํฌ ์ ๋ ฅ ์ฐ์ ์์ ํํฐ; ์ ์ฑ ํ๋ฝ; IP ์ฌํ ์ฌ๋. ๋ฉํ ๋งํฌ vmap @w } }
- ์์ ํํ์์ ์ฌ์ฉํ ๋ ํฌ๊ท ํ๋กํ ์ฝ์ ๋น๊ต๊ฐ ๊ฐ์ ๋์์ต๋๋ค(์: metal l4proto 91 @th,400,16 0x0 accept).
- ๊ฐ๊ฒฉ์ ๋ฐ๋ผ ๊ท์น์ ํ์ฑํํ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค. ์ฝ์ ๊ท์น xy tcp sport { 3478-3497, 16384-16387 } ์นด์ดํฐ ์๋ฝ
- ์ธํธ ๋ฐ ๋งต ๋ชฉ๋ก์ ํํ์ ์ง์์ ํฌํจํ๋๋ก JSON API๊ฐ ๊ฐ์ ๋์์ต๋๋ค.
- nftables Python ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ฅ์ ์ฌ์ฉํ๋ฉด ์ ํจ์ฑ ๊ฒ์ฌ ๋ชจ๋("-c")์์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ท์น ์ธํธ๋ฅผ ๋ก๋ํ ์ ์๊ณ ๋ณ์์ ์ธ๋ถ ์ ์์ ๋ํ ์ง์์ด ์ถ๊ฐ๋ฉ๋๋ค.
- ์ธํธ๋ฆฌ์คํธ ์์์๋ ์ฝ๋ฉํธ ์ถ๊ฐ๊ฐ ํ์ฉ๋ฉ๋๋ค.
- ๋ฐ์ดํธ ์๋ ์ ํ์ ์ฌ์ฉํ๋ฉด XNUMX ๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค.
์ถ์ฒ : opennet.ru