Ngrok

Configuração Inicial

Registrando chave

ngrok config add-authtoken <key>

Ao realizar o comando acima, irá salvar sua chave em /home/mysther/.config/ngrok/ngrok.yml.

Criando Túneis

Ao criar um túnel, será possíve acessar o seu host (mesmo em uma rede interna, como na empresa ou casa), em alguma porta (que pode ser escolhida) de forma externa. Em resumo, basta apenas ter internet para que possa acessar a sua máquina. Quando criar um túnel, verifique o valor de Forwarding, que indicará algo como https://741s54ded2a.ngrok.app -> http://localhost:8080. Isso significa que, quando acessar a URL externa https://741s54ded2a.ngrok.app, irá ser redirecionado para o seu localhost na porta 8080 (que obviamente estará rodando algum serviço/listener).

HTTP

Abrindo um túnel para que seja possível acessar http://localhost:8080 de forma externa.

ngrok http 8080

Por padrão o redirecionamento é feito para o localhost, porém é possível personalizar esse redirecionamento. Note que você pode até mesmo redirecionar para um site externo qualquer.

ngrok http localhost:8080
ngrok http site-externo.com.br:443

Configurando senha de acesso no Ngrok.

ngrok http http://localhost:8080 --basic-auth '<user>:<pass>'

Configurando ranges de IP que podem e não podem acessar o Ngrok

ngrok http 80 --cidr-allow 110.0.0.0/8 --cidr-allow 220.12.0.0/16 --cidr-deny 110.2.3.4/32

TCP

De forma semalhante ao HTTP, aqui iremos mudar o Protocolo e obviamente o motivo disso ser feito. Acima utilizamos para páginas web, já no TCP podemos trabalhar com SSH, RDP, Reverse Shell etc. Caso queira utilizar SSH, verifique nas configurações do próprio Ngrok para fazer isso.

Domínio Personalizado

Até então o ngrok está definindo aleatoriamente a URL externa. Temos dois modos de alterar isso, sendo a primeira, disponível na versão free do Ngrok. Note que só é possível alterar os subdomínios de .ngrok-free.app.

ngrok http 8080 --domain <qualquer-coisa>.ngrok-free.app

Segue abaixo um tabela com os Domínios que podemos utilizar

DOMÍNIO
DESCRIÇÃO

ngrok.app / ngrok.dev

Disponível para contas pagas

ngrok-free.app / ngrok-free.dev

Disponíível para contas gratuitas

ngrok.io

Descontinuado e disponível apenas para contas legadas

Já para definir uma URL personalizdas é preciso estar com a versão paga, ir painel administrativo do ngrok, adicionar um Dominio e então executar o comando abaixo. Para que isso dê certo, é preciso também ir no painel adminsitrativo do Domínio (por exemplo, o https://registro.br/) e configurar um registro DNS do tipo CNAME para o host do Ngrok.

ngrok http http://localhost:8080 --domain=<domain.com>
ngrok http 8080 --domain <domain.com>

Utilizando um Domínio personalizado, podemos utilizar o HTTP, porém não podemos utilizar o TCP.

Múltiplos Túneis

Edite o arquivo de configuração localizado em /home/mysther/.config/ngrok/ngrok.yml e deixe-o no padrão abaixo. Remova o campo domain caso esteja utilizando a versão free e altere os demais valores de acordo com sua necessidade.

version: "2"
authtoken: <token>
tunnels:
  <name-tunnel-1>:
    domain: <seu-dominio.com.br>
    addr: 8000
    proto: http
  <name-tunnel-2>:
    addr: 22
    proto: tcp

Agora execute com o comando abaixo para iniciar todos os tunéis de uma só vez

ngrok start --all

Caso quira executar somente um dos túneis, basta especificar o nome do túnel

ngrok start <name-tunnel-1>

Last updated