공유기 - 포트 포워딩

포트와 프로토콜에 대해 조금은 이해가 되시나요?
그렇다면 이제 이게 공유기와 무슨 상관 관계가 있는지 살펴볼 차례에요. 이전에 봤던 그림을 다시 가져와 볼게요.

graph BT;
  Router[📶 공유기] --> I[🌐 인터넷];
  Phone[📱 스마트폰] --> Router;
  Computer[🖳 컴퓨터] --> Router;
  Server[🖥 서버] --> Router;

공유기는 공인 IP를 할당받아 인터넷 세상과 직접 연결되어 있는 유일한 컴퓨터에요. 그래서 공인 IP 에 대한 모든 포트와 프로토콜의 요청까지도 오로지 공유기만 받을 수 있어요.

여기서 다시 한번 우리의 목적을 상기시켜 볼게요. 인터넷에 내 서버를 공개하려면, 공인 IP로 요청했을 때 네트워크 요청이 내 서버로 전달돼야 한다고 했었죠? 하지만 공유기가 모든 요청을 낚아채고 있으니 지금 상태로는 제 서버를 인터넷에서 접속할 수 없게 돼요.

하지만 다행스럽게도, 대부분의 공유기는 외부에서 들어온 특정 포트의 네트워크 요청을 내부의 다른 컴퓨터로 전달하는 기능을 가지고 있어요. 이것을 포트를 전달한다는 의미를 가진 포트 포워딩이라 불러요.

이제부터는 서버에 간단한 웹 서버를 생성하고, 포트 포워딩을 통해 공인 IP에 대한 요청을 서버로 전달하는 과정을 실습해 볼게요.


웹 서버 설치하기

실습을 해보기 전에, 우선 인터넷에 공개할 서버 소프트웨어가 하나 필요해요. 먼저 다음의 명령어를 통해 소프트웨어를 하나 설치해 주세요.

sudo apt install nginx

nginx 는 널리 사용되는 간편한 웹 서버 소프트웨어에요. 설치가 완료되었다면 브라우저에서 http://서버_사설_IP 를 입력해 들어가 주세요.

정상적으로 동작한다면 이와 같은 모습이 나올 거예요. 서버에서의 준비는 이걸로 끝이에요.


포트 포워딩 설정하기

이제 공인 IP에 대한 요청을 서버로 전달할 차례에요. 공유기 관리 화면에서 Port Forwarding라 써있는 메뉴를 찾아 들어가 주세요. 만약 iptime 공유기라면 Nat/Routing - Port Forwarding 경로로 들어갈 수 있어요.

이곳에서는 공유기의 외부(인터넷)에서 특정 포트에 대한 요청이 들어왔을 때, 그 요청을 공유기에 연결된 컴퓨터의 포트로 전달해 줄 수 있어요. 오른쪽 상단의 + 버튼을 선택해 주세요.

화면의 모양은 공유기마다 모두 다를 수 있지만 크게 4가지 입력 란이 있을 거예요.

  • 프로토콜: TCP로 지정
  • 외부 포트: 80
  • 내부 사설 IP: 80
  • 내부 사설 IP의 포트: DHCP에서 고정한 서버의 사설 IP

여기서 내부의 사설 IP만 각자의 서버 컴퓨터의 주소를 입력하고 나머지는 위와 동일하게 입력해 주세요. 이는 공유기 외부(인터넷)에서 80 포트에 대한 요청이 들어온 경우, 이를 서버의 80 포트로 전달하겠다는 것을 의미해요.

적용이 완료된 모습은 위와 같아요.


접속 확인하기

이제는 공유기의 공인 IP로 접속했을 때 동일한 nginx 페이지가 나오는 지 확인할 차례에요. 공인 IP도 공유기의 설정 페이지에서 확인할 수 있어요. iptime 공유기라면 Network - Internet Setup - WAN IP 경로를 확인해 보세요.

이곳에 나와 있는 WAN IP가 공인 IP 주소를 의미해요. 이를 복사해서 브라우저를 열고 http://공인_IP로 접속해 보세요.

공인 IP는 인터넷에서 우리 집의 주소를 의미해요.
특별한 목적이 없다면 외부에 공개하지 않는 것을 권해드려요.

사설 IP로 접근했던 것처럼 나온다면 잘 동작하고 있는 거예요.

축하드려요 :partying_face: 이제 여러분은 정말로 자신의 서버를 인터넷 세상에 공개한 거예요. 이번에는 다른 인터넷 환경(스마트폰 데이터)에서도 잘 접속되는지 확인해 보세요. 아마 전세계 어디에서든 문제없이 잘 접속될 거예요.