ASUS RT AX3000 게임 제한하기
이제 중학생이 된 큰 애가 원격 수업 시간에 몰래 게임하거나, 어른들 다 잘때 몰래 일어나서 게임을 하는 등.. 도저히 통제가 안되어서 강제로 제한 하기로 결정하였습니다.
우선 공유기 관리 페이지에 들어가면 AiProtection에 부모 통제라는 항목이 있는데, 한 이틀 써보았는데, 번거롭게 여러 rule설정하는 것보다 효과적인 것 같아서 공유하기로 했습니다.
위의 부모 통제로 들어가면 아래와 같이 항목을 추가할 수 있는 화면이 등장합니다. 우선 기능을 ON 시켜 주시고,
첫 번째 항목에 접속했던 기기들의 MAC주소가 나오고, 자녀의 기기를 선택하고, 제한할 콘텐츠 범주를 선택한 뒹에 + 버튼을 눌러 추가해주면 하단에 추가가 되고, 최종적으로 적용 버튼을 누르면 적용이 됩니다. 저의 아이 경우에는 2.4G, 5G 그리고 핸드폰에 제한을 주었습니다.
그렇지만 아예 막는 것은 또 가차하기도 하고, 자유 시간에 풀어 주고 싶은데, 안타깝게도 시간 설정하는 스케쥴링 기능은 없어서, 구글링을 좀 해봤습니다. 그래서 찾은 방법은 cron서비스를 이용하여 지정한 시간에 막고 푸는 기능을 넣는 방법을 적용해 보았습니다.
우선 공유기 시스템에 접근할 쉘을 활성화 시켜야 합니다. 내부에서만 쓸거라 telnet도 상관없을 것 같긴 한데, 저는 그냥 SSH를 이용하기로 하였습니다.
위와 같이 설정하고 공유기 관리페이지의 admin 계정과 비번으로 SSH에 접속합니다.
/jffs/nvram 폴더에 들어가면 다음과 같은 파일들이 있는데, wrs_*로 된 파일들이 설정 파일입니다.
cat 명령으로 두 파일의 내용을 살펴보면 아래처럼 세 개의 MAC주소에 대해 rule이 설정되어 있습니다. 개인정보 보호를 위해 XX, YY, ZZ로 MAC을 표현하였고, 붉은 굵은 글씨가 설정을 enable(1)/disable(0)하는 flag였습니다.
(값의 의미는 저도 모릅니다.)
wrs_rulelist | 0>XX:XX:XX:XX:XX:XX>>>>69,23<0>YY:YY:YY:YY:YY:YY>>>>69,23<0>ZZ:ZZ:ZZ:ZZ:ZZ:ZZ>>>>69,23 |
wrs_app_rulelist | 0>XX:XX:XX:XX:XX:XX>>>>8,4<0>YY:YY:YY:YY:YY:YY>>>>8,4<0>ZZ:ZZ:ZZ:ZZ:ZZ:ZZ>>>>8,4 |
우선 mkdir /jffs/scripts로 임의의 폴더를 하나 생성하였고, 아래와 같이 enable/disable하는 스크립트를 만들었습니다. Linux가 서툰 분들은 아래 입력하기 힘드시니 '#!/bin/sh' 줄부터 service restart_wrs까지 부분을 메모장에 우선 작성해 두시고, cat > /jffs/scripts/enable.sh 명령을 입력한 뒤에 붙여넣기 해주세요. 잘 붙여넣어졌으면 Ctrl+D를 누르면 저장이 됩니다.
ASUS@RT-AX3000-5290:/jffs/nvram# cat > /jffs/scripts/enable.sh && /jffs/scripts/disable.sh #!/bin/sh nvram set wrs_app_rulelist='1>XX:XX:XX:XX:XX:XX>>>>8,4<1>YY:YY:YY:YY:YY:YY>>>>8,4<1>ZZ:ZZ:ZZ:ZZ:ZZ:ZZ>>>>8,4' nvram set wrs_rulelist='1>XX:XX:XX:XX:XX:XX>>>>69,23<1>YY:YY:YY:YY:YY:YY>>>>69,23<1>ZZ:ZZ:ZZ:ZZ:ZZ:ZZ>>>>69,23' # nvram commit service restart_wrs |
동일한 방식으로 disable.sh도 만들어 주세요.
ASUS@RT-AX3000-5290:/jffs/nvram# cat > /jffs/scripts/enable.sh && chmod +x /jffs/scripts/enable.sh #!/bin/sh nvram set wrs_app_rulelist='0>XX:XX:XX:XX:XX:XX>>>>8,4<0>YY:YY:YY:YY:YY:YY>>>>8,4<0>ZZ:ZZ:ZZ:ZZ:ZZ:ZZ>>>>8,4' nvram set wrs_rulelist='0>XX:XX:XX:XX:XX:XX>>>>69,23<0>YY:YY:YY:YY:YY:YY>>>>69,23<0>ZZ:ZZ:ZZ:ZZ:ZZ:ZZ>>>>69,23' # nvram commit service restart_wrs |
자! 이제 rule을 만들었으니, 스케쥴을 만들어야 합니다. 다음과 같이 cron 서비스에 등록 하는 스크립트를 만들어 줍니다. (위와 동일한 방법으로 만들어 주세요).
간단히 아래 설명 드리면 매 0분 17시 매일 매달 월요일에서 금요일마다 (1-5) 제한을 비활성화 하겠다는 의미이고, 또 매 0분 23시 매일 매달 일요일에서 목요일마다(0-4) 제한을 활성화 하겠다는 의미입니다. 이렇게 하면 밤 평일 밤 11시부터 다음날 오후 5시까지 제한이 걸립니다. (수업이 대충 3시 넘어서 끝나서, 숙제와 복습 마치는 시간 감안해서 5시에 풀리도록 하였고, 주말엔 무제한으로 설정하였습니다.)... 근데 막상 수업 끝나면 숙제와 복습하는 것이 아닌 낮잠을 자거나 친구와 카톡질만 해서.. 참.. 마음이 거시기 합니다.
ASUS@RT-AX3000-5290:/jffs/scripts# cat > /jffs/scripts/init-start && chmod +x /jffs/scripts/init-start #!/bin/sh cru a DisableFireWall "0 17 * * 1-5 /jffs/scripts/disable.sh" cru a EnableFireWall "0 23 * * 0-4 /jffs/scripts/enable.sh" |
모두 다 되었으면 ls -l /jffs/scripts 명령으로 아래처럼 생성한 스크립트 파일들이 보여야 하고, 굵은 글씨부분과 동일하게 속성이 표시가 되어야 합니다.
ASUS@RT-AX3000-5290:/jffs/scripts# ls -l -rwxrwxrwx 1 ugun root 253 May 26 14:56 disable.sh -rwxrwxrwx 1 ugun root 253 May 26 14:56 enable.sh -rwxrwxrwx 1 ugun root 132 May 26 18:37 init-start |
이제 /jffs/scripts/init-start 를 입력하여 스크립를 실행하고 cru l 명령으로 잘 등록이 되었는지 다음과 같이 확인해 봅니다.
ASUS@RT-AX3000-5290:/jffs/scripts# /jffs/scripts/init-start ASUS@RT-AX3000-5290:/jffs/scripts# cru l 0 17 * * 1-5 /jffs/scripts/disable.sh #DisableFireWall# 0 23 * * 0-4 /jffs/scripts/enable.sh #EnableFireWall# |
단... 이 방법에는 치명적인 단점이 있으니... 공유기를 껐다 켜게 되면 수동으로 init-start를 수행해 주어야 합니다. OTL
init-start를 다음과 같은 명령으로 usb mount하는 스크립트로 등록하는 방법이 있다고 검색이 되는데, 저는 USB를 사용하지 않아서 시험해 보지는 못했습니다.
ASUS@RT-AX3000-5290:/jffs/scripts# nvram set script_usbmount="/jffs/scripts/init-start" ASUS@RT-AX3000-5290:/jffs/scripts# nvram commit |
제가 가진 공유기가 IFTTT 기능도 제공하고 있어, 그것과 어떻게 연결을 해볼 수 있지 않을까 생각은 들지만... 귀찮기도 하고, 잘 모르기도 해서.. 그냥 다음엔 IPTIME공유기로 구매하려고요. IPTIME은 그냥 관리 메뉴에서 손쉽게 조정이 가능한 것처럼 보이더라구요....
근데 사실 그냥 이렇게 막기만 하는 것이 대수인가? 라는 근본적인 물음이 아직 남아서.. 좀 더 두고 보다가 완성을 해야 될 것 같습니다.
그럼 모두 좋은 하루 되세요.
***추가 : 잠이 안와서 IFTTT도 찾아봤는데, 아직 On/Off나 메세징만 가능하고 Rule을 조작하는 기능이 없네요.