IPv1.0.1, IPv4, ARP ๋ฐ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ๋ํ ํจํท ํํฐ๋ง ์ธํฐํ์ด์ค๋ฅผ ํตํฉํ๋ ํจํท ํํฐ nftables 6 ๋ฆด๋ฆฌ์ค๊ฐ ๊ฒ์๋์์ต๋๋ค(iptables, ip6table, arptables ๋ฐ ebtables๋ฅผ ๋์ฒดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ). nftables 1.0.1 ๋ฆด๋ฆฌ์ค๊ฐ ์๋ํ๋ ๋ฐ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ Linux ์ปค๋ 5.16-rc1์ ํฌํจ๋์ด ์์ต๋๋ค.
nftables ํจํค์ง์๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๋ ํจํท ํํฐ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ปค๋ ์์ค ์์ ์ ๋ฆด๋ฆฌ์ค 3.13๋ถํฐ Linux ์ปค๋์ ์ผ๋ถ์๋ nf_tables ํ์ ์์คํ ์์ ์ ๊ณต๋ฉ๋๋ค. ์ปค๋ ์์ค์ ํจํท์์ ๋ฐ์ดํฐ ์ถ์ถ, ๋ฐ์ดํฐ ์์ ์ํ ๋ฐ ํ๋ฆ ์ ์ด๋ฅผ ์ํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ผ๋ฐ์ ์ธ ํ๋กํ ์ฝ ๋ ๋ฆฝ์ ์ธ ์ธํฐํ์ด์ค๋ง ์ ๊ณตํฉ๋๋ค.
ํํฐ๋ง ๊ท์น๊ณผ ํ๋กํ ์ฝ๋ณ ํธ๋ค๋ฌ๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ๋ ํ ์ด ๋ฐ์ดํธ์ฝ๋๊ฐ Netlink ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋์ ๋ก๋๋๊ณ BPF(Berkeley Packet Filters)๋ฅผ ์ฐ์์ํค๋ ํน์ ๊ฐ์ ๋จธ์ ์ ์ปค๋์์ ์คํ๋ฉ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ปค๋ ์์ค์์ ์คํ๋๋ ํํฐ๋ง ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ด๊ณ ํ๋กํ ์ฝ ์์ ์ ์ํ ๊ตฌ๋ฌธ ๋ถ์ ๊ท์น ๋ฐ ๋ ผ๋ฆฌ์ ๋ชจ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์ ๊ณต๊ฐ์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค.
์ฃผ์ ํ์ :
- ๋๊ท๋ชจ ์ธํธ ๋ฐ ์ง๋ ๋ชฉ๋ก์ ๋ก๋ํ ๋ ๋ฉ๋ชจ๋ฆฌ ์๋น๊ฐ ๊ฐ์๋์์ต๋๋ค.
- ์ธํธ ๋ฐ ๋งต ๋ชฉ๋ก ๋ค์ ๋ก๋๊ฐ ๊ฐ์ํ๋์์ต๋๋ค.
- ๋๊ท๋ชจ ๊ท์น ์ธํธ์์ ์ ํ๋ ํ ์ด๋ธ ๋ฐ ์ฒด์ธ์ ์ถ๋ ฅ์ด ๊ฐ์ํ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด, 100๋ง ๋ผ์ธ์ ๊ท์น ์ธํธ๋ฅผ ํ์ํ๋ "nft list ruleset" ๋ช ๋ น์ ์คํ ์๊ฐ์ 3.049์ด์ด๊ณ , nat ๋ฐ filter ํ ์ด๋ธ("nft list table nat", "nft list table filter")๋ง ์ถ๋ ฅํ๋ ๊ฒฝ์ฐ์ ๋๋ค. 1.969์ด์ 0.697์ด๋ก ๋จ์ถ๋ฉ๋๋ค.
- ๋๊ท๋ชจ ์ธํธ ๋ชฉ๋ก๊ณผ ๋งต ๋ชฉ๋ก์ด ์๋ ๊ท์น์ ์ฒ๋ฆฌํ ๋ "--terse" ์ต์ ์ ์ฌ์ฉํ ์ฟผ๋ฆฌ ์คํ์ด ๊ฐ์ํ๋์์ต๋๋ค.
- netdev ์ฒด์ธ(์ก์ ํํฌ)์ ์ก์ ํธ๋ค๋ฌ์ ๋์ผํ ์์ค์์ ์ฒ๋ฆฌ๋๋ "์ก์ " ์ฒด์ธ์ ํธ๋ํฝ์ ํํฐ๋งํ ์ ์์ต๋๋ค. ๋๋ผ์ด๋ฒ๊ฐ ์ปค๋ ๋คํธ์ํฌ ์คํ์ผ๋ก๋ถํฐ ํจํท์ ์์ ํ๋ ๋จ๊ณ์์. ํ ์ด๋ธ netdev ํํฐ { ์ฒด์ธ ์ก์ { ์ ํ ํํฐ ํํฌ ์ก์ ์ฅ์น = { eth0, eth1 } ์ฐ์ ์์ 0; ๋ฉํ ์ฐ์ ์์ ์ค์ ip saddr map { 192.168.10.2 : abcd:2, 192.168.10.3 : abcd:3 } } }
- ์ง์ ๋ ์คํ์ ์์ ํจํท ํค๋์ ์ฝํ ์ธ ์ ๋ฐ์ดํธ๋ฅผ ์ผ์น์ํค๊ณ ์์ ํ ์ ์์ต๋๋ค. # nft ์ถ๊ฐ ๊ท์น xy @ih,32,32 0x14000000 ์นด์ดํฐ # nft ์ถ๊ฐ ๊ท์น xy @ih,32,32 set 0x14000000 ์นด์ดํฐ
์ถ์ฒ : opennet.ru