OpenWrt 21.02.0 ์ถœ์‹œ

๋ผ์šฐํ„ฐ, ์Šค์œ„์น˜ ๋ฐ ์•ก์„ธ์Šค ํฌ์ธํŠธ์™€ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ๋„คํŠธ์›Œํฌ ์žฅ์น˜์—์„œ์˜ ์‚ฌ์šฉ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” 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

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€