진짜 개발자
본문 바로가기

Application Knowhow/Server

ApplicationKnowhow/Server - 공인 IP없이 외부에서 접속 가능하게 만들기(Ngrok란?)

728x90
ngrok

이번 포스팅에서는, 로컬 컴퓨터에 public dns를 부여하여, 외부에서 접근할수 있게 만드는 Ngrok 의 사용방법에 대해 알아보도록 하겠습니다.

 

 

 

외부에서 로컬 PC에 접근해보기

ngrok에 대해서만 궁금하신 분은 이단원은 넘어가셔도 됩니다.

 

우선 외부에서 로컬 pc에 접근할수 있도록 하는 방법에 알아보기 이전 간단한 네트워크 개념들을 살펴보겠습니다. Ngrok를 알려드리기 위한 포스팅이므로, 네트워크에 대한 자세한 내용은 생략하며 설명드리겠습니다.

 

IP

ip는 간단히 말씀드려, Network에 연결된 각각의 Device들을 구분하기 위한 고유한 주소 같은 것입니다. 예를 들어 한국 사람들을 고유하게 구분하기위해, 주민등록 번호가 사용되듯이, 정보를 고유의 컴퓨터로 지정하여 수신 또는 발신하기위해 IP를 사용합니다.

 

이 IP는 전세계에 32bit로 만들수 있는 개수(약 42억개) 만큼 존재하는데요, 요즘 같이 네트워크에 연결되는 장비가 많은 시대에는 이미 고갈이 되어가고 있기 때문에, 이를 효율적으로 사용하기위한 여러가지 방법과, IPv6라는 새로운 프로토콜이 등장했습니다.

 

 

DNS

위에서 우리는 IP를 이용해 정보를 수신또는 발신한다고 했습니다. 그렇다면, 우리가 자주 사용하는 naver와 같은 곳에 접속시 사용되는 https://www.naver.com이러한 주소는 무엇일까요? 간단히 말씀드리자면, 이 또한 컴퓨터를 고유하게 구분할 수 있는 주소입니다. 이러한 주소는 DNS 서버에 의해서, 다시 IP로 바뀝니다.


터미널 창을 열고, nslookup www.google.com을 입력합니다. 하단에 보시면, www.google.com의 ip가 보입니다.

 

앞서 알아낸 IP를 주소창에 입력하면, 마치 https://www.google.com을 입력한것과 마찬가지로, 구글 홈페이지로 이동됩니다.

 

 

 

IP를 이용해 로컬 PC에 연결을 시도해보자

준비물은 두개의 서로다른 네트워크에 존재하는 컴퓨터입니다. 웹서버를 설치하실줄 아신다면, 조금 더 명확하게 테스트를 해볼 수 있겠지만, 그렇지 않아도 됩니다. ICMP 프로토콜을 이용하면 됩니다. 무엇인지 모르겠다구요? ping이라면 많이 들어보셨을 겁니다.

 

방법은 간단합니다. 우선 현재 사용중인 PC의 IP를 알아냅니다. (linux계열이라면, 터미널에서 ifconfig를, window계열이라면, ipconfig를 입력하면 됩니다.) 그림의 inet이라고 적혀있는 것이 IP입니다. (네트워크를 공부하신 분이라면, 결과가 뻔한 테스트이지만, 네트워크를 잘 모르시는 분들을 위해 계속 설명드리겠습니다.)

 

이제, 다른 네트워크에 존재하는 pc에서 (친구한테 부탁을 해도됩니다, PC방이라면 안됩니다. 같은 네트워크이기 때문에 저희가 가정한 환경과는 다른 환경입니다. 각자의 집에서 시도하세요 !) 방금 알아낸 주소를 알려주며, ping을 보내달라고 부탁합니다. 아마도 친구가 보내주는 화면은 위와 같을겁니다. 간단히 말씀드려, 통신이 실패했다는 의미입니다. 왜그럴까요?

 

성공하시는 분들도 계실텐데요, 아래에서 설명드리겠습니다.

 

 

사설 IP

사설 IP는 부족한 IP를 효율적으로 사용하고자, 등장한 개념인데요, 간단히 말씀드리자면, 외부에서 사설 IP로는 특별한 처리를 하지 않는다면, 접근이 불가능합니다. 바로, 앞서 실시한 테스트시 연결이 안되었던 이유가, 사설 IP였기 때문입니다.

 

반면에 사설IP에서 외부로 나가는 패킷은 ISP업체에서 설치한 공유기에의해서, 공인 IP로 바뀌어 전달되기 때문에 문제없이 전달이 됩니다. 이 덕분에 인터넷을 이용할 수 있는거죠,

 

A1.0.0.0 ~ 126.255.255.255 10.0.0.0 ~ 10.255.255.255
B127.0.0.0 ~ 191.255.255.255172.16.0.0 ~ 172.31.255.255
C192.0.0.0 ~ 223.255.255.255192.168.0.0 ~ 192.168.255.255

IP를 클래스라는 개념(생략하겠습니다)으로 나누었을때, 위와 같이 특정한 대역에 포함되는 IP들은 모두 사설 IP입니다. 반면 앞서서 테스트를 실시할때, 접속이 된 분들은 ISP업체(LG, KT..)로부터 공인IP를 할당 받았기 때문에 가능했던겁니다.

 

 

 

 

Ngrok로 외부에서 사설 IP를 사용중인 PC에 접근하기

앞선 문제로, 외부에서, 현재 사용중인 PC에 접근하기 위해서는, ISP업체에서 설치한 공유기에서, 포트포워딩을 해주던지, 아니면 공인 IP를 돈을주고 사야합니다. 하지만 Ngrok를 사용하신다면, 마치 공인 IP를 사용중인것 처럼 외부에서 로컬PC로 연결이 가능하게 해줍니다.

 

(mac을 기준으로 설명드립니다.)

 

1. 설치

 

 

2. 연결 작업

Http

만약 현재 PC에서 http서버가 구동중이라면, 위의 명령어를 입력하여 외부에서 접근가능한 public dns를 만들 수 있습니다.

 

앞선 명령어를 입력하면 위와같이 그림이 나타나는데요, http://dd3fba2a671.ngrok.io 라는 주소로 패킷을 받는다면, http://localhost:80 (localhost는 본인의 PC를 가리키는 IP를 의미합니다.)로 패킷을 전달해준다고 합니다. 즉, 터널링을 통해 외부에서 패킷을 받을 수 있도록 해주는것입니다.

 

성공적으로 접속이 되었습니다.