Ngrok

Ngrok — это платформа, которая с помощью установленной утилиты, позволяет, организовать удалённый доступ на веб-сервер или какой-то другой сервис, запущенный ПК. Доступ организуется через созданный при запуске ngrok безопасный туннель. ПК, при этом, может находиться за NAT’ом, и не иметь статического IP адреса.

Совсем не обязательно тащить тестовый проект куда-то ещё, можно показать его заказчику прямо с локальной машины, или, например, с помощью Ngrok можно очень легко расшарить файлы лежащие на ПК.

Для начала, нам потребуется веб-сервер, запущенный на компьютере (конечно же, его нужно настроить при необходимости):

# dnf install nginx
# systemctl start nginx

И непосредственно сам Ngrok. Его можно запускать от обычного пользователя, и со включенным selinux:

$ mkdir ngrok
$ cd ngrok/
$ wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
$ unzip ngrok-stable-linux-amd64.zip
$ ./ngrok http 80

ngrok

Сразу после запуска, можно увидеть, что сервис создал временный поддомен вида abcde123.ngrok.io для организации доступа на ПК, а локально по адресу 127.0.0.1:4040, была запущена панель, в которой отображаются данные по удалённым подключениям к туннелю. Пробуем открыть домен abcde123.ngrok.io из любого места, и получаем доступ к настроенной на веб-сервере директории.

ngrok

При необходимости, мы можем указать регион, в котором будет запущен прокси:

$ ./ngrok http -region=eu 80

Или защитить запущенный туннель паролем для доступа:

$ ./ngrok http -auth="user:pa55w0rd" 80

В случае появления ошибки вида:

The connection to was successfully tunneled to your ngrok client, but the client failed to establish a connection to the local address localhost:80.

Стоит проверить, запущен ли веб-сервер локально, и работает ли он на 80 порте.

Полезно знать об Ngrok.

Авторизуемся. Если вы планируете использовать сервер часто, имеет смысл зарегистрироваться на ngrok.com, забрать со страницы настроек авторизации токен, и добавить его в локальный клиент с помощью команды:

$ ./ngrok authtoken 5vEpKbBvnjSrMqZIkYJLb_2sbNRQbxZm0PSo23X6QpQ

Токен будет записан в файл ~/.ngrok2/ngrok.yml и теперь, клиент при работе с сервисом будет авторизовываться на нём. Это позволит получить доступ к бесплатному тарифу, но с лимитами бОльшими, чем доступны не авторизованному пользователю. На платных тарифах имеются дополнительные возможности, делающие работу с сервисом удобной (резерв поддоменов, например), но в рамках данной заметки я рассматриваю только то, что пользователь может использовать без оплаты.

Проксируем на другие ПК в локальной сети. Совсем не обязательно держать веб-сервер на той же машине, где запускается Ngrok. Если сервис в локальной сети работает на отдельной машине, мы можем проксировать трафик туда:

$ ./ngrok http 192.168.1.25:8080

Работаем не только с веб-сервером. На самом деле мы можем настроить удалённый доступ к любому tcp сервису, запущенному на ПК. Например, если мы хотим получить доступ по SSH, то можем сделать вот так:

./ngrok tcp 22

При этом, от сервиса мы получим адрес вида tcp://0.tcp.ngrok.io:18211 -> localhost:22, и для доступа на ПК нам останется просто соединиться по SSH на хостнейм 0.tcp.ngrok.io и порт 18211. Любители поднимать игровые серверы могут поступать аналогично. Просто запускаете проксирование на нужный tcp порт, даёте координаты друзьям и приступаете к игре.

Заглядываем в документацию. Описанное в заметке — далеко не все возможности, так что всем заинтересовавшимся я настоятельно рекомендую заглянуть в документацию, где в очень доступной форме, с примерами команд, приведено описание всех возможностей данного сервиса и утилиты.

@SysadminNotes | https://sysadmin.pm

4 thoughts on “Ngrok

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *