
NAT Tunnel: для простого обслуживания из-за NAT
Если у вас есть доступ к серверу с публичным IP-адресом и нефильтрованными портами, вы можете запустить сервер NAT Tunnel (NT) на сервере, а NT-клиент на вашей машине за NAT. Сервер требует 2 открытых порта: один для связи с NT-клиентом (--admin), другой для подключения обычных клиентов (--public: это порт, который вы хотите, чтобы ваши пользователи использовали).
NT-клиент открывает соединение с admin-ip/портом сервера. Как только сервер получает новое соединение, он сигнализирует NT-клиенту, который затем создает новое туннельное соединение с сервером, которое затем подключается к нужному сервису на стороне NT-клиента (--local)
Соединение между NT-клиентом и NT-сервером на admin-интерфейсе защищено общим секретом от несанкционированного использования. Злоумышленник, перехватывающий пакеты, может взломать секрет, если он недостаточно сложен. Рекомендуется не менее 10 случайных символов и цифр.
Пример: У вас есть HTTP-сервер, слушающий на локальной машине порт 80. Вы хотите сделать его доступным на публичном IP вашего облачного сервера/VPS и т.д. на порту 7000. Мы используем порт 8000 на облачном сервере для управляющего канала.
Сервер:
natsrv.py --mode server --secret s3cretP4ss --public 0.0.0.0:7000 --admin 0.0.0.0:8000
Клиент:
natsrv.py --mode client --secret s3cretP4ss --local localhost:80 --admin example.com:8000