low energy blog
Проброс сервиса в интернет из сети без белого IP адреса
Apr 03, 2024Иногда требуется проборосить http-сервис, котроый выполняется в локальной сети без белого IP адреса, на внешний сервер. Можно городить VPN, а можно использовать Yggdrasil.
Yggdrasil — это новая экспериментальная компактная схема маршрутизации, разработанная для ячеистых сетей. Так написано на их сайте. Для нас важна пара фич, которые поставляются из коробки, а именно: e2e шифрование и адаптивная маршрутизация.
Какую схему можем применить:
- Устанавливаем yggdrasil на внешнем сервере, подключаем его к паре ближайших публичных узлов;
- Устанавливаем yggdrasil на сервисе внутри локальной сети и, также, подключем его к ближайшим публичным узлам;
- Убеждаемся, что маршрутизация между нашими серверами есть (можно просто попинговать адреса, которые отображаются командой
yggdrasilctl getSelf
); - Сервис во внутренней сети настраиваем, что он слушал ещё и yggdrasil-адрес;
- А на внешнем сервере просто используем nginx и включаем реверс-прокси вида:
location / { proxy_pass http://[IP-Yggdrasil]; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
- Всё.
Время отклика будет немного выше, чем если бы мы соединялись напрямую из локальной сети к серверу, но, используя Игдрасиль, мы улучшаем доступность сервиса, если какой-то VPN протокол начнут блокировать провайдеры. К тому же, нельзя будет отследить соединение из локальной сети к нашему внешнему серверу.
Добавлять несколько публичных пиров тоже рекомендую, потому что пиры, порой, отключаются или работают нестабильно. Двух-трёх будет достаточно.