MoreLean

로컬 환경에서 개발하기 - localtunnel 본문

TIP

로컬 환경에서 개발하기 - localtunnel

judeKim' 2022. 12. 19. 11:17
반응형

서버 개발자로서 로컬 개발 환경이 중요한데, 

과거에 Google AppEngine 환경에서 개발할 때를 벗어나서 로컬 개발 환경을 구축하고 개발을 하고 있다. 

이때 특정 개발 케이스에서 제대로 돌아가는지 테스트하기 위해서 외부에서 내 Local 환경으로 접속을 테스트해야 할 때가 있다. 

대표적인 케이스가 Slack Slash Commands를 연동 개발할 때다. 

회사에선 통계도 Slack을 통해서 확인할 수 있도록 간이 통계 기능을 만들어 두었는데, 

이럴 경우 서버를 띄워야지만 제대로 동작하는지 확인할 수 있었다. 

 하지만, 로컬에서도 서버를 띄워 제대로 동작하는지를 테스트할 수 있었고, 그 대표적인 것이 ngrok이었다. 

https://ngrok.com/

 

ngrok - Online in One Line

Zero Trust Add SSO, Mutual TLS, IP Policy, and webhook signature verification.

ngrok.com

다만, 2시간 동안만 세션이 유효하다. ( 무료로 사용 중이라서 그런 것은 아닌 것 같다. ) 

특별한 경우가 아니라면 이 2시간만 해도 테스트하는데 크게 어려움은 없었다. 

하지만, Slack 통계의 경우는 Slash Commands에서 접속해야 할 서버 주소를 설정하는데, 이 설정을 ngrok를 새로 띄울 때마다 수정해주어야 하는 것이 꽤 번거로웠고, 그래서 다른 대안을 찾다가 localtunnel을 찾게 되었다. 

https://theboroer.github.io/localtunnel-www/

 

Localtunnel ~ Expose yourself to the world

Localtunnel allows you to easily share a web service on your local development machine without messing with DNS and firewall settings. Localtunnel will assign you a unique publicly accessible url that will proxy all requests to your locally running webserv

theboroer.github.io

우선 세션에 대한 제약이 없다. 아예 없는 것은 아니지만, 적어도 오류가 나서 강제 종료되지 않는 이상 해당 주소를 사용할 수 있는 것으로 보인다. 

물론 재구동하면 주소가 바뀌기 때문에 유의해야 한다. 

Custom 도메인의 경우 목적성을 벗어나서 둘 다 ( ngrok, localtunnel ) 사용해보진 않았다. 

 

번외로 이 프로그램의 원리는 무엇일까 생각해봤다. 

과거 방화벽으로 막혀 있던 사내망에서 외부 서버에 접근하기 위해 SSL tunnel을 만들었던 기억이 있다. 

방화벽은 보통 in/out bound 모두 정해진 룰에 따라 차단을 해두는데, SSL 터널의 경우 암호화되어 어떤 사이트로 어떤 통신을 내부적으로 하는지 알 수 없다. 물론 SSL 터널의 서버가 막혀 있으면 답이 없지만, 신뢰할 수 있는 서버로 접근하여 사용한 탓에 막히진 않았었다. 

localtunnel 서버도 마찬가지로 신뢰할 수 있는 서버와 같은 맥락으로 접근하고, localtunnel 프로그램은 이 터널의 정보를 기록해두고, 자동으로 생성된 접속 주소에 접근 시 지금 맺은 접속 주소로 포워딩하는 기능이 있어 문제없이 접근할 수 있는 것으로 생각했다. 

정리하면, 

  • 노트북 -> 서버 ( local tunnel ) 접속
    • 접속 주소 정보(A) 생성 
  • AnyOne 이 A를 통해 접속 시 서버( local tunnel )에서 해당 SSL 터널링으로 Proxy 하여 접속

암튼 ngrok 의 2시간 제한으로 고생하시는 분들은 local tunnel을 추천한다.

반응형