IPv0.9.9, IPv4, ARP ๋ฐ ๋คํธ์ํฌ ๋ธ๋ฆฌ์ง์ ๋ํ ํจํท ํํฐ๋ง ์ธํฐํ์ด์ค๋ฅผ ํตํฉํ๋ ํจํท ํํฐ nftables 6 ๋ฆด๋ฆฌ์ค๊ฐ ๊ฒ์๋์์ต๋๋ค(iptables, ip6table, arptables ๋ฐ ebtables๋ฅผ ๋์ฒดํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ). ๋์์ nf_tables ํ์ ์์คํ ๊ณผ ์ํธ ์์ฉํ๊ธฐ ์ํ ํ์ ์์ค API๋ฅผ ์ ๊ณตํ๋ ๋๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ libnftnl 1.2.0์ด ์ถ์๋์์ต๋๋ค. nftables 0.9.9 ๋ฆด๋ฆฌ์ค๊ฐ ์๋ํ๋ ๋ฐ ํ์ํ ๋ณ๊ฒฝ ์ฌํญ์ Linux ์ปค๋ 5.13-rc1์ ํฌํจ๋์ด ์์ต๋๋ค.
nftables ํจํค์ง์๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ์คํ๋๋ ํจํท ํํฐ ๊ตฌ์ฑ ์์๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ปค๋ ์์ค ์์ ์ ๋ฆด๋ฆฌ์ค 3.13๋ถํฐ Linux ์ปค๋์ ์ผ๋ถ์๋ nf_tables ํ์ ์์คํ ์์ ์ ๊ณต๋ฉ๋๋ค. ์ปค๋ ์์ค์ ํจํท์์ ๋ฐ์ดํฐ ์ถ์ถ, ๋ฐ์ดํฐ ์์ ์ํ ๋ฐ ํ๋ฆ ์ ์ด๋ฅผ ์ํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์ผ๋ฐ์ ์ธ ํ๋กํ ์ฝ ๋ ๋ฆฝ์ ์ธ ์ธํฐํ์ด์ค๋ง ์ ๊ณตํฉ๋๋ค.
ํํฐ๋ง ๊ท์น๊ณผ ํ๋กํ ์ฝ๋ณ ํธ๋ค๋ฌ๋ ์ฌ์ฉ์ ๊ณต๊ฐ์์ ๋ฐ์ดํธ์ฝ๋๋ก ์ปดํ์ผ๋ ํ ์ด ๋ฐ์ดํธ์ฝ๋๊ฐ 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 ์ปค๋์ ๋ํ๋ฉ๋๋ค). ์๋ฅผ ๋ค์ด, ํจํท์ ์ ํ์ด 'data'์ด๊ณ ํ๋๊ฐ 'type'์ธ ์ฒญํฌ๊ฐ ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ ค๋ฉด ๋ค์์ ์ํํ์ญ์์ค. ... sctp ์ฒญํฌ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํฉ๋๋ค ... sctp ์ฒญํฌ ๋ฐ์ดํฐ ์ ํ 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