인터넷을 통해 사설 네트워크 내의 컴퓨터에 연결할 수 있게하는 것
IP 주소가 기기를 찾기위한 주소라면 포트는 해당 기기에서 프로세스를 식별하기 위한 숫자이다
00시 00로 00아파트 00호
처럼 주소가 있을때 아파트까지의 주소가 IP 주소, 호 번호를 포트로 생각할 수 있다
포트맵핑이라고 부르기도 한다. 이쪽이 조금 더 직관적인거 같다
외부 PC가 공인 IP와 포트 번호에 요청을 보낸다
라우터에 도달하면, 라우터는 포트 번호를 확인해 해당 요청을 어디에 보낼지 정한다
내부 PC가 요청을 받아 처리한다
=> 라우터가 내부 PC에 요청을 보내기 위해서는 포트포워딩 설정이 되어 있어야한다
=> 포트포워딩은 공인 IP 주소와 포트를 사설 IP 주소와 포트에 맵핑하여 내부 프로세스에 접근이 가능하게 한다
=> 라우터에 포트포워딩 설정이 되어있지 않다면, 라우터는 사설 네트워크 내의 많은 기기 중 어떤 기기에게 요청을 전달해야할지 알 수 없다
$ 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
로그인 후 포트 포워딩 설정으로 페이지로 이동한다
외부포트, 내부 IP 주소, 내부포트를 설정해 준다
$ sudo service nginx start
라우터를 설정한 페이지에서 현재 라우터의 공인 IP주소를 찾을 수 있다
외부에서 해당 IP주소와 설정한 포트로 요청을 보내면 요청을 내 컴퓨터에서 받아 처리할 수 있다
단 별도 고정 IP 관련 요금제를 사용중이 아니라면 라우터의 공인 IP는 주기적으로 바뀌기 때문에 주의해야한다. 이때문에 IP 변경을 추적하고 관리해주는 DDNS 같은 서비스들도 있다
위 포트포워딩 설정 단계에서 볼 수 있듯 외부포트와 내부포트는 다르게 설정할 수 있다
그 이유는 well known port의 경우 포트포워딩 되어있으면 공격 받을 위험이 있기 때문이다
예를 들어 ftp를 포트포워딩해 외부에서 접근 가능하게 한다면, 기본 설정 사용시 21 포트를 사용하게 될것이다. 하지만 이는 예측 가능한 포트로 위험할 수 있다. 24356번 포트 같이 무작위 외부 포트를 20번 내부포트에 맵핑하면 이런 위험을 줄일 수 있다.
포트포워딩을 해보니 오히려 더 많은 호기심이 생겼다. 다음 주제들로 공부해봐야겠다.
1) 웹 브라우징을 한다던가 게임을 한다던가하는 일반적으로 인터넷을 사용하는 상황에서, 라우터는 들어오는 응답을 어떻게 해당 컴퓨터로 전송할까?
2) AWS EC2에서 포트포워딩 설정을 해본적은 없는데 어떻게 설정없이 접속할 수 있을까? 별도 라우터 없이 각 인스턴스가 고유 IP 주소를 가지는걸까? IPv4는 개수가 부족한 걸로 알고있는데 어떻게 작동하는 건지 궁금하다
3) DDNS 서비스는 어떻게 작동하는 것일까