샤오미 공유기 3세대(Mi Router R3G)에 OpenWrt 올리기

기존에 샤오미 공유기 3세대에 Padavan 펌웨어를 올려서 Shadowsocks 및 V2ray 연결 전용 공유기로 잘 사용하고 있었습니다.

공유기에 padavan 펌웨어 올리는 법은 기존 포스팅을 참고하시기 바랍니다.

최근들어 중국 양회(两会) 개최시기가 되니 또 VPN 차단이 심해진 듯하여, Shadowsocks 포트가 자주 막히고, V2ray는 연결이 잘 안되는 증상이 잦아져서 고민하다가, 최근 잘 사용 중인 Wireguard를 공유기에 사용하기 위해서 큰맘 먹고 공유기에 OpenWrt를 올리기로 했습니다.

혹시라도 모를 펌웨어 교체로 공유기가 벽돌이 되어 버리면 새로 살 때까지 불편할 것 같아서 최대한 자료를 이것저것 조사한 후 아래와 같이 진행했습니다.

사전 준비 자료

기존에 이미 공유기 펌웨어를 변경했었기 때문에 개발자 펌웨어로 변경하고, SSH를 활성화하고, Breed를 올리는 단계 까지는 되어 있으니, 다음 단계로 최신 OpenWrt 버전을 올리는 것으로만 생각하고 자료를 검색해 보았습니다.
자료를 찾다 보니, SSH 활성화 까지는 OpenWrt 사이트에서도 동일한 과정으로 설명을 하고 있는데, 계획 했던 것 처럼 Breed에서는 OpenWrt 펌웨어를 직접 올릴 수 없다고 합니다.
Breed에서는 Padavan, Pandorabox처럼 하나의 파일로 구성된 펌웨어는 올릴 수 있지만 OpenWrt처럼 2개의 파일로 이루어진 펌웨어는 올릴 수 없다고 하네요.

OpenWrt 사이트에 올라온 방식은 kernel1, rootfs0 영역에 지정된 OpenWrt 파일을 기록하는데, Breed 시스템 저작자인 hackpascal이 관련 포럼에 적은 내용으로는 Breed가 부팅하는 과정에서,
  • kernel0가 존재하면 kernel0를 부팅
  • kernel1이 존재하면 kernel1을 부팅
  • kernel0와 kernel1이 둘 다 존재하면, 환경변수 xiaomi.r3g.bootfw 값을 확인하여 이 값이 2이면 kernel1을 부팅, 그렇지 않으면 kernel0를 부팅 
위와 같이 설명하고 있습니다.

우선 OpenWrt 사이트에서 글을 작성하는 현재 기준 최신 버전인 아래 파일들을 다운로드 받아 두시기 바랍니다.

19.07.2 펌웨어

19.07.3 업그레이드 파일

Breed를 이미 설치한 경우 샤오미 정식 개발자 펌웨어로 원복하기 위한 개발자 펌웨어

펌웨어 변경하지 않은 순정 공유기에 OpenWrt 설치 (Breed가 설치되어 있지 않은 상태)

기존에 제가 포스팅했던 padavan 펌웨어 올리는 방법을 설명한 글을 보시고, SSH 활성화한 후 SSH로 공유기 192.168.31.1 주소에 root 계정으로 로그인까지 진행하시기 바랍니다.

SSH에서 아래 명령어를 입력하면 펌웨어를 덮어 씌우고 재부팅합니다.
mtd write /펌웨어파일 경로/openwrt-19.07.2-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1
mtd write /펌웨어파일 경로/openwrt-19.07.2-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0
nvram set flag_try_sys1_failed=1
nvram commit
reboot
펌웨어 파일을 USB 메모리에 넣어서 공유기에 꽂아놓은 상태라면 펌웨어 경로를 /extdisks/sd1으로 입력하시면 됩니다.

재부팅이 완료되었으면 공유기 관리 주소가 192.168.1.1로 변경된 상태이므로 웹 브라우저에서 192.168.1.1 주소를 입력하여 OpenWrt 관리 페이지로 접속 가능합니다.  

혹시 OpenWrt를 사용하다가 너무 복잡해서 순정으로 돌아가고 싶다거나, 설정을 잘못해서 공유기 관리 페이지에 접속이 불가능해진 경우에는 아래와 같이 순정 펌웨어를 재설치합니다.
  1. 미리 받아두었던 샤오미 개발자 펌웨어의 이름을 miwifi.bin으로 변경하여 fat32로 포맷된 USB 메모리의 루트 디렉토리에 복사한 후, USB 메모리를 공유기 뒷면의 USB 포트에 끼워둡니다.
  2. 전원선을 뽑은 상태에서 뾰족한 바늘 같은 도구로 Reset 구멍의 스위치를 누르고 있는 상태에서 전원선을 연결합니다.
  3. 공유기의 LED 표시등이 지속적으로 깜빡이는 상태가 되면 누르고 있던 reset 스위치를 놓고 기다립니다.
  4. Breed가 설치되어 있지 않은 순정 부트로더 상태이므로 공유기가 USB 메모리의 miwifi.bin 파일을 불러들여 펌웨어를 복구하고 자동으로 재부팅됩니다.
  5. 약 1~2분 정도 기다린 뒤 공유기 불이 파란색으로 쭉 켜진 상태가 되면 순정 개발자 펌웨어 설치가 완료된 것입니다. 펌웨어 복구 작업이 완료되기 전에 공유기 전원을 끄거나 하면 이후 공유기가 먹통이 될 수 있으므로 주의해야 합니다.
  6. 개발자 펌웨어 복구가 완료된 뒤 웹 브라우저에서 샤오미 순정 상태의 관리페이지 주소인 192.168.31.1로 접속하여 샤오미 순정 펌웨어로 사용하거나, 다시 SSH로 접속하여 OpenWrt 펌웨어를 덮어쓰는 작업을 하면 됩니다.

Breed가 설치된 상태에서 OpenWrt 설치

일단 현재 깔려 있는 펌웨어의 SSH 접속시 mtd 명령어가 설치되어 있어야 합니다.
(설치하기 전에는 몰랐는데 제가 전에 깔았던 padavan 펌웨어에는 mtd가 아니라 mtd_write라는 명령어로 대체 됐다고 하네요. 알았으면 Padavan에서 바로 OpenWrt를 깔았을텐데..)
어쨌든 찾아본 자료들에서는 순정 개발자 펌웨어로 복구한 뒤에 OpenWrt를 설치하라는 내용이 대부분이었으며, 저도 같은 방법으로 설치하였습니다.

우선 공유기 전원을 뽑고, 뾰족한 도구로 공유기 뒷면의 Reset 홀 안의 버튼을 누른 상태로 전원을 연결하여 Breed로 부팅합니다.
공유기가 Breed로 부팅되면 웹 브라우저에서 공유기의 192.168.1.1 주소로 접속한 뒤, 메뉴에서 固件更新을 선택하고, 固件항목에 다운받았던 개발자 펌웨어를 선택한 후 펌웨어를 업로드 하여 개발자 펌웨어를 올려줍니다.

SSH에 접속한 후 아래 명령어를 입력하여 OpenWrt 펌웨어를 설치합니다.
mtd write /펌웨어파일 경로/openwrt-19.07.2-ramips-mt7621-mir3g-squashfs-kernel1.bin kernel1
mtd write /펌웨어파일 경로/openwrt-19.07.2-ramips-mt7621-mir3g-squashfs-rootfs0.bin rootfs0
reboot
재부팅 명령어로 공유기가 자동으로 재부팅이 되지만 정상적으로 부팅되지 않을겁니다.
본 포스팅 위에서 설명한 것처럼 부트로더가 Breed로 변경된 상태이므로 펌웨어 파일은 정상적으로 설치된 상태이더라도 부팅이 제대로 이루어 지지 않습니다.

제대로 부팅 될 수 있도록 수정하기 위해서 다시 Breed로 부팅합니다.
부팅 후 아래와 같이 환경변수에 xiaomi.r3g.bootfw 변수명을 입력하고 값으로 2를 입력한 뒤 保存 버튼을 눌러서 저장하고, 重启 메뉴를 선택하여 재부팅합니다.

Breed 환경 변수 추가

앞에서 설명한 것과 같이 혹시 OpenWrt 사용이 어렵거나 설정을 잘못해서 공유기 접속이 안되는 등의 문제로 순정 펌웨어로 복구하고자 하는 경우는 아래와 같이 진행합니다.
  1. Breed로 부팅하여 위에서 설명한 방법으로 개발자 펌웨어를 설치합니다.
  2. 环境变量编辑 메뉴에서 xiaomi.r3g.bootfw 항목을 삭제(删除)합니다.
  3. 재부팅합니다.

OpenWRT 초기 설정

OpenWRT가 설치되고 처음 192.168.1.1 관리 주소로 접속하면 아래와 같이 표시됩니다.
초기 화면
화면 하단에 설치한 OenWrt버전이 표시됩니다.
처음에는 Root 관리자의 암호가 정해져 있지 않으므로 Password란을 비워두고 그냥 Login 버튼을 눌러서 관리자로 로그인합니다.

관리자 암호가 없기 때문에 계속 노란색 경고가 표시됩니다. 

공유기 상태
Go to password configuration... 버튼을 누르거나 메뉴에서 System -> Administration 항목을 선택한 뒤 root 관리자 암호를 설정해 줍니다.

OpenWrt 네트워크 설정

OpenWrt로 기본적으로 공유기이기 때문에 기본 네트워크 인터페이스 설정은 되어 있습니다.
인터넷 모뎀에 직접 연결하여 사용하는 경우 초기 설정된 상태에서 모뎀에서 나오는 인터넷 라인을 Wan 포트에 연결하고, 하위 기기들을 Lan 포트에 연결하면 됩니다.
그런데 샤오기 공유기 3G의 경우는 Lan 포트가 2개 밖에 되지 않기 때문에 이 1대만으로 네트워크를 구성하는 경우는 많지 않을 것으로 생각됩니다.

본인의 집이나 회사 등에서 1대 이상의 공유기로 네트워크가 구성되어 있는 경우 메뉴에서 Network->Interfaces 항목에서 네트워크 구성을 해주어야 합니다.
네트워크 구성 메뉴
Lan 이나 Wan 포트 관련 설정을 해주어야 하는 경우 Edit 버튼을 누른 뒤 표시되는 팝업메뉴에서 각 네트워크 인터페이스의 설정(DHCP 서버 사용 여부, 고정 아이피 대역, 서브넷 마스크, DNS 수동 설정 등)을 변경하고 Save 버튼을 누릅니다.
Save 버튼을 누르면 변경된 사항이 임시 저장소에 저장되며, 모든 설정을 완료한 후 페이지 하단의 Save & Apply 버튼을 누르면 실제 변경된 설정사항이 공유기에 반영됩니다.

설정 되돌리기 확인

OpenWrt는 일반 공유기보다 더 전문적인 네트워크 관련 설정들을 포함하고 있으므로 설정을 잘 이해하지 못하고 값을 변경했다가 공유기 관리페이지에 접근하지 못하는 경우가 발생할 수 있습니다. (제가 그래서 여러번 재설치를...)

Save & Apply 버튼을 눌러서 변경한 사항을 공유기에 적용하고 난 뒤 90초 내에 웹 브라우저 상의 관리 UI가 설정이 제대로 되었다는 결과 값을 반환받지 못하는 경우 위와 같이 값을 되돌리겠는냐는 팝업이 뜰 수 있습니다.
다시 한번 본인이 설정한 값을 재 검토하려면 흰색 Dismiss 버튼을 누른 뒤 설정을 검토하면 되고, 잘못된 값을 설정한 것으로 생각되어 변경했던 값들을 전부 다시 원래대로 복구하려면 파란색 Revert changes 버튼을 누르면 됩니다. 관리 UI는 반환값을 제대로 돌려받지 못했지만 설정한 값을 그대로 적용해야 하는 경우(예를 들어, 고정 아이피 대역 변경, 게이트웨이 변경 등으로 공유기와의 연결 자체가 초기화 되어 관리 UI가 반환값을 제대로 받을 수 밖에 없는 설정을 변경한 경우) 빨간색 Apply unchecked 버튼을 눌러서 변경사항을 강제 적용합니다.

Wifi 활성화

OpenWrt를 설치한 뒤 유선 인터페이스는 자동으로 기본 활성화되어 있지만 무선 인터페이스는 활성화 되어 있지 않습니다.
이를 활성화 하기 위해서 메뉴의 Network->Wireless 항목을 선택합니다.
무선 인터페이스 활성화
상단 항목이 2.4GHz 무선 인터페이스이고, 하단 항목이 5GHz 무선 인터페이스 항목입니다. Enable 버튼으로 활성화 해주고, Edit 버튼을 눌러 팝업으로 표시되는 항목에서 SSID 이름 및 연결 암호를 설정해 줍니다.
마찬가지로 제일 하단의 파란색 Save & Apply 버튼을 눌러 설정 사항을 적용해 줍니다.

펌웨어 마이너 버전 업그레이드

현재 설치한 OpenWrt 버전은 19.07.2입니다. OpenWrt 펌웨어가 이미 설치되어 있으므로 이미 다운로드 받아둔 19.07.3 버전은 공유기 관리페이지에서 직접 적용할 수 있습니다.
펌웨어 버전 업그레이드

메뉴 항목에서 System->Backup / Flash Firmware 항목을 선택하면 위와 같이 제일 하단에 업그레이드용 펌웨어를 지정해서 적용할 수 있는 항목이 있습니다.
미리 받아두었던 openwrt-19.07.3-ramips-mt7621-xiaomi_mir3g-squashfs-sysupgrade.bin 파일을 지정하고 업그레이드 하면 재부팅 후 새로운 버전이 적용된 것을 확인할 수 있습니다.

OpenWrt 기본 항목 한글화

OpenWrt가 공유기 커스텀 펌웨어로서는 상당히 유명한 Open Source 프로젝트로서 기본적인 펌웨어 외에 다양한 부가 기능들이 개발되는 것으로 알고 있습니다.
내용이 전문적이기도 하고 부가 기능들이 많아서 github의 Luci 사이트에 가보면 한글화가 전체의 7%만 되어 있다고 표시되네요.

OpenWrt 설정 관련 검색을 해보면 대부분의 내용이 영문으로 나오기 때문에 사실 한글화가 크게 중요하지는 않으나, 일반적인 설정 내용들은 한글화 되어 있는 것이 편하다고 생각되어서 저는 기본 항목들은 한글화 파일을 설치하여 적용하기로 했습니다.

소프트웨어 목록 업데이트
메뉴에서 System->Software항목을 선택하고, 상단에 있는 버튼 중에서 Update Lists...를 클릭하면 설치할 수 있는 소프트웨어 패키지 목록을 인터넷에서 업데이트 합니다.
목록이 업데이트 되면 하단의 Available 탭에서는 설치할 수 있는 패키지 목록, Installed는 이미 설치한 목록, Updates 탭에서는 이미 설치되어 있지만 업데이트할 수 있는 패키지 목록이 표시됩니다.

한국어 패키지 검색
Filter 란에 "한국어"라고 입력하고 Available 탭을 선택해보면 다양한 패키지의 한글 번역본이 표시됩니다. 표시되는 목록 중에서 luci-i18n-base-ko 항목의 Install 버튼을 클릭하면 선택한 패키지의 의존성 트리 및 각 의존성 패키지의 설치 여부가 표시되고 하단의 버튼을 눌러서 설치하면 설치 결과가 표시되고 페이지를 갱신하면 아래와 같이 한글로 표시가 되는 것을 확인할 수 있습니다.

한글화 설치 결과

다음에는 Wireguard 패키지를 설치하여 설정하는 법에 대해서 포스팅 하도록 하겠습니다.

댓글

이 블로그의 인기 게시물

OpenWrt 공유기에 Wireguard 설정하기

Cloudflare DNS 서비스를 통해 Let's Encrypt 인증서 발급 및 갱신 자동화하고 v2-ui에 http+tls 위장 적용하기