User scripts - XIYO/asuswrt-merlin.ng-kr GitHub Wiki
์ฌ์ฉ์ ์คํฌ๋ฆฝํธ์ ๋ํ์ฌ
Asuswrt-Merlin์ ์๋ณธ ํ์จ์ด์ ๋นํด ์ ํ๋ ์์ ์๋ก์ด ๊ธฐ๋ฅ๋ง์ ์ถ๊ฐํ์ง๋ง, ์ฌ์ฉ์ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋ง์ ์ฌ์ฉ์ํ๋ฅผ ๋ฌ์ฑํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ฌ์ฉ์ ์ ์ ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ค์ ํ๊ณ , ์์ ๋ ๊ฐ๊ฒฉ์ผ๋ก ์คํ๋ ์์ ์ ๋ง๋ค๊ฑฐ๋, ์๋ก์ด ์๋น์ค๋ฅผ ์์ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ์คํฌ๋ฆฝํธ๋ค์ JFFS ํํฐ์ ๋ด๋ถ์ ๋นํ๋ฐ์ฑ ํ๋์์ ์ ์ฅ๋ฉ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ค์ ์ฌ์ฉํ๋ ค๋ฉด, ์น UI์์ Administration -> System์์ ํ์ฑํํด์ผ ํฉ๋๋ค.
์ฌ์ฉ ๊ฐ๋ฅํ ์คํฌ๋ฆฝํธ๋ค:
์ด ์ ์คํฌ๋ฆฝํธ๋ค์ ํน์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ์คํ๋ฉ๋๋ค. /jffs/scripts/
์ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค.
์ด ์คํฌ๋ฆฝํธ๋ค์ ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฒคํธ์ ๋ณ๋ ฌ๋ก ์คํ๋์ง๋ง, ๋ช ์์ ์ผ๋ก ์ฐจ๋จ ์คํฌ๋ฆฝํธ๋ก ๋ฌธ์ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๊ทธ๋ ์ต๋๋ค. ๊ทธ ๊ฒฝ์ฐ, ์คํฌ๋ฆฝํธ๋ ์คํฌ๋ฆฝํธ๊ฐ ์๋ฃ๋๊ฑฐ๋ ํ์์์(ํ์ฌ ๊ธฐ๋ณธ ํ์์์ ๊ฐ์ 120์ด) ๋ ๋๊น์ง ์ด๋ฒคํธ ์์ฒด์ ์คํ์ ์ฐจ๋จํฉ๋๋ค.
services-start
๋ถํ ์ ๋ค๋ฅธ ๋ชจ๋ ์์คํ ์๋น์ค๊ฐ ์์๋ ํ ํธ์ถ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด ์๋น์ค ์ค ํ๋๋ฅผ ์ค๋จํ๊ณ ๋ค๋ฅธ ๊ตฌ์ฑ์ผ๋ก ๋ค์ ์์ํ๋ ๊ฒ๊ณผ ๊ฐ์ ์์ ์ ์ ํฉํ ์ฅ์์ ๋๋ค. (ํ์ง๋ง ์๋น์ค๊ฐ ์๋์ผ๋ก ์ฌ์์๋ ๋๋ง๋ค ์๋ ์ค์ ์ผ๋ก ๋์๊ฐ ๊ฒ์์ ์์๋์ธ์.)
services-stop
๋ชจ๋ ์์คํ ์๋น์ค๊ฐ ์ค๋จ๋๊ธฐ ์ ์, ๋ณดํต ์ฌ๋ถํ ์์ ํธ์ถ๋ฉ๋๋ค.
service-event
์๋น์ค ์ด๋ฒคํธ๊ฐ ํธ์ถ๋๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค (์: restart_httpd, restart_wireless ๋ฑ). ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ด๋ฒคํธ์ ๋๋ค (์ผ๋ฐ์ ์ผ๋ก stop, start ๋๋ restart), ๋ ๋ฒ์งธ ์ธ์๋ ๋์์ ๋๋ค (wireless, httpd ๋ฑ). ์ด ์คํฌ๋ฆฝํธ๋ ์ฐจ๋จ ์คํฌ๋ฆฝํธ๋ก, ์คํฌ๋ฆฝํธ๊ฐ ์๋ฃ๋๊ฑฐ๋ ํ์์์ ๋ ๋๊น์ง ์ด๋ฒคํธ ์์ฒด์ ์คํ์ ์ฐจ๋จํฉ๋๋ค.
service-event-end
ํ์จ์ด 384.11์์ ๋์ ๋์์ต๋๋ค. ์๋น์ค ์ด๋ฒคํธ๊ฐ ์๋ฃ๋ ํ์ ํธ์ถ๋ฉ๋๋ค (์: restart_httpd, restart_wireless ๋ฑ). ์ฒซ ๋ฒ์งธ ์ธ์๋ ์ด๋ฒคํธ์ ๋๋ค (์ผ๋ฐ์ ์ผ๋ก stop, start ๋๋ restart), ๋ ๋ฒ์งธ ์ธ์๋ ๋์์ ๋๋ค (wireless, httpd ๋ฑ).
wan-event
WAN ์ธํฐํ์ด์ค์ ๊ด๋ จ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ํ์ ํธ์ถ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ ๋ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์ต๋๋ค:
$1์ WAN ์ ๋์ ํฌํจํฉ๋๋ค (0์ ๊ธฐ๋ณธ, 1์ ๋ณด์กฐ). $2๋ ์ด๋ฒคํธ ์ ํ์ ํฌํจํฉ๋๋ค. ๋ค์ ๋ชฉ๋ก์์ ๊ฐ์ ธ์ต๋๋ค (๋ชฉ๋ก์ ํ์จ์ด ๋ฒ์ ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์์):
- init
- connecting
- connected
- disconnected
- stopped
- disabled
- stopping
๊ตฌ wan-start ์คํฌ๋ฆฝํธ๋ "connected" ์ด๋ฒคํธ์์ ๋ฐ์ํ์ต๋๋ค. ์ฐ๊ฒฐ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ํ์๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ์
์ ํ ๊ธฐ๋ฅ์ ์ด์ง ์์ ์ ์์ต๋๋ค. ์ธํฐ๋ท ์ก์ธ์ค๊ฐ ํ์ํ ์์ ์ ์๋ํ๊ธฐ ์ ์ ์ฝ๊ฐ์ ์ง์ฐ์ ์ถ๊ฐํ๊ฑฐ๋, ์ฐ๊ฒฐ์ด ๊ธฐ๋ฅ์ ์ด ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
wan-start
(384.15๋ถํฐ ๋ ์ด์ ์ฌ์ฉ๋์ง ์์ผ๋ฉฐ, ๋์ wan-event๋ฅผ ์ฌ์ฉํ์ธ์)
WAN ์ธํฐํ์ด์ค๊ฐ ์๋ํ ํ์ ํธ์ถ๋ฉ๋๋ค. WAN ์ธํฐํ์ด์ค์ ์์กดํ๋ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฃ๊ธฐ์ ์ข์ ์ฅ์์
๋๋ค (์: IPv6 ํฐ๋ ๋๋ ๋์ DNS ์๋น์ค ์
๋ฐ์ดํธ). ์ด ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ ๋ ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ํ์ฑํ๋์ด ์์ ๊ฐ๋ฅ์ฑ์ ๋ฎ์ต๋๋ค. ์ฐ๊ฒฐ์ด ์๋ฃ๋ ๋๊น์ง ์คํ์ ์ง์ฐ์ํค๊ธฐ ์ํด sleep
๋ผ์ธ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ช
๋ น์ด ์ฑ๊ณตํ ๋๊น์ง ๋ฃจํ๋ฅผ ์คํํ์ธ์.
firewall-start
๋ฐฉํ๋ฒฝ์ด ์์๋๊ณ ํํฐ๋ง ๊ท์น์ด ์ ์ฉ๋ ํ์ ํธ์ถ๋ฉ๋๋ค. ์ด๊ณณ์ ์ผ๋ฐ์ ์ผ๋ก NAT ํ
์ด๋ธ์ด ์๋ ํํฐ ํ
์ด๋ธ์ ์์ ๋ง์ ๊ท์น์ ๋ฃ์ ๊ณณ์
๋๋ค. ์คํฌ๋ฆฝํธ๋ WAN ์ธํฐํ์ด์ค ์ด๋ฆ (์: ppp0
)์ ์ธ์๋ก ๋ฐ์ ์คํฌ๋ฆฝํธ์์ $1
์ ์ฌ์ฉํ์ฌ ํ์ฉํ ์ ์์ต๋๋ค.
nat-start
NAT ๊ท์น (์ฆ, ํฌํธ ํฌ์๋ ๋ฑ)์ด NAT ํ ์ด๋ธ์ ์ ์ฉ๋ ํ์ ํธ์ถ๋ฉ๋๋ค. ์ด๊ณณ์ ์์ ์ NAT ํ ์ด๋ธ ์ฌ์ฉ์ ์ ์ ๊ท์น (์: ํน์ IP์์ ์ค๋ ์ฐ๊ฒฐ๋ง ํ์ฉํ๋ ํฌํธ ํฌ์๋)์ ๋ฃ์ ๊ณณ์ ๋๋ค.
init-start
JFFS๊ฐ ๋ง์ดํธ๋ ์งํ์, ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์๋น์ค๊ฐ ์์๋๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค. ์ด๊ฒ์ ๋ถํ ๊ณผ์ ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ฝ์ ํ ์ ์๋ ๊ฐ์ฅ ์ด๋ฅธ ๋ถ๋ถ์ ๋๋ค.
pre-mount
ํํฐ์
์ด ๋ง์ดํธ๋๊ธฐ ์ง์ ์ ํธ์ถ๋ฉ๋๋ค. ์ด๊ฒ์ ์ฐจ๋จ ํธ์ถ๋ก ์คํ๋๋ฉฐ ์คํ์ด ์๋ฃ๋๊ฑฐ๋ ํ์์์ ๋ ๋๊น์ง ํธ์ถ๋ ํํฐ์
์ ๋ง์ดํธ๋ฅผ ์ฐจ๋จํฉ๋๋ค. ์ด๋ ํํฐ์
์ ๋ง์ดํธํ๊ธฐ ์ ์ e2fsck
์ ๊ฐ์ ๊ฒ์ ์คํํ๋ ๋ฐ ์ฌ์ฉ๋ ์ ์์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ๋ง์ดํธ๋๋ ์ฅ์น ๊ฒฝ๋ก (์: /dev/sda1
)๋ฅผ ์ธ์๋ก ๋ฐ์ ์คํฌ๋ฆฝํธ์์ $1
์ ์ฌ์ฉํ์ฌ ํ์ฉํ ์ ์์ต๋๋ค. ํ์จ์ด 384.11๋ถํฐ ๋ ๋ฒ์งธ ์ธ์ ($2
)๊ฐ ์ ๋ฌ๋๋ฉฐ ํ์ผ ์์คํ
์ ํ (์: ext3
)์ ํฌํจํฉ๋๋ค.
post-mount
ํํฐ์
์ด ๋ง์ดํธ๋ ์งํ์ ํธ์ถ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ ๋ง์ดํธ ํฌ์ธํธ (ํํฐ์
์ด ๋ง์ดํธ๋ ํ์ผ ์์คํ
๊ฒฝ๋ก, ์: /tmp/mnt/OPT
)๋ฅผ ์ธ์๋ก ๋ฐ์ ์คํฌ๋ฆฝํธ์์ $1
์ ์ฌ์ฉํ์ฌ ํ์ฉํ ์ ์์ต๋๋ค.
unmount
ํํฐ์
์ ๋ง์ดํธ ํด์ ํ๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค. pre-mount์ฒ๋ผ ์ด๊ฒ๋ ์ฐจ๋จ ์คํฌ๋ฆฝํธ์ด๋ฏ๋ก ์ฃผ์ํด์ ์ฌ์ฉํ์ธ์. ์คํฌ๋ฆฝํธ๋ ๋ง์ดํธ ํฌ์ธํธ๋ฅผ ์ธ์๋ก ๋ฐ์ ์คํฌ๋ฆฝํธ์์ $1
์ ์ฌ์ฉํ์ฌ ํ์ฉํ ์ ์์ต๋๋ค.
dhcpc-event
WAN ์ธํฐํ์ด์ค์์ DHCP ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋๋ง๋ค ํธ์ถ๋ฉ๋๋ค. ์ด๋ฒคํธ ์ ํ์ ์ธ์๋ก ์ ๋ฌ๋๋ฉฐ, ์คํฌ๋ฆฝํธ์์ $1
์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. ASUSWRT์ udhcpc
๋ฒ์ ์์ ๊ฐ๋ฅํ ์ด๋ฒคํธ ์ ํ์ deconfig
(udhcpc๊ฐ ์์๋๊ฑฐ๋ ์๋๊ฐ ์์ค๋ ๋), bound
(์๋์ ์ IP ์ฃผ์๊ฐ ํ๋๋ ๋), ๊ทธ๋ฆฌ๊ณ renew
(์๋๊ฐ ๊ฐฑ์ ๋์ง๋ง IP๊ฐ ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ)์
๋๋ค.
openvpn-event
OpenVPN ์๋ฒ๊ฐ ์์/์ค๋จ๋๊ฑฐ๋ OpenVPN ํด๋ผ์ด์ธํธ๊ฐ ์๊ฒฉ ์๋ฒ์ ์ฐ๊ฒฐ๋ ๋๋ง๋ค ํธ์ถ๋ฉ๋๋ค. OpenVPN์ "up" ๋ฐ "down" ์คํฌ๋ฆฝํธ์ ๋์ผํ ๊ตฌ๋ฌธ/๋งค๊ฐ๋ณ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. $script_type
ํ๊ฒฝ ๋ณ์๋ ์ฅ์น $dev
์์ ๋ฐ์ํ ์ด๋ฒคํธ์ ์ ํ์ ๋ํ๋
๋๋ค.
ddns-start
DDNS ์
๋ฐ์ดํธ ํ๋ก์ธ์ค๊ฐ ๋๋ ๋ ํธ์ถ๋ฉ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ DDNS ์ ํ์ "Custom"์ผ๋ก ์ค์ ํ ๋๋ ํธ์ถ๋ฉ๋๋ค. ์คํฌ๋ฆฝํธ๋ WAN IP๋ฅผ ์ธ์๋ก ๋ฐ์ผ๋ฉฐ, ์คํฌ๋ฆฝํธ์์ $1
์ ์ฌ์ฉํ์ฌ ์ด๋ฅผ ํ์ฉํ ์ ์์ต๋๋ค. "Custom" DDNS๋ฅผ ์ฒ๋ฆฌํ ๋, ์ด ์คํฌ๋ฆฝํธ๋ ์
๋ฐ์ดํธ ํ๋ก์ธ์ค์ ์ฑ๊ณต ๋๋ ์คํจ๋ฅผ ๋ณด๊ณ ํ๋ ์ฑ
์๋ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Custom DDNS ์น์
์ ์ฐธ์กฐํ์ธ์.
update-notification
์ค์ผ์ค๋ ์ ํ์จ์ด ๋ฒ์ ๊ฐ์ฉ์ฑ ์ฒดํฌ๊ฐ ์ ํ์จ์ด์ ๋ค์ด๋ก๋ ๊ฐ๋ฅ์ฑ์ ํ์งํ์ ๋ ํธ์ถ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ update notification example์ ์ฐธ์กฐํ์ธ์.
qos-start
์ ํต์ ์ธ QOS ๋๋ Cake๊ฐ ์ค๋จ/์์ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ ํ, ๊ทธ๋ฆฌ๊ณ ์คํํ๊ธฐ ์ ์ ํธ์ถ๋ฉ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ์ฌ /etc/cake-qos.conf ๊ตฌ์ฑ ํ์ผ(์ผ์ดํฌ์์ ์ฌ์ฉํ๋ ๋ณ์๋ฅผ ํฌํจ) ๋๋ /tmp/qos(๋ ๋ชจ๋ ๋ชจ๋์ ๋ํด ์์ฑ๋์ด tc qdisc/๊ท์น ํญ๋ชฉ์ ์์ฑ/์ ๊ฑฐํ๋ ๋ฐ ์ฌ์ฉ๋จ)์ ์์ ํ ์ ์์ต๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ๋งค๊ฐ๋ณ์๋ก ํ๋์ ์ธ์๋ฅผ ๋ฐ์ผ๋ฉฐ, "init" (QOS๋ฅผ ์์ํ ์์ ์ผ ๋) ๋๋ "rules" (์ ํต์ ์ธ QOS์ ๋ํ iptables ๊ท์น์ด ๊ตฌ์ฑ๋์์ ๋)๋ฅผ ํฌํจํ ๊ฒ์ ๋๋ค. ์ด ์คํฌ๋ฆฝํธ๋ ์ฐจ๋จ ํธ์ถ๋ก ์คํ๋๋ฉฐ ์๋ฃ๋ ๋๊น์ง QOS ์์์ ์ผ์ ์ค์งํฉ๋๋ค.
wgserver-stop ๋ฐ wgserver-start
WireGuard ์๋ฒ๊ฐ ์ค๋จ๋๊ฑฐ๋ ์์๋ ๋ ํธ์ถ๋ฉ๋๋ค.
wgclient-stop ๋ฐ wgclient-start
WireGuard ํด๋ผ์ด์ธํธ๊ฐ ์ค๋จ๋๊ฑฐ๋ ์์๋ ๋ ํธ์ถ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ ๋จ์ ๋ฒํธ(1-5)๊ฐ ์คํฌ๋ฆฝํธ์ ์ธ์๋ก ์ ๋ฌ๋ฉ๋๋ค.
Postconf ์คํฌ๋ฆฝํธ
์ด ์ธ์๋, ํ์จ์ด์์ ์ง์ํ๋ ๋ค์์ postconf ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ์๋น์ค์ ๊ตฌ์ฑ ํ์ผ์ด ์์ฑ๋ ์๊ฐ๊ณผ ์๋น์ค๊ฐ ์คํ๋๊ธฐ ์ง์ ์ฌ์ด์ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ [Postconf scripts
](https://github.com/RMerl/asuswrt-merlin.ng/wiki/Custom-config-files#postconf-scripts) ์น์ ์ ์ฐธ์กฐํ์ธ์.
์คํฌ๋ฆฝํธ ์์ฑ
์์ฑํ๋ ๋ชจ๋ ์คํฌ๋ฆฝํธ๊ฐ ์คํ ๊ฐ๋ฅํ๋๋ก ์ค์ ํ๋ ๊ฒ์ ์์ง ๋ง์ธ์:
chmod a+rx /jffs/scripts/*
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ UNIX ์คํฌ๋ฆฝํธ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฌ๋ฑ ์ผ๋ก ์์ํด์ผ ํฉ๋๋ค:
#!/bin/sh
๋ํ ํ์ผ์ UNIX ์ค ๋์ผ๋ก ์ ์ฅํด์ผ ํฉ๋๋ค. ์๋์ฐ์ ๋ฉ๋ชจ์ฅ์ UNIX ์ค ๋์ผ๋ก ์ ์ฅํ ์ ์์ผ๋ฏ๋ก ๋์ Notepad++์ ์ฌ์ฉํ์ธ์. ๋ํ ํ์จ์ด์ ํฌํจ๋ vi
๋๋ nano
๋ฅผ ์ฌ์ฉํ์ฌ ๋ผ์ฐํฐ์์ SSH๋ฅผ ํตํด ์ง์ ํธ์งํ ์๋ ์์ผ๋ฉฐ, ์ด๋ค์ ์ ์ ํ ์ค ๋์ผ๋ก ํ์ผ์ ์์ฑํฉ๋๋ค.
์คํฌ๋ฆฝํธ ๋ฌธ์ ํด๊ฒฐ:
์ฒ์์๋ ์คํฌ๋ฆฝํธ์ ๊ตฌ๋ฌธ ์ค๋ฅ๊ฐ ์๋์ง ํ์ธํ๊ธฐ ์ํด ์๋์ผ๋ก ์คํํด ๋ณด์ธ์. ๋ํ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์๋์ง ์ฝ๊ฒ ํ์ธํ ์ ์๋๋ก ์๋จ ๊ทผ์ฒ์ ์ผ๋ถ ์ฝ๋๋ฅผ ์ฝ์ ํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด:
touch /tmp/000wanstarted
/tmp
๋๋ ํ ๋ฆฌ์์ 000wanstarted์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ์ฌ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋์๋์ง ์ฝ๊ฒ ์ ์ ์์ต๋๋ค.
์ฌ์ฉ์ ์คํฌ๋ฆฝํธ ๋๋ฒ๊น
์ ์ ์ฉํ ๋ช
๋ น์ด๋ logger
์ด๋ฉฐ, ์ด๋ ์์คํ
๋ก๊ทธ์ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํ๊ณ ์น UI์์ ๋ณผ ์ ์์ต๋๋ค.