Ubuntu 22.04 Apache2 слушает на localhost на порту 80, но не слушает из интернета на порту 80.

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

Я пытаюсь возродить свой веб-сервер Apache2 на Ubuntu 22.04 Jammy и проверил практически все, но Apache2 не принимает трафик из Интернета на порты 80 (или 443), хотя отвечает на трафик с localhost на портах 80 (и 443).

Вот два примера проблемы:

С localhost:

user@webserver:~$ telnet localhost 80
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
HEAD http://www.webserver.com/ HTTP/1.0

HTTP/1.1 200 OK
Date: Thu, 09 Jan 2025 12:38:25 GMT
Server: Apache/2.4.52 (Ubuntu)
Last-Modified: Fri, 17 Jun 2011 03:27:18 GMT
ETag: "2d-4a5dff6791e3b"
Accept-Ranges: bytes
Content-Length: 45
Connection: close
Content-Type: text/html

Connection closed by foreign host.

С другого настольного ПК в интернете:

user@desktop:~$ telnet www.webserver.com 80
Trying 1.1.1.1...
Connected to webserver.com.
Escape character is '^]'.
HEAD http://www.webserver.com/ HTTP/1.0

Connection closed by foreign host.

(Я удалил информацию о пользователе, FQDN и IP-адресах.)

Я явно подключаюсь по telnet, telnet явно соединяется (так что, похоже, нет проблем с блокировкой портов или брандмауэром), но веб-сервер просто не слушает на интернет-соединении, пока слушает на localhost.

Я могу отредактировать этот пост, чтобы включить любые соответствующие файлы конфигурации.

РЕДАКТИРОВАНИЕ 1:

Сервер подключен по Ethernet к маршрутизатору Spectrum; проводное соединение маршрутизатора помещено в DMZ. Я могу подключаться к серверу по SSH через терминал Ubuntu на настольном ПК через порт 22, подключаться к серверу по SFTP с помощью Filezilla на настольном ПК через порт 22 и подключаться к серверу по VNC с настольного ПК с помощью TigerVNC на сервере и Remmina на настольном ПК через порты 5901-5903. Возможно, Spectrum блокирует трафик на портах 80 и 443, но не на других портах?

user@webserver:~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 10:78:d2:cd:4a:5a brd ff:ff:ff:ff:ff:ff
    altname eno1
    altname enp0s25
    inet 192.168.1.15/24 brd 192.168.1.255 scope global dynamic noprefixroute eth0
       valid_lft 23450sec preferred_lft 23450sec
    inet6 2603:6000:b100:1d5::1760/128 scope global dynamic noprefixroute 
       valid_lft 585050sec preferred_lft 585050sec
    inet6 2603:6000:b100:1d5:c6a5:4683:2f99:cc23/64 scope global temporary dynamic 
       valid_lft 585050sec preferred_lft 66588sec
    inet6 2603:6000:b100:1d5:1278:d2ff:fecd:4a5a/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 604769sec preferred_lft 604769sec
    inet6 fe80::1278:d2ff:fecd:4a5a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 68:a3:c4:43:a6:b7 brd ff:ff:ff:ff:ff:ff
    altname wlp2s0
4: gpd0: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 500
    link/none 

Любая помощь будет оценена.

РЕДАКТИРОВАНИЕ 2: Я думал, что сервер находится в DMZ, но я вошел в приложение Spectrum на своем телефоне, посмотрел настройки маршрутизатора и, о чудо, он не был в DMZ, а вместо этого имел исключения в брандмауэре для портов 22 и 5901-5605. Я добавил исключения для портов 80 и 443 и, voilà!, я могу получить доступ к веб-страницам с настольного ПК на портах 80 и (принимая самоподписанный сертификат) на порте 443.

Большое спасибо за всю вашу помощь!

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

Решение проблемы доступа Apache2 на Ubuntu 22.04 с интернета на порты 80 и 443

Если ваш локальный сервер Apache2 на Ubuntu 22.04 работает корректно, но недоступен через интернет на стандартных портах 80 и 443, это может быть обусловлено рядом причин. Давайте рассмотрим, как можно решить эту проблему, следуя шагам.

  1. Проверка конфигурации Apache и сетевого интерфейса
    Убедитесь, что Apache настроен прослушивать все сетевые интерфейсы. Для этого откройте конфигурационный файл Apache, расположенный в /etc/apache2/ports.conf. Проверьте наличие строки:

    Listen 80
    Listen 443

    Это гарантирует, что сервер слушает на всех доступных интерфейсах.

  2. Неправильные настройки файрвола на сервере или маршрутизаторе
    Проверьте настройки файрвола на сервере. Используйте команду ufw status для анализа текущих правил. Убедитесь, что порты 80 и 443 разрешены:

    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp

    Затем, проверьте маршрутизатор для настройки перенаправления портов или DMZ. Как видно из вашего случая, отсутствие правильных настроек в маршрутизаторе Spectrum приводило к блокировке доступа.

  3. Проверка публичного адреса и маршрутизации
    Убедитесь, что ваш сервер имеет корректный внешний IP-адрес и DNS-настройки. Для проверки текущего IP-адреса вы можете использовать сервисы, такие как curl ifconfig.me.

  4. Тестирование подключения
    После выполнения изменений попробуйте снова соединиться с вашего компьютера в интернет-сети, используя telnet или curl, чтобы убедиться в успешности соединения.

  5. Отладка через логи
    Если проблема сохраняется, проверьте логи Apache для детального анализа ошибок. Логи расположены в /var/log/apache2/error.log. Они могут дать более ясное представление о возможных проблемах с конфигурацией или доступом.

  6. Дополнительные меры безопасности
    Для онлайн-доступа всегда следует учитывать безопасность. Убедитесь в использовании корректных SSL/HTTPS настроек и рассматривайте обновление самоподписанного сертификата на доверенный.

В заключение

Если все описанные шаги выполнены корректно, ваш сервер должен быть доступен из интернета по HTTP и HTTPS. Внимание к деталям и тщательная проверка настроек – ключевые факторы успешного решения подобных проблем. Надеюсь, данное руководство помогает в улучшении доступности вашего веб-сервера Apache.

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

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