ngrok란 게 있네 이게 뭘까?...

세상에 태어나서 뭣도 모를 시절을 빼면 지금까지 쭈욱 컴퓨터를 앞에 두고, 차고, 주머니에 넣고, 입고, 타고 다니면서 늘 살아왔는데, 생전 처음보는 이름의 언어라든가 소프트웨어를 마주할 때마다 뭔가 세상의 흐름에 뒷쳐진 느낌을 받는 것은 시간이 흘러도 여전하다.

그런 걸로 따지자면 사실 컴퓨터에 아예 관심이 없는 내 주변사람들은 진작에 우울증에 빠졌어야 맞겠지만 직업병도 아니고 취미도 아니고 그냥 오래도록 같이하다보니 ‘컴퓨터 = 생명 = 인생’으로 여기면서 살게 되다보니 이렇게 되어버린 거다.

어쨌든 ngrok란 게 무엇인지 좀 알아보자.

일단 아래를 보자. 일단 어디서든 package manager로 간단히 설치는 되는데 source code가 풀려서 패키지에 맞게 빌드된 것이 이렇게 설치되는 게 아니라 업체에서 빌드한 바이너리를 가져오는 것으로 보여진다.

ngrok - tunnel local ports to public URLs and inspect traffic

USAGE:
  ngrok [command] [flags]

AUTHOR:
  ngrok - <support@ngrok.com>

COMMANDS: 
  config          update or migrate ngrok's configuration file
  http            start an HTTP tunnel
  tcp             start a TCP tunnel
  tunnel          start a tunnel for use with a tunnel-group backend

EXAMPLES: 
  ngrok http 80                                                 # secure public URL for port 80 web server
  ngrok http --domain baz.ngrok.dev 8080                        # port 8080 available at baz.ngrok.dev
  ngrok tcp 22                                                  # tunnel arbitrary TCP traffic to port 22
  ngrok http 80 --oauth=google --oauth-allow-email=foo@foo.com  # secure your app with oauth

Paid Features: 
  ngrok http 80 --domain mydomain.com                           # run ngrok with your own custom domain
  ngrok http 80 --allow-cidr 2600:8c00::a03c:91ee:fe69:9695/32  # run ngrok with IP policy restrictions
  Upgrade your account at https://dashboard.ngrok.com/billing/subscription to access paid features

Upgrade your account at https://dashboard.ngrok.com/billing/subscription to access paid features

Flags:
  -h, --help      help for ngrok

Use "ngrok [command] --help" for more information about a command.

내용을 보면 로컬포트를 퍼블릭 URL로 터널링 해주고 traffic을 들여다(?)볼 수 있는 기능이 있는 듯 하다. 공개로 풀렸지만 paid feature들이 있는 것으로 나온다. 요샌 이런 식으로 소프트웨어 장사를 하는 것 같다. 꼭 필요한 기능이란 걸 쓰다보면 알게 되고 그러면 어쩔 수 없이 구독하게 만드는 식으로. 대충 보니 이 회사가 샌프란시스코를 거점으로 하고 있다니까 회사 자체를 유지하는 데도 많은 돈이 들겠지 싶어 일단 그런가 보다 하고 넘어가자.

나는 샌프란시스코와 대충 차로 1시간 거리로 떨어진 곳에 살고 있지만 이곳도 물가가 비싸고 엄청난 세금에 인플레이션에 죽겠다 죽겠다 하지만 샌프란시스코는 더 할 거라고 본다. 이곳 직원들이 옛날처럼 매일 매일 출퇴근 하진 않을 거고 대개는 리모트로 일을 할텐데 적어도 이 회사에 어쩌다 한번씩 얼굴 비출 수 있으려면 마찬가지로 엄청난 물가의 bayarea를 벗어나서 살긴 힘들테니까. 이 살인적인 물가와 주거 비용은 이미 살기 좋다는 Southern California에도 비슷하게 퍼져나가서 bayarea나 Orange county나 San Diego county나 다 점점 더 살기 퍽퍽해지는 것으로 들리고 있다.

그러면 ‘언제 살기 좋은 적이 있었냐?’ 하면 할 말이 없다. 다 지나고 보면 ‘그 때가 젤 살기 좋았지’ 하는 게 인생 아닌가? 90년대가 되고 보면 80년대가 살기 좋았고(?), 2000년대가 되면 90년대가 좋았던 것 같고. 그렇다. 이런 푸념은 집어치우자. 지금 이 순간이 내 인생에서 가장 행복한 때다.

삼천포로 빠졌는데 다시 돌아오자면 로컬 포트를 외부로 터널링하는 거다. ssh에서 reverse tunnel을 뚫는 것과 비슷하다고도 스스로 이야기 하는 걸로 봐선 뭐 큰 차이가 있겠냐 하지만, 터널을 tcp로 뚫을 수도 있고 http로 뚫을 수도 있다.

쉬운 예로 내 로컬 포트 80을 http로 특정 public URL로 뚫겠다 하면 아래와 같이 하면 된다. 쉽게 말해서 내 로컬 포트 80을 이용하면 www.daum.net으로 접속이 되는 거다.

ngrok http 80 --domain www.daum.net

그런데 app을 사용할 때 사용자등록이 안되어있다고 에러를 낸다. http로 자기네 회사에 접속해서 signup이 되어있는지 확인하고 막 그런다. utility의 많은 부분은 이렇게 사용자를 확인하고 유료 기능을 사용하는지 여부를 확인하는데 쓰여지고 있을 것이다. 보나마나. 그렇다. 이런 앱은 일단 지우고 시작하자. 같은 일은 몇 가지 유틸을 조합해서 하면 된다.

결론: 쓰지 말자. 이런 기능 없어도 그만. 짜증나면 30분안에 만들 수도 있다. 고작 이런 기능을 만들어놓고 낚시질을??