Что такое порт и что значит «открыть порт»
IP-адрес указывает на устройство, порт — на конкретную программу в нём. Номера идут от 0 до 65535. Некоторые закреплены по традиции: 80 — обычный HTTP, 443 — HTTPS, 3389 — удалённый рабочий стол Windows, 25565 — сервер Minecraft.
Открытый порт — это порт, на котором кто-то слушает и до которого могут дойти подключения. Важная деталь: если на порту не запущена программа, открывать его в брандмауэре бесполезно, проверка всё равно покажет «закрыт».
Как проверить, открыт ли порт
Сначала убедитесь, что программа вообще слушает порт.
- Windows: в командной строке
netstat -ano | findstr LISTENING. В столбце адреса ищите свой порт, например0.0.0.0:25565. - Linux:
sudo ss -tulpn— покажет порты и программы, которые их заняли.
Потом проверьте, доходит ли подключение. В PowerShell на другом компьютере той же сети: Test-NetConnection 192.168.1.10 -Port 25565. Строка TcpTestSucceeded : True значит, что порт открыт. На Linux и macOS то же самое делает nc -zv 192.168.1.10 25565.
Чтобы проверить порт снаружи, из интернета, нужен сервис проверки открытых портов или знакомый с другим подключением. С компьютера внутри своей же сети проверка по внешнему адресу часто врёт.
Как открыть порт на компьютере с Windows
- Нажмите Win+R, введите
wf.msc— откроется брандмауэр Защитника Windows в режиме повышенной безопасности. - Слева «Правила для входящих подключений», справа «Создать правило».
- Тип — «Для порта», дальше TCP или UDP (смотрите в инструкции к программе, иногда нужны оба) и номер порта.
- «Разрешить подключение», отметьте профили сетей. «Общественный» лучше не отмечать, если это ноутбук, который бывает в кафе.
- Дайте правилу понятное имя, например «Minecraft 25565».
То же одной командой в PowerShell от администратора:
New-NetFirewallRule -DisplayName "Minecraft 25565" -Direction Inbound -Protocol TCP -LocalPort 25565 -Action Allow
Как открыть порт в Linux
Зависит от того, какой брандмауэр стоит в системе.
- Ubuntu, Debian (ufw):
sudo ufw allow 443/tcp, проверить —sudo ufw status. - CentOS, Fedora, AlmaLinux (firewalld):
sudo firewall-cmd --add-port=443/tcp --permanent, затемsudo firewall-cmd --reload.
На арендованном сервере есть ещё один слой — сетевой фильтр в панели хостинга. Если в системе порт открыт, а снаружи не отвечает, загляните туда.
Как открыть порты на роутере
Для доступа из интернета роутер должен знать, какому устройству в домашней сети отдавать входящие подключения. Это и есть проброс портов. Пункт называется по-разному: «Переадресация портов», «Port Forwarding», «Виртуальные серверы», у Keenetic — «Переадресация» в разделе «Сетевые правила».
- Зайдите в веб-интерфейс роутера, обычно
192.168.0.1или192.168.1.1. - Закрепите за компьютером постоянный IP: в настройках DHCP найдите «резервирование адресов» и привяжите IP к MAC-адресу компьютера. Иначе после перезагрузки адрес сменится и правило перестанет работать.
- Создайте правило: внешний порт, протокол, внутренний IP компьютера и внутренний порт (обычно тот же).
- Сохраните и проверьте порт внешним сервисом.
Порт открыт, а снаружи не работает: серый IP
Самая частая причина. Многие провайдеры выдают не отдельный внешний адрес, а общий на много абонентов. Проверить просто: сравните WAN-адрес на главной странице роутера с тем, что показывает любой сайт проверки IP. Не совпадают или WAN-адрес начинается на 100.64–100.127, 10., 192.168. — у вас серый IP, и никакой проброс портов снаружи не поможет. Выход один — заказать у провайдера белый (публичный) IP, обычно это платная опция. Подробнее про внешние и внутренние адреса — в статье IP-адрес: что это и как узнать свой.
Какие порты лучше не открывать
3389 (удалённый рабочий стол), 22 (SSH), 445 (общие папки Windows) и порты баз данных боты сканируют круглосуточно. Если без удалённого доступа никак — хотя бы сложный пароль, нестандартный внешний порт и доступ по ключу для SSH. А порты, которые больше не нужны, закрывайте: правило в брандмауэре и проброс на роутере не исчезнут сами.
Коротко
- Порт открыт, только если его слушает программа, пропускает брандмауэр и, для доступа из интернета, пробрасывает роутер.
- Проверка:
netstat -anoилиss -tulpn, потомTest-NetConnectionилиnc -zv. - Windows — правило в
wf.msc, Linux —ufw allowилиfirewall-cmd. - На роутере — переадресация портов и постоянный IP для компьютера.
- С серым IP снаружи порт не откроется, нужен белый IP от провайдера.
Частые вопросы
Запустите программу, которая слушает нужный порт, разрешите порт в брандмауэре (Windows — wf.msc, Linux — ufw или firewalld), а для доступа из интернета настройте переадресацию порта на роутере.
Локально — командой netstat -ano | findstr LISTENING в Windows или ss -tulpn в Linux. Доступность по сети — Test-NetConnection адрес -Port номер в PowerShell или nc -zv адрес порт. Снаружи — сервисом проверки открытых портов.
В веб-интерфейсе роутера найдите «Переадресация портов» или «Виртуальные серверы», укажите внешний порт, протокол и внутренний IP компьютера. Заранее закрепите за компьютером постоянный IP через резервирование DHCP.
Win+R → wf.msc → «Правила для входящих подключений» → «Создать правило» → «Для порта» → TCP или UDP и номер → «Разрешить подключение».
Одинаково: через wf.msc или командой PowerShell New-NetFirewallRule -DisplayName "Имя" -Direction Inbound -Protocol TCP -LocalPort номер -Action Allow.
В Ubuntu и Debian — sudo ufw allow номер/tcp. В CentOS, Fedora и AlmaLinux — sudo firewall-cmd --add-port=номер/tcp --permanent и sudo firewall-cmd --reload.
На сервере должен работать веб-сервер, который слушает 443. Затем разрешите 443/tcp в брандмауэре системы и, если есть, в сетевом фильтре панели хостинга.
В Windows — netstat -ano, в Linux — sudo ss -tulpn. Команды покажут порты, на которых сейчас слушают программы, и их идентификаторы процессов.
Чаще всего из-за серого IP: провайдер выдаёт общий внешний адрес, и проброс на роутере не помогает. Сравните WAN-адрес роутера с тем, что показывают сайты проверки IP. Ещё причины — не тот внутренний IP в правиле или закрытый фильтр у хостинга.