이전 게시글에서 라즈베리파이에 라즈비안 OS를 설치하고 SSH를 이용해 접속했다.
하지만 아직 해결되지 않은 문제가 있는데, 장차 이 머신을 이용해 프로젝트를 배포하기 위해서는 외부 네트워크에서 이 머신을 접속할 수 있어야한다.
하지만 아직 내부망, 즉 같은 와이파이를 사용하는 환경에서만 접속할 수 있다.
우선 라즈베리파이에 접속해 ifconfig 명령을 실행해보자.
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.35.185 netmask 255.255.255.0 broadcast 192.168.35.255
inet6 fe80::d90d:5e70:114:fc89 prefixlen 64 scopeid 0x20<link>
ether 2c:cf:67:9b:b2:6a txqueuelen 1000 (Ethernet)
RX packets 1347 bytes 202260 (197.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 360 bytes 58231 (56.8 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
여기서 inet이라고 써 있는 부분에 주목하자. 이 주소는 현재 라즈베리파이의 ipv4 주소이며, 이 주소를 이용해 라즈베리파이에 접속할 수 있다.
ssh <<유저이름>>@192.168.35.185
하지만 이 주소는 사설IP로, 내 공유기 안에서만 할당된 주소다. 다시 말해 내 공유기 내에서 즉, 같은 WIFI에 접속한 단말에서만 접속 가능하다. 외부에서 접속하기 위해서는 공인IP가 필요하며, 이를 위해포트포워딩을 진행해보겠다.
포트포워딩(Port Forwarding)이란 네트워크에서 외부(인터넷 등)에서 내부 네트워크의 특정 포트로 들어오는 요청을 전달해주는 기술이다. 인터넷에서 내부 네트워크는 보통 공유기 뒤에 있어서 바로 접속 불가하지만, 공유기가 포트포워딩을 통해 외부에서 들어오는 특정 포트 요청을 내부 IP와 포트로 연결해줌으로써 내부망의 단말에 접속할 수 있게 해준다.
포트포워딩을 설정해주기 위해서 공유기 관리자 페이지에 접속해야한다.
각 공유기 제조사별(sk, kt, lg, iptime 등) 페이지는 서로 상이하며, 우리집은 sk의 공유기를 사용해 192.169.35.1에 접속한다면 관리자 페이지를 볼 수 있다.

접속한다면 아이디와 비밀번호를 입력할 수 있는 칸이 있는데, 이것도 초기 아이디와 비밀번호는 제조사별로 다르므로 검색 후 로그인해주면 된다.
좌측 사이드바의 NAT/라우터 관리 탭의 포트포워드를 클릭한다면 아래와 같은 페이지를 볼 수 있다.

외부 포트 범위에 외부에서 접속하고자 하는 포트 범위를 입력해준다.
내부 IP 주소는 접속하고자 하는 단말의 주소를 입력해준다. 지금의 경우에는 라즈베라파이의 사설IP 주소를 입력해준다.
내부 포트는 접속하고자 하는 단말의 내부 포트를 입력해준다. 나는 SSH 접속을 원하니 22번 포트를 입력해준다.
프로토콜에는 접속하고자 하는 프로토콜을 선택할 수 있다. 나는 TCP/UDP를 둘 다 열어주겠다.
설명은 자유롭게 적어주면 된다.
termux 앱을 이용해 모바일 데이터로 SSH 접속을 해봤다. 아래 명령어를 통해 접속할 수 있다.
ssh <<유저이름>>@<<외부 접속 주소>> -p <<외부 포트>>

원활히 접속되는 모습이다.