포트포워딩

이상민·2021년 8월 12일
0
post-thumbnail

인터넷을 통해 사설 네트워크 내의 컴퓨터에 연결할 수 있게하는 것

1. 포트

  • IP 주소가 기기를 찾기위한 주소라면 포트는 해당 기기에서 프로세스를 식별하기 위한 숫자이다

  • 00시 00로 00아파트 00호처럼 주소가 있을때 아파트까지의 주소가 IP 주소, 호 번호를 포트로 생각할 수 있다


2. 포트포워딩을 통한 연결 과정

포트맵핑이라고 부르기도 한다. 이쪽이 조금 더 직관적인거 같다

  1. 외부 PC가 공인 IP와 포트 번호에 요청을 보낸다

  2. 라우터에 도달하면, 라우터는 포트 번호를 확인해 해당 요청을 어디에 보낼지 정한다

  3. 내부 PC가 요청을 받아 처리한다

=> 라우터가 내부 PC에 요청을 보내기 위해서는 포트포워딩 설정이 되어 있어야한다
=> 포트포워딩은 공인 IP 주소와 포트를 사설 IP 주소와 포트에 맵핑하여 내부 프로세스에 접근이 가능하게 한다
=> 라우터에 포트포워딩 설정이 되어있지 않다면, 라우터는 사설 네트워크 내의 많은 기기 중 어떤 기기에게 요청을 전달해야할지 알 수 없다


3 포트포워딩 설정하기

3-1. 사설 IP와 기본 게이트웨이 IP 구하기

  • 사설 IP : 개별적으로 구성한 네트워크의 IP. 범위는 아래와 같다

  • 기본 게이트웨이 IP : 서로 다른 네트워크를 이어주는 기기를 게이트웨이(주로 라우터)라고 한다. default gateway란 데이터가 네트워크를 나가거나 네트워크에 들어올때 가장 먼저 확인되는 게이트웨이이다
$ ip r
default via 172.30.1.254 dev wlo1 proto dhcp metric 600 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 
172.18.0.0/16 dev br-d315fbca153e proto kernel scope link src 172.18.0.1 linkdown 
172.30.1.0/24 dev wlo1 proto kernel scope link src 172.30.1.3 metric 600 
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 linkdown 

3-2. 기본 게이트웨어 IP로 포트포워딩 설정 접근

  • 기본 게이트웨어 IP 주소로 브라우저를 통해 접근하면 다음과 같은 화면이 나온다

  • 로그인 후 포트 포워딩 설정으로 페이지로 이동한다

  • 외부포트, 내부 IP 주소, 내부포트를 설정해 준다

3-3. NGINX 설치 및 실행

  • NGINX 설치 후 실행한다
$ sudo service nginx start
  • 실행이 되지 않는다면 다른 프로세스가 이미 기본 포트인 80을 사용하고 있기 때문이다. 포트 80은 well known port로 자주 사용되므로, NginX를 실행하려면 해당 포트를 사용중인 프로세스를 정지시키거나 NginX가 listen하는 포트를 바꿔줘야한다

3-4. 외부에서 접속

  • 라우터를 설정한 페이지에서 현재 라우터의 공인 IP주소를 찾을 수 있다

  • 외부에서 해당 IP주소와 설정한 포트로 요청을 보내면 요청을 내 컴퓨터에서 받아 처리할 수 있다

  • 단 별도 고정 IP 관련 요금제를 사용중이 아니라면 라우터의 공인 IP는 주기적으로 바뀌기 때문에 주의해야한다. 이때문에 IP 변경을 추적하고 관리해주는 DDNS 같은 서비스들도 있다


4. 내부 포트와 외부 포트를 다르게 설정하는 이유

  • 위 포트포워딩 설정 단계에서 볼 수 있듯 외부포트와 내부포트는 다르게 설정할 수 있다

  • 그 이유는 well known port의 경우 포트포워딩 되어있으면 공격 받을 위험이 있기 때문이다

  • 예를 들어 ftp를 포트포워딩해 외부에서 접근 가능하게 한다면, 기본 설정 사용시 21 포트를 사용하게 될것이다. 하지만 이는 예측 가능한 포트로 위험할 수 있다. 24356번 포트 같이 무작위 외부 포트를 20번 내부포트에 맵핑하면 이런 위험을 줄일 수 있다.


포트포워딩을 해보니 오히려 더 많은 호기심이 생겼다. 다음 주제들로 공부해봐야겠다.

1) 웹 브라우징을 한다던가 게임을 한다던가하는 일반적으로 인터넷을 사용하는 상황에서, 라우터는 들어오는 응답을 어떻게 해당 컴퓨터로 전송할까?

2) AWS EC2에서 포트포워딩 설정을 해본적은 없는데 어떻게 설정없이 접속할 수 있을까? 별도 라우터 없이 각 인스턴스가 고유 IP 주소를 가지는걸까? IPv4는 개수가 부족한 걸로 알고있는데 어떻게 작동하는 건지 궁금하다

3) DDNS 서비스는 어떻게 작동하는 것일까

profile
편하게 읽기 좋은 단위의 포스트를 추구하는 개발자입니다

0개의 댓글

관련 채용 정보