IPv1.0.2, IPv4, ARP ๋ฐ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ๋ํ ํจํท ํํฐ๋ง ์ธํฐํ์ด์ค๋ฅผ ํตํฉํ๋ ํจํท ํํฐ nftables 6 ๋ฆด๋ฆฌ์ค๊ฐ ๊ฒ์๋์์ต๋๋ค(iptables, ip6table, arptables ๋ฐ ebtables๋ฅผ ๋์ฒดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ). nftables 1.0.2 ๋ฆด๋ฆฌ์ค๊ฐ ์๋ํ๋ ๋ฐ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ Linux ์ปค๋ 5.17-rc์ ํฌํจ๋์ด ์์ต๋๋ค.
nftables ํจํค์ง์๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๋ ํจํท ํํฐ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ปค๋ ์์ค ์์ ์ ๋ฆด๋ฆฌ์ค 3.13๋ถํฐ Linux ์ปค๋์ ์ผ๋ถ์๋ nf_tables ํ์ ์์คํ ์์ ์ ๊ณต๋ฉ๋๋ค. ์ปค๋ ์์ค์ ํจํท์์ ๋ฐ์ดํฐ ์ถ์ถ, ๋ฐ์ดํฐ ์์ ์ํ ๋ฐ ํ๋ฆ ์ ์ด๋ฅผ ์ํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ผ๋ฐ์ ์ธ ํ๋กํ ์ฝ ๋ ๋ฆฝ์ ์ธ ์ธํฐํ์ด์ค๋ง ์ ๊ณตํฉ๋๋ค.
ํํฐ๋ง ๊ท์น๊ณผ ํ๋กํ ์ฝ๋ณ ํธ๋ค๋ฌ๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ๋ ํ ์ด ๋ฐ์ดํธ์ฝ๋๊ฐ Netlink ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋์ ๋ก๋๋๊ณ BPF(Berkeley Packet Filters)๋ฅผ ์ฐ์์ํค๋ ํน์ ๊ฐ์ ๋จธ์ ์ ์ปค๋์์ ์คํ๋ฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ปค๋ ์์ค์์ ์คํ๋๋ ํํฐ๋ง ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ํ๋กํ ์ฝ ์์ ์ ์ํ ๊ตฌ๋ฌธ ๋ถ์ ๊ท์น ๋ฐ ๋ ผ๋ฆฌ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ๊ณต๊ฐ์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
์ฃผ์ ํ์ :
- ๊ท์น ์ต์ ํ ๋ชจ๋๊ฐ ์ถ๊ฐ๋์์ผ๋ฉฐ ์๋ก์ด "-o"("--optimize") ์ต์
์ ์ฌ์ฉํ์ฌ ํ์ฑํ๋์์ต๋๋ค. ์ด ์ต์
์ "--check" ์ต์
๊ณผ ๊ฒฐํฉํ์ฌ ์ค์ ๋ก ๋ก๋ํ์ง ์๊ณ ๋ ๊ท์น ์ธํธ ํ์ผ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ธํ๊ณ ์ต์ ํํ ์ ์์ต๋๋ค. . ์ต์ ํ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ค์ ๊ท์น๊ณผ ๊ฐ์ ์ ์ฌํ ๊ท์น์ ๊ฒฐํฉํ ์ ์์ต๋๋ค. 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.5 accept ip saddr 1.1.1.1 ip Daddr 2.2.2.2 .2.2.2.2 IP Saddr ์๋ฝ 3.3.3.3 IP Daddr XNUMX ์ญ์
๋ฉํ iifname ์ผ๋ก ๊ฒฐํฉ๋ฉ๋๋ค. IP ์ฌํ ์ฌ๋. IP Daddr { eth1 . 1.1.1.1. 2.2.2.3, eth1 . 1.1.1.2. 2.2.2.5 } IP saddr์ ์๋ฝํฉ๋๋ค. 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 ์น์ธ
- ์ธํธ ๋ชฉ๋ก์ sctp ์ฒญํฌ๋ฟ๋ง ์๋๋ผ ip ๋ฐ tcp ์ต์ ์ ์ง์ ํ๋ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค. set s5 { typeof ip option ra value elements = { 1, 1024 } } set s7 { typeof sctp Chunk init num-inbound-streams elements = { 1, 4 } } chain c5 { ip option ra value @s5 accept } chain c7 { sctp Chunk init num-inbound-streams @s7 accept }
- TCP ์ต์ fastopen, md5sig ๋ฐ mptcp์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋งคํ์์ mp-tcp ํ์ ์ ํ ์ฌ์ฉ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. tcp ์ต์ mptcp ํ์ ์ ํ 1
- ์ปค๋ ์ธก ํํฐ๋ง ์ฝ๋๊ฐ ๊ฐ์ ๋์์ต๋๋ค.
- Flowtable์ ์ด์ JSON ํ์์ ์๋ฒฝํ๊ฒ ์ง์ํฉ๋๋ค.
- ์ด๋๋ท ํ๋ ์ ์ผ์น ์์ ์์ "๊ฑฐ๋ถ" ์์ ์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋์์ต๋๋ค. ์ํ ๋ฅด saddr aa:bb:cc:dd:ee:ff ip Daddr 192.168.0.1 ๊ฑฐ๋ถ
์ถ์ฒ : opennet.ru