Ответ
Для открытия сетевого порта необходимо настроить брандмауэр и убедиться, что сервис привязан к этому порту. Вот практический пример настройки для веб-сервера Nginx.
Шаг 1: Проверяем, слушает ли сервис порт 80.
sudo netstat -tlnp | grep :80
# Или современная альтернатива:
sudo ss -tlnp | grep :80
Если Nginx/Apache не запущен, порт открывать бессмысленно.
Шаг 2: Настраиваем брандмауэр (на примере firewalld).
# Добавляем службу 'http' (которая включает порт 80) в зону public
sudo firewall-cmd --zone=public --add-service=http --permanent
# Альтернативно, можно открыть порт напрямую
# sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
# Применяем изменения
sudo firewall-cmd --reload
# Проверяем, что правило добавилось
sudo firewall-cmd --zone=public --list-all
Шаг 3: Комплексная проверка.
# 1. Локальная проверка
curl -I http://localhost
# 2. Проверка с точки зрения брандмауэра
sudo firewall-cmd --zone=public --query-service=http # Должно вернуть 'yes'
# 3. Внешняя проверка (с другой машины в сети)
telnet <IP_ВАШЕГО_СЕРВЕРА> 80
Основные причины, если порт не открывается:
- Сервис не запущен или слушает на
127.0.0.1(localhost), а не на0.0.0.0. - Правило брандмауэра добавлено, но не сохранено с флагом
--permanentи было потеряно послеreload. - Порт заблокирован сетевым оборудованием или облачным фаерволом (AWS Security Group, GCP Firewall Rules).