
Ngork이란?
ngrok은 외부에서 로컬환경에 접속 가능하게 하는 터널 프로그램 입니다.
내부환경에서 작업 중인 서버등을 안전한 터널을 통해 외부에서 접근하려고 할 때 쓰면 유용한 터널링 프로그램입니다.
Ngork 설명
NGROK은 MAC, 윈도우, 리눅스등 다양한 OS를 지원합니다.

플랜에 따라 다양한 추가 기능을 지원하며 간단하게 테스트하는 용도로 사용하기에는 무료 요금제도 충분합니다.
(비상업적 사용시 무료)
- HTTP/TCP tunnels on random URLs
- 1 online ngrok process
- 4 tunnels / ngrok process
- 40 connections / minute
Ngork 설치하기
리눅스 환경에서 Ngork을 설치하였습니다.Apt 또는 Snap등 원하는 방법으로 설치할 수 있습니다.

Ngork Authtoken 등록하기
authtoken 등록하지 않고 사용하는 경우 기본 8시간 동안 세션이 유지되며 이후 세션은 만료됩니다.
세션 만료시 ngrok을 재 실행 & 갱신을 해야하며 갱신 간 접속 URL이 바뀌게 되어
바뀐 URL로 다시 접속해야하는 불편함이 있습니다.
세션 제한없이 사용하기 위해서 authtoken 을 등록합니다.
authtoken을 복사하여 Ubuntu Shell 환경에서 붙여넣기를 하면 적용이 완료됩니다.
Ngork 외부에서 접속하기
테스트 환경정보
• Ubuntu 22.04 Minimal / 10.50.151.162
ngork 웹 서버 접속 테스트 용 apache Install
# apt-get install apache2
외부 접속 용 터널 생성
# ngrok http 80

Forwarding 주소에서 제공하는 주소로 접근
https://644e-221-147-80-141.ngrok-free.app
접속 시 사내 서버인 10.50.151.162 주소로 접속이 됩니다.


Ngork 터널 여러개를 일괄 구성하기
여러개의 서버에 터널을 구성하려면 ngrok.yml 설정을 수정하여 여러개의 세션을 관리 할 수 있습니다.
Haproxy를 사용하여 서버 두개의 특정 포트와 매핑.
# ngrok config check ## 해당 명령시 ngrok.yml 위치 출력
Valid configuration file at /root/snap/ngrok/108/.config/ngrok/ngrok.yml
# vim /snap/ngrok/108/.config/ngrok/ngrok.yml ## ngrok.yml 수정
내부서버 연동을 위한 yml 파일 수정
version: "2"
authtoken: 2SgsqUWk1pSuBod9BMDgePAwoEI_2PUfC6qeUUf3UTYR7xFak
region: us
tunnels:
tets1:
addr: 9999 ##LB서버 9999 Port <> 01서버의 443 Port
proto: tcp
test2:
addr: 10000 ##LB서버 10000 Port <> 02서버의 8443 Port
proto: tcp
yml 구성 후 ngrok 실행
# ngrok start --all

두개의 세션이 Forwarding 된것을 확인했습니다.
- 2.tcp.ngrok.io:15525 → localhost:9999 (10.50.151.162:9999)
- 8.tcp.ngrok.io:18454 → localhost:10000 (10.50.151.162:10000)
Ngork 구성 한 서비스를 Haproxy에서 활용하기 (LB구성)
Ubuntu(10.50.151.162) 서버를 LB(Haproxy)로 활용하여 웹서버 두개를 구성하는 방식으로 진행.
# apt-get install haproxy
# vi /etc/haproxy/haproxy.cfg
Haproxy통한 Ubuntu(10.50.151.162) 서버 → 연결서버 바인딩
frontend AAA
bind :9999
default_backend AAA
mode http
backend AAA
balance roundrobin
option http-server-close
option forceclose
mode http
server backend_A01 10.50.151.152:443 check
server backend_A02 10.50.151.153:443 check
frontend BBB
bind :9999
default_backend BBB
mode http
backend BBB
balance roundrobin
option http-server-close
option forceclose
mode http
server backend_B01 10.50.151.162:443 check
server backend_B02 10.50.151.163:443 check
이런식 으로 LB서버에 Ngrok을 응용해서 사용할 수 있을수 있어 개발이나 테스트용도로 사용하기에 좋은 것 같습니다.
'IT 기술' 카테고리의 다른 글
ARP (Address Resolution Protocol) 구조 및 분석 (0) | 2021.10.05 |
---|