nftables 0.9.9 ํจํท ํํฐ๊ฐ ์ถ์๋์์ต๋๋ค. ์ด ํํฐ๋ IPv4, IPv6, ARP ๋ฐ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ๋ํ ํจํท ํํฐ๋ง ์ธํฐํ์ด์ค๋ฅผ ํตํฉํฉ๋๋ค(iptables, ip6table, arptables ๋ฐ ebtables๋ฅผ ๋์ฒดํ๋๋ก ์ค๊ณ๋จ). nf_tables ํ์ ์์คํ ๊ณผ ์ํธ ์์ฉํ๊ธฐ ์ํ ์ ์์ค API๋ฅผ ์ ๊ณตํ๋ libnftnl 1.2.0 ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋์์ ์ถ์๋์์ต๋๋ค. nftables 0.9.9์ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ปค๋์ ๋ฐ์๋์์ต๋๋ค. Linux 5.13-rc1.
nftables ํจํค์ง์๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์๋ํ๋ ํจํท ํํฐ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ปค๋ ์์ค์ ์์ ์ ์ปค๋์ ์ผ๋ถ์ธ nf_tables ํ์ ์์คํ ์์ ์ ๊ณตํฉ๋๋ค. Linux 3.13 ๋ฒ์ ๋ถํฐ๋ ์ปค๋ ์์ค์์ ํ๋กํ ์ฝ์ ๋ ๋ฆฝ์ ์ธ ์ผ๋ฐ ์ธํฐํ์ด์ค๋ง ์ ๊ณต๋๋ฉฐ, ํจํท์์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ๊ณ , ๋ฐ์ดํฐ ์์ ์ ์ํํ๊ณ , ํ๋ฆ ์ ์ด๋ฅผ ์ํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ํํฐ๋ง ๊ท์น ์์ฒด์ ํ๋กํ ์ฝ๋ณ ํธ๋ค๋ฌ๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ๋ ํ, Netlink ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ปค๋๋ก ๋ก๋๋์ด ์ปค๋ ๋ด์ ํน์ํ ํจ์์์ ์คํ๋ฉ๋๋ค. ๊ฐ์ ๊ธฐ๊ธฐ์ด๋ BPF(Berkeley Packet Filters)๋ฅผ ์ฐ์์ํต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ํตํด ์ปค๋ ์์ค์์ ์คํ๋๋ ํํฐ๋ง ์ฝ๋์ ํฌ๊ธฐ๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ๊ท์น ๊ตฌ๋ฌธ ๋ถ์ ๋ฐ ํ๋กํ ์ฝ ๋ก์ง์ ์ฌ์ฉ์ ๊ณต๊ฐ์ผ๋ก ์ฎ๊ธธ ์ ์์ต๋๋ค.
์ฃผ์ ํ์ :
- ํ๋ฆ ํ ์ด๋ธ ์ฒ๋ฆฌ๋ฅผ ๋คํธ์ํฌ ์ด๋ํฐ ์ธก์ผ๋ก ์ด๋ํ๋ ๊ธฐ๋ฅ์ด ๊ตฌํ๋์์ผ๋ฉฐ 'offload' ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ํ์ฑํ๋์์ต๋๋ค. Flowtable์ ๋ชจ๋ ๊ท์น ์ฒ๋ฆฌ ์ฒด์ธ์ ์์ ํ ํต๊ณผ๊ฐ ์ฒซ ๋ฒ์งธ ํจํท์๋ง ์ ์ฉ๋๊ณ ํ๋ฆ์ ๋ค๋ฅธ ๋ชจ๋ ํจํท์ ์ง์ ์ ๋ฌ๋๋ ํจํท ๋ฆฌ๋๋ ์ ๊ฒฝ๋ก๋ฅผ ์ต์ ํํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ์ ๋๋ค. table ip global { flowtable f { ํํฌ ์์ ์ฐ์ ์์ ํํฐ + 1 ์ฅ์น = { lan3, lan0, wan } ํ๋๊ทธ ์คํ๋ก๋ } ์ฒด์ธ ์ ๋ฌ { ์ ํ ํํฐ ํํฌ ์ ๋ฌ ์ฐ์ ์์ ํํฐ; ์ ์ฑ ๋์; ip ํ๋กํ ์ฝ { tcp, udp } ํ๋ฆ ์ถ๊ฐ @f } ์ฒด์ธ ํฌ์คํธ { ์ ํ nat ํํฌ ํฌ์คํธ๋ผ์ฐํ ์ฐ์ ์์ ํํฐ; ์ ์ฑ ๋์; oifname "wan" ๊ฐ์ฅ ๋ฌด๋ํ } }
- ํ๋ก์ธ์ค์์ ํ ์ด๋ธ์ ๋ ์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ ์ด๋ธ์ ์์ ์ ํ๋๊ทธ๋ฅผ ์ฐ๊ฒฐํ๋ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ํ๋ก์ธ์ค๊ฐ ์ข ๋ฃ๋๋ฉด ํด๋น ํ๋ก์ธ์ค์ ์ฐ๊ฒฐ๋ ํ ์ด๋ธ์ด ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค. ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ ๊ท์น ๋คํ์ ์ฃผ์ ํ์์ผ๋ก ํ์๋ฉ๋๋ค. table ip x { # progname nft flags owner chain y { type filter Hook input Priority filter; ์ ์ฑ ๋์; ์นด์ดํฐ ํจํท 1๋ฐ์ดํธ 309 } }
- ์ฌ๋ฌ VLAN ํ๊ทธ๋ฅผ ๋จ์ผ ์ด๋๋ท ํ๋ ์์ผ๋ก ๋์ฒดํ๋ ์๋จ์ ์ ์ํ๋ IEEE 802.1ad ์ฌ์(VLAN ์คํํน ๋๋ QinQ)์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ธ๋ถ ์ด๋๋ท ํ๋ ์ 8021ad ๋ฐ vlan id=342์ ์ ํ์ ํ์ธํ๋ ค๋ฉด ... ether type 802.1ad vlan id 342 ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ด๋๋ท ํ๋ ์ 8021ad/vlan id=1, ์ค์ฒฉ๋ 802.1์ ์ธ๋ถ ์ ํ์ ํ์ธํ ์ ์์ต๋๋ค. q/vlan id=2 ๋ฐ ์ถ๊ฐ IP ํจํท ์บก์ํ: ... ์ด๋๋ท ์ ํ 8021ad vlan id 1 vlan ์ ํ 8021q vlan id 2 vlan ์ ํ ip ์นด์ดํฐ
- ํตํฉ ๊ณ์ธต cgroups v2๋ฅผ ์ฌ์ฉํ์ฌ ๋ฆฌ์์ค ๊ด๋ฆฌ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค. cgroups v2์ v1์ ์ฃผ์ ์ฐจ์ด์ ์ CPU ๋ฆฌ์์ค ํ ๋น, ๋ฉ๋ชจ๋ฆฌ ์๋น ์กฐ์ ๋ฐ I/O๋ฅผ ์ํด ๋ณ๋์ ๊ณ์ธต ๊ตฌ์กฐ ๋์ ๋ชจ๋ ์ ํ์ ๋ฆฌ์์ค์ ๊ณตํต cgroups ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฒซ ๋ฒ์งธ ์์ค cgroupv2์ ์๋ ์์ผ์ ์กฐ์์ด "system.slice" ๋ง์คํฌ์ ์ผ์นํ๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์ ๊ตฌ์ฑ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ... ์์ผ cgroupv2 ์์ค 1 "system.slice"
- ะะพะฑะฐะฒะปะตะฝะฐ ะฒะพะทะผะพะถะฝะพััั ะฟัะพะฒะตัะบะธ ัะพััะฐะฒะฝัั ัะฐััะตะน ะฟะฐะบะตัะพะฒ SCTP (ะฝะตะพะฑั ะพะดะธะผะฐั ะดะปั ัะฐะฑะพัั ััะฝะบัะธะพะฝะฐะปัะฝะพััั ะฟะพัะฒะธััั ะฒ ัะดัะต Linux 5.14). ะะฐะฟัะธะผะตั, ะดะปั ะฟัะพะฒะตัะบะธ ะฝะฐะปะธัะธั ะฒ ะฟะฐะบะตัะต chunk-ะฐ ั ัะธะฟะพะผ โdataโ ะธ ะฟะพะปะตะผ โtypeโ: โฆ sctp chunk data exists โฆ sctp chunk data type 0
- "-f" ํ๋๊ทธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ท์น ๋ก๋ ์์ ์คํ์ด ์ฝ XNUMX๋ฐฐ ๊ฐ์ํ๋์์ต๋๋ค. ๊ท์น ๋ชฉ๋ก ์ถ๋ ฅ๋ ๊ฐ์ํ๋์์ต๋๋ค.
- ํ๋๊ทธ ๋นํธ๊ฐ ์ค์ ๋์๋์ง ํ์ธํ๊ธฐ ์ํ ๊ฐ๋จํ ํ์์ด ์ ๊ณต๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, snat ๋ฐ dnat ์ํ ๋นํธ๊ฐ ์ค์ ๋์ง ์์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์์ ์ง์ ํ ์ ์์ต๋๋ค. ... ct status ! snat,dnat๋ syn ๋นํธ๊ฐ ๋นํธ๋ง์คํฌ์ ์ค์ ๋์ด ์๋์ง ํ์ธํฉ๋๋ค. syn,ack: ... tcp๋ syn / syn,ack์ ํ๋๊ทธ๋ฅผ ์ง์ ํ์ฌ fin ๋ฐ rst ๋นํธ๊ฐ ๋นํธ๋ง์คํฌ์ ์ค์ ๋์ด ์์ง ์์์ง ํ์ธํฉ๋๋ค. syn,ack,fin,rst: ... tcp ํ๋๊ทธ! = fin,rst / syn,ack,fin,rst
- set/map typeof ์ ์์์ "verdict" ํค์๋๋ฅผ ํ์ฉํฉ๋๋ค. map xm { typeof iifname ์ ์ถ๊ฐํ์ธ์. IP ํ๋กํ ์ฝ th dport : ํ๊ฒฐ ;}
์ถ์ฒ : opennet.ru
