목표
라즈베리파이를 이용해 Todo App을 인터넷에 공개한다.
기대 효과
해당 키워드들을 이해하고 다룰 수 있다.
1. 웹 서버
2. 포트포워딩
3. DB
시작하기
1. 라즈베리파이 OS 설정 및 설치
라즈베리파이4B (RAM 4G)를 이용했다.
저장소인 마이크로SD 카드에 Raspberry Pi OS를 설치했다.
Raspberry Pi OS는 리눅스 기반의 데비안을 이용해 만든 OS이다.
RAM이 4G이기 때문에, 32bit Raspberry Pi OS Full를 설치해주었다.
원래는 유선마우스, 키보드 또는 usb동글을 이용하는 마우스, 키보드를 라즈베리파이에 연결해서 초기설정을 해야한다.
하지만 블루투스 키보드, 마우스만 가지고 있다면 곤란하다. (상호작용을 할 수 없다.)
다행히 Imager에서 OS 설치 전 미리 초기 설정(UserID, hostname, 와이파이, ssh)을 할 수 있게 기능을 제공한다.
OS 설치 후 라즈베리파이에 전원을 연결하면 자동으로 와이파이에 연결되고, 같은 와이파이에 연결된 다른 컴퓨터에서 ssh 연결을 통해 원격 접속을 할 수 있다.
2. 라즈베리파이에 원격 접속
개인 노트북과 라즈베리파이를 같은 로컬 네트워크에 연결한다.
같은 네트워크에 있는지 확인하기 위해 라즈베리파이의 ip로 ping을 쏴볼 수 있다.
macOS는 ssh 연결을 내장하고 있기 때문에, ssh명령어로 바로 접속할 수 있다.
윈도우는 putty같은 프로그램을 이용하면 된다.
여담
ssh 연결이 안돼서 꽤나 고생했다.
문제 상황은 대충 이렇다.
- 맥북 -> 라즈베리파이로 ping, curl, ssh 등 모든 로컬 네트워크 통신이 실패 -> tcpdump로 확인했을때 나가는 패킷이 찍히지 않음
- 근데 8.8.8.8으로는 ping 잘 됨 (외부 인터넷에 ping) -> 이건 패킷 찍힘 ... ???
- 반대로 라즈베리파이 → 맥북은 ping 성공
- tcpdump로 확인했을때 맥북으로 부터 들어오는 패킷이 찍히지 않음
해결을 위해 가설을 몇 개 세워봤다.
1. 공유기 문제일 것이다.
2. 방화벽 문제일 것이다. (맥 또는 라즈베리파이의)
먼저 1. 공유기 문제라고 생각하고, 게이트웨이 주소로 설정 페이지에 들어가서 인바운드나 아웃바운드 규칙이 있는지 확인했으나 딱히 그런 설정은 보이지 않았다.
이후 혹시 잘 모르는 보안 설정이 있을까봐 맥북과 라즈베리파이를 아이폰 핫스팟에 연결해서 시도해봤으나 소용없었다.
다음 2. 방화벽 문제인지도 확인해봤으나 두 엔드포인트 모두 방화벽 설정은 되어있지 않았다.
혹시 와이파이 5G 문제인가 싶어 2.4G로 바꾸기도 하고, OS도 몇 번이나 재설치 했으나 결과는 똑같았다.
그렇게 거의 7~8시간을 삽질한 결과...
-> macOS의 개인정보 보호 및 보안 > 로컬 네트워크 > iTerm 설정이 문제였다.
iTerm의 로컬네트워킹을 허용하니 바로 ping이 잘 되더라...
macOS에서 외부 인터넷으로는 ping이 되는데 로컬로는 ping이 안되서 되게 이상했는데, 참 허무하다.
다음은 라즈베리파이에 웹 서버를 설치해보자.