Вопрос или проблема
Я безуспешно пытался получить доступ к своей системе из интернета, регистрируя динамический DNS в No-IP, настраивая переадресацию портов на своем роутере TP-Link и т.д. Дополнительную информацию можно найти здесь.
Но без всех этих головных болей я смог получить доступ к Apache httpd, запущенному на моей системе, с помощью ngrok, используя одну команду,
ngrok http http://localhost:8080
И я могу получить доступ к этому по следующему URL (URL может не работать, если я остановлю сеанс терминала, но я снова могу получить новый URL, запустив ту же команду).
https://ce41-103-228-222-115.ngrok-free.app
Теперь я не понимаю, почему, несмотря на всю необходимую переадресацию портов, динамический публичный IP и динамический DNS, я не смог достичь своей системы, в то время как ngrok это сделал без всего этого.
Может кто-то с глубокими знаниями в сети помочь мне это понять?
Спасибо.
Ngrok не получает доступ к вашей системе – ваша система устанавливает связь с Ngrok.
Хотя NAT (как вашего роутера, так и вашего интернет-провайдера) обычно предотвращает получение новых входящих подключений, он отслеживает каждое исходящее соединение, чтобы пакеты ответов, принадлежащие активному соединению, могли все еще быть маршрутизированы обратно (например, именно так вы все еще можете получать HTTP-ответы или SSH на внешние серверы).
Таким образом, программа “агент” ngrok
поддерживает постоянное исходящее соединение с одним из релейных серверов Ngrok, и пока это TCP-соединение открыто, релейный сервер может передавать данные через него.
Тот же принцип применяется к SSH -R
туннелям (на самом деле у Ngrok также есть SSH интерфейс, где вы можете ssh ngrok -R ...
, чтобы настроить туннель без использования специальной программы), а также ко всем VPN соединениям – по крайней мере, пока клиент VPN настроен периодически поддерживать связь с сервером, чтобы NAT-шлюзы не забыли о соединении.
Ответ или решение
Ngrok и No-IP — это два разных подхода к управлению доступом к локальным ресурсам через интернет, и именно поэтому вы можете решить свою задачу с помощью ngrok, но не можете сделать это с No-IP, даже при правильной настройке.
Почему работает ngrok, а No-IP — нет?
-
Принцип работы:
-
Ngrok: Когда вы запускаете ngrok с командой
ngrok http http://localhost:8080
, вы устанавливаете исходящее соединение с сервером ngrok. Ngrok создает туннель между вашим локальным хостом и своим сервером. Сервер ngrok затем перенаправляет входящие запросы на ваш локальный сервер через это соединение. Это означает, что ваш компьютер инициирует соединение, и как только оно установлено, ngrok может безопасно передавать данные назад и вперед, даже если ваш интернет-провайдер использует NAT или фаервол. -
No-IP: Этот сервис позволяет использовать динамические DNS для доступа к вашим локальным ресурсам по доменному имени. Однако, чтобы этот метод работал, вам необходимо настроить проброс портов на вашем маршрутизаторе и убедиться, что входящие соединения не блокируются вашим маршрутизатором или интернет-провайдером. Если маршрутизатор не правильно настроен для обработки входящих запросов, или если ваш IP-адрес сменяется до того, как вы получите исходящее соединение, доступ внешнего мира к вашему серверу не будет возможен.
-
-
Проблема NAT:
- Ваш маршрутизатор, вероятно, настроен на использование NAT (прокси-сервер), который позволяет множеству устройств в вашей локальной сети обмениваться данными через один внешний IP-адрес. NAT предотвращает возможность входящих соединений напрямую к вашему локальному серверу, если не настроен проброс портов и другие правила.
- В свою очередь, ngrok работает, благодаря тому, что ваше устройство инициирует соединение, и NAT не создает помех для этого исходящего соединения.
-
Настройки маршрутизатора и фаервола:
- Проверьте настройки вашего маршрутизатора. Убедитесь, что проброс портов настроен правильно — нужно перенаправить входящие запросы на публичный IP-адрес вашего маршрутизатора и указать внутренний IP-адрес вашего сервера.
- Также убедитесь, что программное обеспечение фаервола на вашем сервере или маршрутизаторе не блокирует входящие соединения по указанному порту.
-
Изменение IP-адреса:
- Если ваш интернет-провайдер регулярно меняет ваш внешний IP-адрес, это может вызвать проблемы с доступом через No-IP, если вы не обновляете свои записи DNS. Ngrok, с другой стороны, при каждом запуске обновляет туннель и предоставляет вам новый, работающий URL, что делает данный сервис более стабильным в вашем случае.
Заключение
Ngrok обеспечивает порядок, создавая исходящее соединение и избегая сложностей, связанных с настройкой NAT и пробросом портов. No-IP требует более глубокой настройки сети, чтобы обеспечить тот же уровень доступа. Если вам нужен быстрый и эффективный способ доступа к своей локальной системе из интернета, продолжайте использовать ngrok, если это подходит для ваших нужд. Если же вы хотите, чтобы ваш сервер был доступен постоянно, стоит рассмотреть возможность усовершенствования сети и настройки No-IP или других альтернатив, чтобы обеспечить стабильное соединение.