[네트워크] 포트 포워딩

Robert.Yang·2023년 6월 4일
1

Network

목록 보기
50/59
post-thumbnail

이 포스트는 널널한 개발자님 강의를 참조하며 작성하였습니다.

포트 포워딩

보통 NAT기술을 쓴다고 했을 때 공유기 안쪽을 보통 client가 있다고 가정한다. 그니까 외부에서 내부로 접속할 일은 고려하지 않는다는 것이다. 그런데 이런 경우도 고려해야 할 때가 있다보니까 이런걸 해결해야 할 노력이 있는데 그 중에 가장 기본적인게 NAT 테이블을 직접 수정하는 것이다. NAT 테이블 entry가 1개가 추가될려고 하면 기본적으로 Outbound에 의해서 자동으로 추가된다. 만약에 NAT 테이블을 직접 수정하게 해주면 어떻게 될까? 이부분이 중요한데 이런 걸 포트포워딩이라고 한다.

공유기 설정을 들어가보면 포트 포워드 설정이란 것이 있다. 여기를 가보면 규칙이라고 있는데 이 규칙을 자세히 보면 다음과 같다. Local IP가 있고 Local Port, External Port, Remote IP, Remote Port등이 있는데 여기서 Remote IP와 Remote Port가 ANY로 되어 있는걸 볼 수 있다. 즉, 이 방식은 Full Cone방ㅎ식과 비슷한데 중요한게 예를들어 보면 Local IP가 192.168.0.10:80으로 External Port 80에 매핑을 한다고 공유기에 직접 설정하면 어떻게 될까?

만약 내가 백엔드 공부와 프론트 공부를 열심히 해서 나만의 웹 서비스를 만들었다 가정하자. 그리고 80번 포트를 열어서 내 친구한테 192.168.0.10:80으로 접속해서 내 웹서비스를 확인해봐달라고 한다. 하지만 내 친구는 이 IP를 입력하면 절대 접속이 안될 것이다. 왜냐한면 이 주소는 사설주소이고 public 네트워크에서 절대 유통이 안되기 때문이다. 그래서 나는 접속이 안된다는 소식을 듣고 포트 포워드 설정에 들어가서 규칙을 집어 넣는다. External port가 80번으로 들어오면 remote IP, remote Port가 어떻든 무조건 192.168.0.10:80으로 포워딩 해달라는 규칙을 만들어 저장한다. 그리고 내 친구한데 NAT Gateway global IP인 3.3.3.3:80번으로 접속하라고 한다. 그러면 내 친구가 이 주소로 접속하면 공유기에는 웹서버가 없지만 80번 포트로 패킷이 날라오면 192.168.0.10:80 호스트로 포워딩을 해준다.

즉, Outbound에 의해서 자동으로 NAT Table에 추가를 할 것이냐 아니면 직접 수정해서 포트 포워딩을 할 것이냐를 설정해야 한다. 만약 포트 포워딩으로 결정하면 NAT방식이 Symmetric 방식이든 Cone방식이든 마치 Full Cone에서 한 것처럼 작동이 가능하다, 그러므로 P2P통신이 가능해진다. 하지만 문제가 있다. 게임을 예로 들면 게임 어느 방에 접속할때마다 이 설정을 해줘야 하는 문제가 있다. 그래서 고안한게 이 포트포워딩을 자동으로 해주는 방법이 없을까 하고 생각한게 UPnP이다.

profile
모든 것을 즐길 줄 아는 개발자, 양성빈입니다.

0개의 댓글