삽질일기

외부에서 local로 접속하기 (포트포워드)

키크니개발자 2022. 10. 25. 19:50

 

안녕하세요!

키크니 개발자 입니다. 🦒

 

toss 가상계좌 API를 연동하면서 생긴 문제에 대해서 작성해보려고 합니다.

웹훅 API를 구현한 후 토스페이먼츠 개발자센터에 가상계좌 웹훅 URL을 등록했음에도 불구하고 local PC로 웹훅 요청이 들어오지 않았습니다.

 

웹훅(Webhook)이란?

특정 이벤트가 발생하였을 때 타 서비스나 응용프로그램으로 알림을 보내는 기능입니다.

 

토스페이먼츠 API 문서를 확인해보니 아래와 같이 작성되어있었는데요.

 

여기서 방화벽 설정에서 웹훅 URL에 지정된 포트번호에 대한 인바운드 트래픽을 허용해주란말이 있었는데 이에대한 말이 이해가 되지 않았습니다.

 

그러다 옆에 계신 개발자분께서 설명해주셨는데,

외부 IP에서 내 컴퓨터로 접속하기 위해서는 반드시 필요한 과정중에 하나가 공유기 설정방법인 것을 알게 되었습니다.

 

공인IP: 인터넷 업체로부터 우리집으로 쏴주는 IP주소, 외부에서 접속하기 위한 실제 주소입니다.

사설IP: 공유기 내에서 새로이 주소를 만들어 뿌려주는 주소입니다.

포트: IP주소 뒤에 “:80”식으로 붙는 주소입니다. 하나의 IP로 여러 포트를 열어 각기 다른 접속을 할 수 있습니다.

예를들어 인터넷 업체로부터 뿌려주는 IP주소는 123.456.789.012 입니다.(공인 IP)
이 주소를 가지고 인터넷 공유기에서는 한 회선에 연결된 인터넷을 뿌려주기 시작합니다.
하지만 컴퓨터 한대당 IP가 필요한데, 인터넷 업체로부터 받은 IP는 하나이기 때문에공유기에서
자체적으로 IP를 만들어 냅니다.(사설 IP)

 

그리고 외부에서 local로 접속하기 위해서는 포트포워딩을 해야 한다는 것을 알게되었습니다.

 

포트포워딩이란?

공유기와 연결 된 PC(local)들은 192.168~로 시작하는 IP를 공유기로부터 부여받습니다.

하지만 공유기에 할당받은 IP는 local PC IP와 다른 IP(예를들어 61.43.52.108)를 갖게 됩니다.

집이 아닌 외부에서 192.168.~ 20번 포트에 접근하려면 먼저 61.43.52.108에 접속을 해야합니다.

그리고 20번 포트로 접근할 수 있게 설정해줍니다.

이를 포트포워딩이라고 합니다.

 

그러다 문득 포트는 왜 열어야 하는 것인가? 하고 궁금증이 생겨 더 찾아보니

 

컴퓨터에서 실행되는 클라우드 및 네트워크 앱은 특정 네트워크 포트 (또는 포트 집합)를 통해 통신하도록 설계되었습니다.
그리고 해당 연결의 다른 쪽 끝에있는 컴퓨터도 규정 된 포트를 통해 데이터를 보내고받습니다.

호스트는 네트워크에 연결된 모든 종류의 장치를 노드(Node)라고 부르는데,
노드 중에서도 네트워크 주소(IP 주소)가 할당된 애들을 호스트(Host)라고 부릅니다.
스마트폰이든 데스크톱이든 노트북이든 인터넷에 연결돼 있으면 다 호스트라고 보면 됩니다.
이 호스트들끼리 서로 데이터를 주고받습니다.

포트(Port)는, 네트워크를 통해 데이터를 주고받는 프로세스를 식별하기 위해 호스트 내부적으로 프로세스가 할당받는 고유한 값입니다.
기본적으로는 같은 호스트 내에서 서로 다른 프로세스가 같은 포트 넘버를 가질 수 없습니다.

 

그럼 포트포워딩은 어떻게 하는 것일까요?

 

1. 주소창에 192.168.0.1 를 입력하게 되면 아래와 같은 창이 뜹니다.

기본적으로는 아이디 : admin / 비밀번호 : password 입니다.

2. 왼쪽 메뉴탐색기에서 포트포워드 설정을 들어가  새규칙을 만들어줍니다. 

규칙은 아래에 작성해주면 됩니다. 

    • 아래 내부 IP주소는 자신의 노트북 아이피(local PC IP)를 입력합니다. 

  • local PC IP를 보려면 터미널에서 ipconfig getifaddr en0을 통해 확인이 가능합니다.
  • 외부포트는 어떻게 들어올지 몰라 1111~9999로 설정하였습니다.
  • 내부포트는 8080에 접속할 것이기 때문에 설정하였습니다.

위와 같이 설정한 후 웹훅 URL을 다시 설정해주니 요청이 잘 들어왔습니다. 

 

tosspayments개발자센터 > 웹훅 > 가상계좌 웹훅 URL > http://{외부IP}:8080/{내부 웹훅 URL path}

(외부IP를 알기 위해선 google에 외부IP라고 검색하면 IP를 알 수 있는 사이트가 많이 있습니다. 참고해주세요!)

 

 

 

 

 

References

https://docs.tosspayments.com/misc/faq

https://how2open.com/blog/windows-또는-mac-방화벽에서-포트를-여는-방법/

https://studyforus.tistory.com/27

https://blog.naver.com/myca11/221389847130

https://10000sukk.tistory.com/23

https://storytown.tistory.com/14

반응형