학기대체 인턴자리에서 열심히 코딩하다가 포트포워딩이라는 개념을 처음 접하게 되었다.
지금 이렇게 안 적어놓으면 무조건 까먹기 때문에 오늘 배운 사실을 적어보려고 한다.
그래서 갑자기 포트포워딩이 왜 나왔는데?
현재 진행중인 프로젝트의 구조를 대충 설명하면 다음과 같다.
난 오늘까지 기존 사무실에서 플러터 프레임워크를 이용해 프론트엔드 코드 작업 중이었다.
로컬에서 돌아가고 있는 백엔드 서버에서 API를 호출해 데이터를 받아오거나 줄 수 있다.
그리고 로컬 백엔드 서버는 사무실 A의 다른 PC에 있는 FTP 서버(테스트용 서버)로 부터 데이터를 가져온다.
자세하게는 설명할 수 없지만 간단히 설명하자면,
로컬 백엔드 서버에는 본인의 데이터를 저장한다고 보면 되고,
FTP 서버에 있는 데이터들은 여러 사용자가 올린 데이터인데, 다른 사용자가 올린 데이터를 보기 위해서는 FTP 서버로부터 데이터를 가져온다고 보면 된다.
물론 FTP 서버에 접속하기 위해서는 접속 정보가 필요하다.
host, username, password, port 등이 필요하다.
host: FTP서버가 돌아가고 있는 PC의 ip주소
username: taeyoon
password: haha
port: 21
이런 식으로 접속정보를 주면, 로컬 백엔드 서버에서 해당 접속 정보를 통해 FTP 서버에 접속할 수 있었다.
하지만, 오늘!
나만 덜렁 사무실을 옮겼다.
이런 구조가 된 것이다.
여기서 사무실이 나뉜게 핵심이 아니라, 사무실이 바뀌어서 다른 와이파이 공유기를 사용하게 되었다는 것이 핵심이다.
대표님께서 "사무실 옮겼으니까 내가 포트포워딩한 다음에 host랑 port 알려줄게" 라고 말씀하셨다.
난 포트포워딩을 왜 해야하지? 라는 생각이 들었고, 그냥 프로젝트를 진행하려는데, FTP 서버에 접근이 되지 않았다.
그게 오늘 포트포워딩에 대해 알아보려는 이유다.
포트 포워딩이란?
Port + Forwarding
포트 포워딩이란 내부 네트워크의 포트와 인터넷의 포트를 연결 시켜 서로 통신할 수 있도록 열어주는 것이다.
즉, 포트를 전달해주는 것이다. 아니 좀 더 명확하게는 포트를 열어주는 것이다.
근데 여기서 나는 의문점이 생겼다.
"아니 그냥 FTP 서버의 IP 주소로 접근하면 되는거 아냐?"
알아보니 절대 아니었다.
왜냐하면, 내가 사무실을 옮기기 전, 접속 정보 중 host에는 FTP 서버가 돌아가고 있는 PC의 IP주소가 들어간다고 말했다.
그런데, 여기서의 IP주소는 내부IP주소다.
즉, 공유기와 연결된 디바이스들에게 할당된 IP주소인데, 만약 디바이스들이 같은 공유기를 통해 인터넷을 사용하고 있다면 내부 IP주소 + 포트로 접근이 가능하다.
단, 내가 사무실을 옮겨서 이용하는 공유기가 바뀌었다면?
FTP서버는 공유기A를 통해 인터넷과 연결되고, 나는 공유기B를 통해 인터넷과 연결된다.
하지만 접속정보가 그대로라면, 나는 공유기B를 통해 공유기A의 내부 ip주소에 접근하려고 하는 것이다.
이러면 절대 접근이 불가능하다. 내부 IP 주소는 공유기 내부에서 사용하는 디바이스들끼리 공유하는 IP주소이기 때문이다.
그러므로 내가 기존 FTP 서버에 접근하려면 ISP를 통해 부여받은 공인 IP주소를 알아야하고, 추가로 포트까지 알아낸다면, 다른 공유기를 사용하더라도 기존 FTP 서버에 접근할 수 있다.
위 설명만 보면 헷갈릴 수 있으니 직접 실습해보면서 알아보자!
준비물은 노트북, 폰만 있으면 된다!
1. 그냥 내 집 와이파이를 통해 로컬 서버를 올려본다.
localhost:8080, 즉 ip주소는 127.0.0.1이고, 포트는 8080번이다.
2. 포트 포워딩(외부에서 연결할 수 있도록 포트를 열어주는 것)을 위해 현재 외부 IP주소를 확인한다.
3. 포트포워드 설정을 통해 외부에서 접속할 수 있도록 해준다.
여기서 나는 외부 포트는 5000번으로 지정해줬다.
그리고 지금 내부에서 localhost:8080으로 서버를 올렸으니 내부 포트는 8080으로 지정해줬다.
4. 외부 IP 주소 + port를 통해 연결해보자!
다른 인터넷을 사용하고 있는 내 폰을 통해서 "외부 IP 주소:5000"에 접속해봤다.
접속이 잘 된다.
물론 보안 문제가 있을 수 있으므로 실습이 끝나고는 포트포워드 설정을 삭제해주자.
참고링크
[공유기] 포트포워딩 설정하기 [펌]
[공유기] 포트포워딩 설정하기 [펌] OctoPrint 세팅 2 - OctoPi 설치 및 WiFi 연결 설정 OctoPrint 를 운영하기 위해서는 OctoPi 라는 별도의 운영 체제가 필요합니다. 이것을 라즈베리 파이에... seoulworkshop
solbel.tistory.com
포트포워딩이란? 내부 ip / 외부 ip란? 포트포워딩 하는법 (port forwarding, 샤오미 공유기, jupyter server
포트포워딩이란 ? -> 포트 포워딩한 IP주소로 다른 네트워크기기의 외부 접속을 가능하게 해준다. 공유기를 사용하는 사람들의 경우, 내 피씨를 서버로 운영하려면 포트 포워딩을 필수로 해야 한
etloveguitar.tistory.com