나 보려고 적은 메모에 가까우니 크게 참고하지 마세요. 특히 "이대로 따라해봤는데 안돼요" 같은 질문을 올리시면 보람이 없을 겁니다. 저도 답변을 못 드립니다. ㅜㅜ
여기서부터 Raspberry Pi Zero 2 W를 제로투라고 부르겠습니다. 아무래도 그렇죠? 달리 줄여 부를 이름이 있는 것도 아니잖습니까?
목표는 오프라인 무선 인트라넷이다. 심지어 RaspAP가 모범 사례로 소개하는 것이기도 하다.
이게 어려울 리가 없잖아...?
제로투는 5핀 USB 단자 2개, micro HDMI 단자 1개를 갖고 있다.
USB 젠더 및 디스플레이 케이블을 준비하자.
Raspberry Pi Imager를 사용해서 카드를 '플래시'한다.
ctrl+shift+x
를 눌러서 고급 설정을 열고 초기 세팅을 넣어준다.Enable SSH
: 반드시 체크하고 비밀번호 입력Configure wifi
: 반드시 체크한다.SSID
: 암호가 걸려 있고 공유기설정에 접근 가능한 와이파이 이름을 적는다.Password
: 그 비밀번호를 적는다.Wifi Country
: 지금 살고 있는 국가 코드를 선택한다. 아마도 KR.Set Locale Settings
: 체크해두면 편리하다.Time-Zone
: 지금 살고 있는 곳의 타임존을 넣는다. 아마도 Asia/Seoul.keyboard layout
: 지금 쓰려는 키보드의 레이아웃을 입력한다. 아마도 US.와이파이 설정을 여기서 미리 잡지 않으면, 모니터가 없을 때, 이 파이에서 무슨 일이 일어나는지 알 방법이 없다.
과감하게 WRITE를 누른다. 바쁘다면 VERIFY부터는 스킵해도 된다. '이제 카드를 빼도 됩니다'라는 말이 나오면 카드를 빼서 제로투에 꽂고 키보드를 연결하고 전원을 켠다.
모니터가 있다면 모니터에 연결해서 보고, 아니라면:
ssh pi@아이피
로 접속한다.다른 문서들을 보면, 이 단계는 보통 다음 두 줄만 설명하고 지나가더군.
sudo apt update && sudo apt upgrade -y
sudo reboot
그런데 여기서는 하나만 더 언급하려고 한다.
sudo reboot
갈기기 전에 sudo raspi-config
를 해주자. 1단계에서 세팅한 와이파이 비밀번호를, 평문으로 고쳐야 한다.
"아까 한걸 왜 또 해야 하지?" 싶을 텐데 이걸 해야 4단계에서 골탕을 먹지 않는다.
리부팅이 끝나면 설치를 수행할 수 있다.
curl -sL https://install.raspap.com | bash
생각보다 많은 것을 이것저것 물어본다. 그냥 주는 대로 다 설치하고 싶다면 (또는 이 짓거리를 너무 많이 해서 이 단계가 지겹다면) yes to all 옵션을 줄 수 있다.
curl -sL https://install.raspap.com | bash -s -- --yes
설치가 끝났다고 뜨는가? 리부트하지 말라. 아무것도 건드리지 마라. 잠시 멈추어서 심호흡을 하고 짧은 기도를 드린 다음 4단계로 이행하라.
이 짓거리를 왜 해야 하느냐면 얘가 제로투이기 때문이다. 공식문서에 따르면:
사용 사례
AP-STA 모드가 유용할 수 있는 많은 시나리오가 있습니다. 다음은 더 인기 있는 것 중 일부입니다.
- 무선 AP에 연결되지만 네트워크 및/또는 기타 서비스를 구성하기 위해 관리자 인터페이스가 필요한 장치.
제로투가 바로 여기에 해당한다. ethX
유선인터넷 장치가 물려 있는 기기(예컨대 일반 라즈베리 파이)라면 이딴 짓거리는 할 필요가 없이 다음 도식으로 네트워크를 구성하면 충분하다.
인터넷세계 ---> 내방와이파이 ---> [ 파이 wlan0 ---> eth0 ] ---> 다른기기
그런데 제로투에는 wlanX
장치만이 물려 있다. 그러니 이런 도식으로 작동해야(만) 한다.
인터넷세계 ---> 내방와이파이 ---> [ 제로투 wlan0 ---> uap0 ---> wlan0 ] ---> 다른기기
그래서, 선택 과목처럼 되어 있는 AP-Station 모드가 제로투에서는 필수이다.
아무튼 그러면 이제 3단계에서 계속 진행해 보자.
1. http://제로투의IP/
로 접속하고, admin
/secret
으로 로그인한다.
2. 대시보드를 잘 관찰하여 문제가 없음을 확인한다.
3. Wifi client 메뉴를 잘 관찰하여 문제가 없음을 확인한다.
raspi-config
를 건너뛴 바람에 암호화된 값이 저장되어서 그렇다. 축하한다 당신은 이 RaspAP 설정을 훌륭하게 조졌다. 리부팅을 하고나서부터는 문제의 와이파이에 접속이 안 될 것이다. 1단계부터 다시 하시길.4. 이 상태에서 좌측메뉴 Hotspot 눌러서 핫스팟 설정을 한다.
5. 다시 Hotspot > Advanced 진입하면, 아까까지만 해도 스위칭이 안 되던 "Wifi Client AP Mode" 옵션이 스위칭 가능하게 바뀌어 있을 것이다.
이 스위치를 켜고 저장한다.
6. 이제 핫스팟을 시작한다.
여기까지 하고 나면 raspi-webgui
라는 무선와이파이 AP가 하나 더 생긴다.
선택하고, 비밀번호 ChangeMe
를 입력한다.
이제 ssh pi@192.168.50.1
에 접속 가능할 것이다.
여기까지 하고 나면 이제 제로투는 재부팅을 해도 된다.
RaspAP는 dnsmasq, hostapd 등의 프로그램을 조작해 주는 GUI다. 지금까지 이해한 게 맞다면, 위 설치 절차는 이 글이 설명하는 것과 가장 흡사하다.
4단계까지 마친 제로투에 접속하는 기기는 인터넷이 안 된다. 제로투 자체는 인터넷이 되는데, 제로투에 붙은 기기에까지 인터넷이 분배되지는 않는 것처럼 보인다. 왜 이게 안 되지? 돼야 하는 거 아닌가? 이게 해결이 안 돼서 아직도 계속 재시도해보고 있다.
그게 되는 스크립트는 아직까지는 이것밖에 찾지 못했다. 급하신 분들은 이거 쓰시길. 이 스크립트를 잘 활용하자면 Web GUI를 개발해야 해서 귀찮아서 RaspAP 쓰려는 것인데 참...
이론상 4단계까지 하고 나면 그 다음에 도커를 올리는 것이 가능하다. iptables
설정만 잘 맞추면, 다음 도식으로 작동시킬 수 있다.
인터넷세계
↓
내방와이파이 다른기기
↓ ↑
[ 제로투 wlan0 ---> uap0 ---> wlan0 ]
[ ↕ ]
[ docker host ]
그래서 해봤고, 도커 자체는 잘 뜨는데... 문제는... 말도 못하게 느리다. 1GB CPU에 512MB 메모리라는 스펙이 확 와닿았다. 메모리 swap으로 해결이 안 되는 것 같고, Portainer를 포기해야 할 듯하다.