Почему, используя Dynamic DNS с No-IP и перенаправление портов на роутере TP-Link, “Проверка порта” показывает, что мой порт закрыт?

Вопрос или проблема

Я просто пытаюсь получить доступ к моим услугам, размещенным на моем компьютере, через интернет. Для этого я следовал этой инструкции от No-IP.

  1. Создал динамический DNS с No-IP, padmahasa-desktop.ddns.net.
    DDNS
  2. Порт был перенаправлен на роутере TP-Link. 192.168.0.107 — мой текущий внутренний IP-адрес.
    Порт перенаправлен на роутере TP-link
  3. Но «Проверка порта» сообщает, что ни один из перенаправленных портов не открыт. Я попытался проверить все порты 9099, 80, 8080 и т.д., указанные на изображении.
    Результат проверки порта

Поскольку я использую Ubuntu 24.04.1, я попытался проверить, активен ли какой-либо брандмауэр с помощью следующей команды. Но она показала, что брандмауэр неактивен.

$ sudo ufw status
Статус: неактивен

Как начать диагностику, чтобы узнать, где именно проблема?

«Открытый» и «Закрытый» немного неопределенные, так как у вас есть как минимум 3-5 различных «дверей», которые могут быть открыты или закрыты — брандмауэр провайдера, брандмауэр вашего роутера (и перенаправление портов), брандмауэр вашего сервера, и, наконец, работает ли ваш сервер в данный момент с любой службой, которая слушает подключения на этом порту. Простое создание правила перенаправления порта на вашем роутере, таким образом, не является достаточным для того, чтобы он был «открыт» полностью.

Как начать диагностику, чтобы узнать, где именно проблема?

  1. Запустите захват пакетов, например, Wireshark (GUI) или tshark/tcpdump (CLI), во время проверки порта. Это подскажет вам, достигают ли пакеты вашей системы.

    tcpdump -n -i eth0 "port 8092"
    
    tshark -i eth0 -f "port 8092"
    
    • Если вы видите, что пакеты приходят на сервер и игнорируются, проблема, вероятно, в брандмауэре сервера. (ufw — не единственный брандмауэр; на самом деле это просто инструмент для автоматической конфигурации iptables, и возможно, что правила iptables загружены без активного ufw.)

    • Если вы видите, что пакеты приходят и отправляется ответ TCP ‘RST’, значит, брандмауэр в порядке, но на сервере не работает никакая служба, которая принимала бы подключения на этом порту.

    • Если вы не видите никаких пакетов, они блокируются либо вашим роутером, либо вашим интернет-провайдером. В наши дни это очень распространенная проблема с интернет-провайдерами — смотрите на другой пункт.

  2. Убедитесь, что у вашего роутера есть публичный IP-адрес. То, что внешние системы видят о вас (например, то, что видит ваш DDNS провайдер или что показывает сайт “Какой у меня IP”), не обязательно является адресом, который фактически принадлежит вашей системе.

    То есть, перейдите на страницу «WAN Status» вашего роутера TP-Link (или аналогичную) и найдите WAN IP-адрес, присвоенный вашим интернет-провайдером.

    Если адрес, показанный там, не соответствует адресу 103.228.222.115, показанному провайдером DDNS, это означает, что ваше соединение находится за CGNAT (т.е. второй слой NAT, сделанный вашим интернет-провайдером), и ваши собственные правила перенаправления портов ничего не смогут сделать.

Ответ или решение

Проблема с получением «закрытого» порта в вашем случае может быть вызвана несколькими факторами, так как существует несколько уровней, на которых могут возникнуть блокировки. Ниже приведен подробный план диагностики и устранения неполадок.

Шаги диагностики

  1. Проверка пакетов: Запустите захват пакетов, используя такие инструменты, как Wireshark или команду tcpdump. Это поможет определить, доходят ли пакеты до вашего сервера:

    tcpdump -n -i eth0 "port 9099"

    или

    tshark -i eth0 -f "port 9099"
    • Если пакеты доходят до сервера, но игнорируются, возможной причиной может быть локальный файрвол. Убедитесь, что в iptables нет правил, блокирующих нужный порт (команда для просмотра правил: iptables -L).
    • Если пакеты доходят, но вы получаете ответ TCP ‘RST’, это означает, что на сервере нет службы, слушающей на этом порту.
    • Если пакеты не доходят до сервера, они, вероятно, блокируются на уровне роутера или вашим провайдером.
  2. Проверка IP-адреса: Убедитесь, что ваш роутер имеет публичный IP-адрес. Перейдите на страницу статуса WAN в интерфейсе вашего TP-Link роутера и проверьте WAN IP-адрес. Если он не совпадает с тем, который предоставляет ваш DDNS, вероятно, вы находитесь за CGNAT (вторичный NAT от вашего провайдера), и ваши порт-форвардинговые правила не будут работать.

  3. Настройки маршрутизатора: Убедитесь, что правила переадресации портов настроены правильно. Проверьте, что вы указали правильный внутренний IP-адрес (192.168.0.107) и порты, на которые хотите направить трафик.

  4. Служба на сервере: Убедитесь, что служба, к которой вы пытаетесь получить доступ (например, веб-сервер на порту 80 или любая другая служба), запущена и работает. Вы можете использовать команду netstat для проверки, слушает ли ваша служба на нужном порту:

    sudo netstat -tuln | grep LISTEN
  5. Файрвол на уровне сервера: Несмотря на то, что вы указали, что ufw отключен, стоит проверить и другие настройки iptables:

    sudo iptables -L -n

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

    sudo iptables -F
  6. Проблемы со службой интернет-провайдера: Некоторые интернет-провайдеры блокируют порты для определённых типов трафика. Обратитесь к вашему провайдеру, чтобы убедиться, что ваши порты не заблокированы.

Резюме

Следуя этим шагам, вы сможете определить, на каком уровне возникает проблема с доступом к услугам на вашем сервере. Убедитесь, что все настройки сделаны корректно, и у вас есть рабочая служба, слушающая на нужном порту. Если проблема не исчезнет, возможно, имеет смысл обратиться к техподдержке вашего интернет-провайдера для дальнейшего разрешения ситуации.

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

Капча загружается...