RPI02w에 RaspAP 설치 삽질 이력

엽토군·2021년 12월 19일
0
post-thumbnail

일러두기

나 보려고 적은 메모에 가까우니 크게 참고하지 마세요. 특히 "이대로 따라해봤는데 안돼요" 같은 질문을 올리시면 보람이 없을 겁니다. 저도 답변을 못 드립니다. ㅜㅜ

여기서부터 Raspberry Pi Zero 2 W를 제로투라고 부르겠습니다. 아무래도 그렇죠? 달리 줄여 부를 이름이 있는 것도 아니잖습니까?

목표

목표는 오프라인 무선 인트라넷이다. 심지어 RaspAP가 모범 사례로 소개하는 것이기도 하다.

이게 어려울 리가 없잖아...?

1. 장비 및 OS 준비

제로투는 5핀 USB 단자 2개, micro HDMI 단자 1개를 갖고 있다.
USB 젠더 및 디스플레이 케이블을 준비하자.

  • 5 pin to USB 젠더가 없다면 하나 구해야 한다. 그래야 키보드를 꽂을 수 있을 것. (이론상 블루투스도 되긴 할텐데 안해봤다. 이글 정리 끝나면 다시 해봐야지.)
  • 갖고 있던 보조모니터를 쓰려고 보니 걔도 micro HDMI만 입력으로 받더군. 의외로 micro to micro 케이블이 잘 없다. 처음 이틀 동안 TV에 꽂아서 삽질한 뒤에야 (...) 초기에 와이파이를 잡아준 뒤 SSH로 붙는 방법을 깨우쳤다.

Raspberry Pi Imager를 사용해서 카드를 '플래시'한다.

  • OS는 Raspberry Pi OS (Others) → Lite (32-bit)
    • 풀 OS 깔면 저장공간 및 시간만 낭비다.
  • ctrl+shift+x를 눌러서 고급 설정을 열고 초기 세팅을 넣어준다.
    • Enable SSH: 반드시 체크하고 비밀번호 입력
    • Configure wifi: 반드시 체크한다.
      • SSID: 암호가 걸려 있고 공유기설정에 접근 가능한 와이파이 이름을 적는다.
      • Password: 그 비밀번호를 적는다.
      • Wifi Country: 지금 살고 있는 국가 코드를 선택한다. 아마도 KR.
    • Set Locale Settings: 체크해두면 편리하다.
      • Time-Zone: 지금 살고 있는 곳의 타임존을 넣는다. 아마도 Asia/Seoul.
      • keyboard layout: 지금 쓰려는 키보드의 레이아웃을 입력한다. 아마도 US.
    • 나머지: 네 멋대로 해라

와이파이 설정을 여기서 미리 잡지 않으면, 모니터가 없을 때, 이 파이에서 무슨 일이 일어나는지 알 방법이 없다.

과감하게 WRITE를 누른다. 바쁘다면 VERIFY부터는 스킵해도 된다. '이제 카드를 빼도 됩니다'라는 말이 나오면 카드를 빼서 제로투에 꽂고 키보드를 연결하고 전원을 켠다.

모니터가 있다면 모니터에 연결해서 보고, 아니라면:

  • 방금 입력한 와이파이를 같이 쓰고 있는 다른 장비를 켜서
  • 그 와이파이망에 할당된 제로투의 IP가 뭔지 알아낸 다음
  • ssh pi@아이피로 접속한다.

2. 초기 세팅

다른 문서들을 보면, 이 단계는 보통 다음 두 줄만 설명하고 지나가더군.

sudo apt update && sudo apt upgrade -y
sudo reboot

그런데 여기서는 하나만 더 언급하려고 한다.
sudo reboot 갈기기 전에 sudo raspi-config를 해주자. 1단계에서 세팅한 와이파이 비밀번호를, 평문으로 고쳐야 한다.

  • System Options > Wireless LAN
  • 1단계에서 입력한 와이파이를 그대로 입력해 준다.

"아까 한걸 왜 또 해야 하지?" 싶을 텐데 이걸 해야 4단계에서 골탕을 먹지 않는다.

3. RaspAP 설치

리부팅이 끝나면 설치를 수행할 수 있다.

curl -sL https://install.raspap.com | bash

생각보다 많은 것을 이것저것 물어본다. 그냥 주는 대로 다 설치하고 싶다면 (또는 이 짓거리를 너무 많이 해서 이 단계가 지겹다면) yes to all 옵션을 줄 수 있다.

curl -sL https://install.raspap.com | bash -s -- --yes

설치가 끝났다고 뜨는가? 리부트하지 말라. 아무것도 건드리지 마라. 잠시 멈추어서 심호흡을 하고 짧은 기도를 드린 다음 4단계로 이행하라.

4. AP-STA 모드 활성화

이 짓거리를 왜 해야 하느냐면 얘가 제로투이기 때문이다. 공식문서에 따르면:

사용 사례

AP-STA 모드가 유용할 수 있는 많은 시나리오가 있습니다. 다음은 더 인기 있는 것 중 일부입니다.

  • 무선 AP에 연결되지만 네트워크 및/또는 기타 서비스를 구성하기 위해 관리자 인터페이스가 필요한 장치.

제로투가 바로 여기에 해당한다. ethX 유선인터넷 장치가 물려 있는 기기(예컨대 일반 라즈베리 파이)라면 이딴 짓거리는 할 필요가 없이 다음 도식으로 네트워크를 구성하면 충분하다.

인터넷세계 ---> 내방와이파이 ---> [ 파이 wlan0 ---> eth0 ] ---> 다른기기

그런데 제로투에는 wlanX 장치만이 물려 있다. 그러니 이런 도식으로 작동해야(만) 한다.

인터넷세계 ---> 내방와이파이 ---> [ 제로투 wlan0 ---> uap0 ---> wlan0 ] ---> 다른기기

그래서, 선택 과목처럼 되어 있는 AP-Station 모드가 제로투에서는 필수이다.

아무튼 그러면 이제 3단계에서 계속 진행해 보자.

1. http://제로투의IP/로 접속하고, admin/secret으로 로그인한다.

2. 대시보드를 잘 관찰하여 문제가 없음을 확인한다.

  • Hotspot은 Down 상태로서 빨간불이 깜박일 것이다.
  • 아래쪽 'Wireless Client' 위젯은 XX%의 감도로 무선인터넷에 붙었다고 알려줄 것이다.

3. Wifi client 메뉴를 잘 관찰하여 문제가 없음을 확인한다.

  • 지금 접속한 와이파이가 Connected 라고 되어 있는 영역에 뜰 것이다.
  • 비밀번호는 내가 입력한 길이만큼 저장돼 있고 show 버튼을 눌러서 확인 가능할 것이다.
    비밀번호가 지나치게 길게 나온다면... 2단계의 raspi-config를 건너뛴 바람에 암호화된 값이 저장되어서 그렇다. 축하한다 당신은 이 RaspAP 설정을 훌륭하게 조졌다. 리부팅을 하고나서부터는 문제의 와이파이에 접속이 안 될 것이다. 1단계부터 다시 하시길.

4. 이 상태에서 좌측메뉴 Hotspot 눌러서 핫스팟 설정을 한다.

  • Advanced > Country: 필수 설정. 1단계에서 설정한 것으로 맞춰주고 저장한다.
  • 나머지(와이파이 이름, 비밀번호 등): 바꿀 거면 지금 단계에서 바꿔야 한다. 문서가 그렇게 말하고 있다. 나중에 못 바꾸니까 지금 바꿀 것.

5. 다시 Hotspot > Advanced 진입하면, 아까까지만 해도 스위칭이 안 되던 "Wifi Client AP Mode" 옵션이 스위칭 가능하게 바뀌어 있을 것이다.
이 스위치를 켜고 저장한다.

6. 이제 핫스팟을 시작한다.

여기까지 하고 나면 raspi-webgui라는 무선와이파이 AP가 하나 더 생긴다.
선택하고, 비밀번호 ChangeMe를 입력한다.
이제 ssh pi@192.168.50.1에 접속 가능할 것이다.

여기까지 하고 나면 이제 제로투는 재부팅을 해도 된다.

5. 지금까지 알아낸 것 / 해야 하는 것

핵심 원리

RaspAP는 dnsmasq, hostapd 등의 프로그램을 조작해 주는 GUI다. 지금까지 이해한 게 맞다면, 위 설치 절차는 이 글이 설명하는 것과 가장 흡사하다.

인터넷이 안 된다?

4단계까지 마친 제로투에 접속하는 기기는 인터넷이 안 된다. 제로투 자체는 인터넷이 되는데, 제로투에 붙은 기기에까지 인터넷이 분배되지는 않는 것처럼 보인다. 왜 이게 안 되지? 돼야 하는 거 아닌가? 이게 해결이 안 돼서 아직도 계속 재시도해보고 있다.
그게 되는 스크립트는 아직까지는 이것밖에 찾지 못했다. 급하신 분들은 이거 쓰시길. 이 스크립트를 잘 활용하자면 Web GUI를 개발해야 해서 귀찮아서 RaspAP 쓰려는 것인데 참...

Docker는 (언제) (어떻게) 올릴 수 있나?

이론상 4단계까지 하고 나면 그 다음에 도커를 올리는 것이 가능하다. iptables 설정만 잘 맞추면, 다음 도식으로 작동시킬 수 있다.

인터넷세계
   ↓
내방와이파이                  다른기기
   ↓                           ↑
[ 제로투 wlan0 ---> uap0 ---> wlan0 ]
[                   ↕              ]
[            docker host           ]

그래서 해봤고, 도커 자체는 잘 뜨는데... 문제는... 말도 못하게 느리다. 1GB CPU에 512MB 메모리라는 스펙이 확 와닿았다. 메모리 swap으로 해결이 안 되는 것 같고, Portainer를 포기해야 할 듯하다.

profile
5년차 PHP 개발자입니다.

0개의 댓글