๋ผ์ฐํฐ, ์ค์์น ๋ฐ ์ก์ธ์ค ํฌ์ธํธ์ ๊ฐ์ ๋ค์ํ ๋คํธ์ํฌ ์ฅ์น์์์ ์ฌ์ฉ์ ๋ชฉํ๋ก ํ๋ OpenWrt 21.02.0 ๋ฐฐํฌํ์ ์๋ก์ด ์ค์ํ ๋ฆด๋ฆฌ์ค๊ฐ ๋์ ๋์์ต๋๋ค. OpenWrt๋ ๋ค์ํ ํ๋ซํผ๊ณผ ์ํคํ ์ฒ๋ฅผ ์ง์ํ๋ฉฐ ์ด์ ๋ธ๋ฆฌ์ ๋ค์ํ ๊ตฌ์ฑ ์์๋ฅผ ํฌํจํ์ฌ ๊ฐ๋จํ๊ณ ํธ๋ฆฌํ ํฌ๋ก์ค ์ปดํ์ผ์ ํ์ฉํ๋ ์ด์ ๋ธ๋ฆฌ ์์คํ ์ ๊ฐ์ถ๊ณ ์์ด ์ํ๋ ์ฌ์ ์ค์ ์ธํธ๊ฐ ํฌํจ๋ ๊ธฐ์ฑ ํ์จ์ด ๋๋ ๋์คํฌ ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฒ ์์ฑํ ์ ์์ต๋๋ค. ํน์ ์์ ์ ๋ง๊ฒ ์ค์น๋ ํจํค์ง. 36๊ฐ์ ๋์ ํ๋ซํผ์ ๋ํ ์ด์ ๋ธ๋ฆฌ๊ฐ ์์ฑ๋ฉ๋๋ค.
OpenWrt 21.02.0์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ต์ ํ๋์จ์ด ์๊ตฌ ์ฌํญ์ด ์ฆ๊ฐํ์ต๋๋ค. ๊ธฐ๋ณธ ๋น๋์์๋ ์ถ๊ฐ Linux ์ปค๋ ํ์ ์์คํ ์ด ํฌํจ๋์ด ์์ผ๋ฏ๋ก OpenWrt๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ์ด์ 8MB ํ๋์์ 64MB RAM์ด ์๋ ์ฅ์น๊ฐ ํ์ํฉ๋๋ค. ์ํ๋ ๊ฒฝ์ฐ 4MB ํ๋์ ๋ฐ 32MB RAM์ด ์๋ ์ฅ์น์์ ์๋ํ ์ ์๋ ๊ฐ๋จํ ์ด์ ๋ธ๋ฆฌ๋ฅผ ์ง์ ๋ง๋ค ์ ์์ง๋ง ์ด๋ฌํ ์ด์ ๋ธ๋ฆฌ์ ๊ธฐ๋ฅ์ ์ ํ๋๋ฉฐ ์๋ ์์ ์ฑ์ด ๋ณด์ฅ๋์ง ์์ต๋๋ค.
- ๊ธฐ๋ณธ ํจํค์ง์๋ WPA3 ๋ฌด์ ๋คํธ์ํฌ ๋ณด์ ๊ธฐ์ ์ ์ง์ํ๋ ํจํค์ง๊ฐ ํฌํจ๋์ด ์์ผ๋ฉฐ, ์ด์ ํด๋ผ์ด์ธํธ ๋ชจ๋์์ ์์ ํ ๋์ ์ก์ธ์ค ํฌ์ธํธ๋ฅผ ์์ฑํ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. WPA3์ ๋น๋ฐ๋ฒํธ ์ถ์ธก ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ฉฐ(์คํ๋ผ์ธ ๋ชจ๋์์๋ ๋น๋ฐ๋ฒํธ ์ถ์ธก์ ํ์ฉํ์ง ์์) SAE ์ธ์ฆ ํ๋กํ ์ฝ์ ์ฌ์ฉํฉ๋๋ค. WPA3 ์ฌ์ฉ ๊ธฐ๋ฅ์ ๋๋ถ๋ถ์ ๋ฌด์ ์ฅ์น์ฉ ๋๋ผ์ด๋ฒ์์ ์ ๊ณต๋ฉ๋๋ค.
- ๊ธฐ๋ณธ ํจํค์ง์๋ ๊ธฐ๋ณธ์ ์ผ๋ก TLS ๋ฐ HTTPS์ ๋ํ ์ง์์ด ํฌํจ๋์ด ์์ด HTTPS๋ฅผ ํตํด LuCI ์น ์ธํฐํ์ด์ค์ ์ก์ธ์คํ๊ณ wget ๋ฐ opkg์ ๊ฐ์ ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ๋ ํต์ ์ฑ๋์ ํตํด ์ ๋ณด๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. opkg๋ฅผ ํตํด ๋ค์ด๋ก๋๋ ํจํค์ง๊ฐ ๋ฐฐํฌ๋๋ ์๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก HTTPS๋ฅผ ํตํด ์ ๋ณด๋ฅผ ์ ์กํ๋๋ก ์ ํ๋ฉ๋๋ค. ์ํธํ์ ์ฌ์ฉ๋๋ mbedTLS ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ WolfSSL๋ก ๋์ฒด๋์์ต๋๋ค(ํ์ํ ๊ฒฝ์ฐ ๊ณ์ ์ต์ ์ผ๋ก ์ ๊ณต๋๋ mbedTLS ๋ฐ OpenSSL ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ค์นํ ์ ์์ต๋๋ค). HTTPS๋ก์ ์๋ ์ ๋ฌ์ ๊ตฌ์ฑํ๊ธฐ ์ํด ์น ์ธํฐํ์ด์ค๋ "uhttpd.main.redirect_https=1" ์ต์ ์ ์ ๊ณตํฉ๋๋ค.
- ๊ธฐ์กด ๋คํธ์ํฌ ์ธํฐํ์ด์ค(iproute2, ifconfig)๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ์ฌ ์ํธ ์ฐ๊ฒฐ๋ ์ด๋๋ท ์ค์์น์ ๊ณ๋จ์ ๊ตฌ์ฑ ๋ฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๋๊ตฌ๋ฅผ ์ ๊ณตํ๋ DSA(Distributed Switch Architecture) ์ปค๋ ํ์ ์์คํ ์ ๋ํ ์ด๊ธฐ ์ง์์ด ๊ตฌํ๋์์ต๋๋ค. ์ด์ ์ ์ ๊ณต๋ swconfig ๋๊ตฌ ๋์ DSA๋ฅผ ์ฌ์ฉํ์ฌ ํฌํธ์ VLAN์ ๊ตฌ์ฑํ ์ ์์ง๋ง ์์ง ๋ชจ๋ ์ค์์น ๋๋ผ์ด๋ฒ๊ฐ DSA๋ฅผ ์ง์ํ๋ ๊ฒ์ ์๋๋๋ค. ์ ์๋ ๋ฆด๋ฆฌ์ค์์๋ ath79(TP-Link TL-WR941ND), bcm4908, gemini, kirkwood, mediatek, mvebu, octeon, ramips(mt7621) ๋ฐ realtek ๋๋ผ์ด๋ฒ์ ๋ํด DSA๊ฐ ํ์ฑํ๋ฉ๋๋ค.
- /etc/config/network์ ์๋ ๊ตฌ์ฑ ํ์ผ์ ๊ตฌ๋ฌธ์ด ๋ณ๊ฒฝ๋์์ต๋๋ค. "config ์ธํฐํ์ด์ค" ๋ธ๋ก์์ "ifname" ์ต์
์ ์ด๋ฆ์ด "device"๋ก ๋ณ๊ฒฝ๋์์ผ๋ฉฐ, "config device" ๋ธ๋ก์์ "bridge" ๋ฐ "ifname" ์ต์
์ ์ด๋ฆ์ด "ports"๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค. ์๋ก ์ค์นํ๋ ๊ฒฝ์ฐ ์ด์ ์ฅ์น(๊ณ์ธต 2, "config device" ๋ธ๋ก) ๋ฐ ๋คํธ์ํฌ ์ธํฐํ์ด์ค(๊ณ์ธต 3, "config ์ธํฐํ์ด์ค" ๋ธ๋ก)์ ๋ํ ์ค์ ์ด ํฌํจ๋ ๋ณ๋์ ํ์ผ์ด ์์ฑ๋ฉ๋๋ค. ์ด์ ๋ฒ์ ๊ณผ์ ํธํ์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ด์ ๊ตฌ๋ฌธ์ ๋ํ ์ง์์ด ์ ์ง๋ฉ๋๋ค. ์ด์ ์ ์์ฑ๋ ์ค์ ์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์น ์ธํฐํ์ด์ค์์ ์ด์ ๊ตฌ๋ฌธ์ด ๊ฐ์ง๋๋ฉด ์ ๊ตฌ๋ฌธ์ผ๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ผ๋ ์ ์์ด ํ์๋๋ฉฐ ์ด๋ ์น ์ธํฐํ์ด์ค๋ฅผ ํตํด ์ค์ ์ ํธ์งํ๋ ๋ฐ ํ์ํฉ๋๋ค.
์๋ก์ด ๊ตฌ๋ฌธ์ ์: config device option name 'br-lan' option type 'bridge' option macaddr '00:01:02:XX:XX:XX' list ports 'lan1' list ports 'lan2' list ports 'lan3' ๋ชฉ๋ก ํฌํธ 'lan4' ๊ตฌ์ฑ ์ธํฐํ์ด์ค 'lan' ์ต์ ์ฅ์น 'br-lan' ์ต์ proto '์ ์ ' ์ต์ ipaddr '192.168.1.1' ์ต์ netmask '255.255.255.0' ์ต์ ip6ass '60' ๊ตฌ์ฑ ์ฅ์น ์ต์ ์ด๋ฆ 'eth1' ์ต์ macaddr '00:01:02:YY:YY:YY' ๊ตฌ์ฑ ์ธํฐํ์ด์ค 'wan' ์ต์ ์ฅ์น 'eth1' ์ต์ proto 'dhcp' ๊ตฌ์ฑ ์ธํฐํ์ด์ค 'wan6' ์ต์ ์ฅ์น 'eth1' ์ต์ proto 'dhcpv6'
๊ตฌ์ฑ ํ์ผ /etc/config/network์ ์ ์ฌํ๊ฒ Board.json์ ํ๋ ์ด๋ฆ์ด "ifname"์์ "device"๋ก ๋ณ๊ฒฝ๋์์ต๋๋ค.
- ์๋ก์ด "realtek" ํ๋ซํผ์ด ์ถ๊ฐ๋์ด D-Link, ZyXEL, ALLNET, INABA ๋ฐ NETGEAR ์ด๋๋ท ์ค์์น์ ๊ฐ์ด ์ด๋๋ท ํฌํธ๊ฐ ๋ง์ ์ฅ์น์์ OpenWrt๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- Broadcom BCM4908 ๋ฐ Rockchip RK4908xx SoC ๊ธฐ๋ฐ ์ฅ์น๋ฅผ ์ํ ์๋ก์ด bcm33 ๋ฐ rockchip ํ๋ซํผ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด์ ์ ์ง์๋์๋ ํ๋ซํผ์ ๋ํ ์ฅ์น ์ง์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
- ar71xx ํ๋ซํผ์ ๋ํ ์ง์์ด ์ค๋จ๋์์ต๋๋ค. ๋์ ath79 ํ๋ซํผ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค(ar71xx ๊ธฐ๋ฐ ์ฅ์น์ ๊ฒฝ์ฐ OpenWrt๋ฅผ ์ฒ์๋ถํฐ ๋ค์ ์ค์นํ๋ ๊ฒ์ด ์ข์ต๋๋ค). cns3xxx(Cavium Networks CNS3xxx), rb532(MikroTik RB532) ๋ฐ Samsung(SamsungTQ210) ํ๋ซํผ์ ๋ํ ์ง์๋ ์ค๋จ๋์์ต๋๋ค.
- ๋คํธ์ํฌ ์ฐ๊ฒฐ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ํ์ผ์ ASLR(Address Space Randomization)์ ์๋ฒฝํ๊ฒ ์ง์ํ๋ PIE(Position-Independent Executables) ๋ชจ๋๋ก ์ปดํ์ผ๋์ด ํด๋น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ทจ์ฝ์ ์ ์ ์ฉํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค.
- Linux ์ปค๋์ ๋น๋ํ ๋ ์ปจํ ์ด๋ ๊ฒฉ๋ฆฌ ๊ธฐ์ ์ ์ง์ํ๋ ์ต์ ์ด ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ๋๋ถ๋ถ์ ํ๋ซํผ์์ OpenWrt์์ LXC ํดํท ๋ฐ procd-ujail ๋ชจ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- SELinux ์ก์ธ์ค ์ ์ด ์์คํ ์ ์ง์ํ์ฌ ๋น๋ํ๋ ๊ธฐ๋ฅ์ด ์ ๊ณต๋ฉ๋๋ค(๊ธฐ๋ณธ์ ์ผ๋ก ๋นํ์ฑํ๋์ด ์์).
- ์ ์๋ ๋ฆด๋ฆฌ์ค musl libc 1.1.24, glibc 2.33, gcc 8.4.0, binutils 2.34, hostapd 2020-06-08, dnsmasq 2.85, dropbear 2020.81, busybox 1.33.1์ ํฌํจํ์ฌ ํจํค์ง ๋ฒ์ ์ด ์ ๋ฐ์ดํธ๋์์ต๋๋ค. Linux ์ปค๋์ด ๋ฒ์ 5.4.143์ผ๋ก ์ ๋ฐ์ดํธ๋์ด 80211 ์ปค๋์์ cfg80211/mac5.10.42 ๋ฌด์ ์คํ์ ํฌํ ํ๊ณ Wireguard VPN ์ง์์ ํฌํ ํ์ต๋๋ค.
์ถ์ฒ : opennet.ru