Як створити безкоштовний тунель в інтернет для свого домашнього комп'ютера

Часто виявляється необхідним дати доступ з Інтернету до будь-яких портів свого комп'ютера, розташованого за NAT провайдера. Але популярний раніше сервіс ngrok став IMHO фактично непридатний в безкоштовній версії. Як же бути? Зробимо свій ngrok, розмістивши його на своїй же VPS-ке (так, Ваш сервер в Інтернеті необхідний, без нього ніяк). Опишу, як це вийшло у мене.

Як створити безкоштовний тунель в інтернет для свого домашнього комп'ютера

Отже, маємо VPS на Ubuntu Linux 14.04.1. Заходимо в консоль через SSH і діємо за списком.
1. Ставимо останні оновлення для системи.

2. Встановимо необхідні пакети.

система mercurial потрібно для збірки ngrok

3. Встановлюємо останню (1.8.3) версію мови Go (Golang) - ngrok написаний саме на ньому.

apt-get golang - так робити не потрібно, тому що не гарантується установка останньої версії мови

Примітка. Команди export вплинуть тільки на поточну сесію.

4. клонуємо вихідний код ngrok.

6. Генеруємо самоподпісанний SSL-сертифікат (необхідний, так як ngrok створює тунель через TLS).

5000 - термін дії сертифіката в днях (можна замінити, наприклад, на 10000)
domain.com - домен Вашої VPS

Копіюємо потрібні для компіляції файли в директорію assets:

7. Компілюємо сервер і клієнт для Linux.

Копіюємо отриманий файл сервера ngrokd з директорії bin в потрібну папку.

8. Компілюємо сервер (на всякий випадок)) і клієнт для 32-розрядної Windows.

(Для 64-бітової версії міняємо 386 на amd64).

Копіюємо файл клієнта ngrok.exe з VPS з папки bin / windows_386 на клієнтський (домашній) комп'ютер.

9. Копіюємо файли device.key, device.crt, device.csr в директорію, куди ми скопіювали здійсненний файл сервера ngrokd.

Встановлюємо необхідні атрибути файлу сервера:

Запускаємо сервер (наприклад, через утиліту screen).

domain.com - домен Вашої VPS
8080 - порт для HTTP-запитів
8081 - порт для HTTPS-запитів
(Порти, природно, повинні бути вільні)

Тиснемо CTRL + A + D для виходу з створеного «екрану».

10. Створюємо на клієнті (домашньому комп'ютері) файл конфігурації ngrok.cfg в тій же директорії, куди ми скопіювали ngrok.exe, з вмістом:

4443 - порт за замовчуванням, на якому сервер ngrok слухає запити (цей порт повинен бути відкритий на Вашій VPS)
domain.com - домен Вашої VPS
false - адже сертифікат самоподпісанний

domain.com - домен Вашої VPS

12. Запускаємо найпростіший Web-сервер на 80-му порту (HTTP) Вашого домашнього комп'ютера (наприклад, на Ruby c WEBRick).

13. Запускаємо на домашньому комп'ютері клієнт ngrok з висновком протоколу.

1 - бажаний субдомен для цього домашнього комп'ютера
80 - порт нашого Web-сервера, що виставляється в Інтернет

8080 - заданий на кроці 9 порт для HTTP-запитів
domain.com - домен Вашої VPS

Якщо Web-сервер не буде запущений, отримаємо повідомлення:

Ось такі справи! Сподіваюся, комусь стане в нагоді.

Схожі статті