Как открыть сетевой порт в Linux?

«Как открыть сетевой порт в Linux?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для открытия сетевого порта необходимо настроить брандмауэр и убедиться, что сервис привязан к этому порту. Вот практический пример настройки для веб-сервера 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).