Как открыть порт на VPS: ufw, панель провайдера и Windows
Чтобы к программе на сервере можно было подключиться снаружи, нужны две вещи: программа должна слушать порт, а фаервол — пропускать к нему подключения. Ниже — как сделать и то и другое и как закрыть порт обратно.
Содержание 12
- Шаг 1. Проверьте, что программа слушает порт
- Шаг 2. Посмотрите, включён ли фаервол
- Шаг 3. Откройте порт
- Как открыть порт только для одного адреса
- Шаг 4. Проверьте результат
- Как закрыть порт обратно
- Фаервол в панели провайдера
- Если программа запущена в Docker
- Как открыть порт в Windows Server
- Ошибки и как их исправить
- Источники
- Что почитать дальше
Команды для сервера вводятся после подключения к нему по SSH (как подключиться). В примерах открываем порт 8080 — подставьте свой номер. Если система спросит пароль, введите пароль своего пользователя на сервере. Символы при вводе не видны — так и должно быть: наберите пароль и нажмите Enter.
Шаг 1. Проверьте, что программа слушает порт
sudo ss -tlnp | grep ':8080 '- Строки нет — программа не запущена или работает на другом номере. Открывать порт в фаерволе пока бесполезно: сначала запустите программу.
- В строке
127.0.0.1:8080— программа принимает подключения только с самого сервера. Фаервол здесь не поможет: адрес меняют в настройках программы. - В строке
0.0.0.0:8080или*:8080— программа ждёт подключений на всех адресах. Можно переходить к фаерволу.
Шаг 2. Посмотрите, включён ли фаервол
sudo ufw statusStatus: inactive — фаервол ufw выключен: порт уже доступен снаружи, если его не закрывает фаервол в панели провайдера (о нём ниже). Status: active — фаервол работает, ниже в ответе список разрешённых портов.
Если хотите включить фаервол, сначала разрешите SSH — иначе фаервол не пустит вас на сервер при следующем подключении:
sudo ufw allow OpenSSH
sudo ufw enableufw предупредит, что команда может прервать подключения SSH, и спросит, продолжать ли. Нажмите y и Enter.
Шаг 3. Откройте порт
sudo ufw allow 8080/tcp comment 'myapp'/tcp — открыть порт только для TCP: так работают сайты, боты и базы данных. Без /tcp ufw откроет порт и для TCP, и для UDP. comment — подпись, чтобы потом помнить, зачем открыт порт; её можно не писать.
Диапазон портов открывают так — с протоколом и номерами через двоеточие:
sudo ufw allow proto tcp from any to any port 8080:8090Как открыть порт только для одного адреса
К базе данных или панели администратора безопаснее пускать только известный адрес — например, другой ваш сервер:
sudo ufw allow proto tcp from 198.51.100.7 to any port 3306198.51.100.7 — адрес, которому вы разрешаете подключаться, 3306 — порт: подставьте свои. Остальные адреса фаервол к порту не пустит. Подробнее о базах — в разделе Как не открыть базу всему интернету.
Шаг 4. Проверьте результат
sudo ufw statusВ списке появится строка с номером порта и словом ALLOW. Строка с пометкой (v6) — то же правило для адресов IPv6. Проверить порт со своего компьютера — по инструкции Как проверить, открыт ли порт.
Как закрыть порт обратно
Повторите команду, которой открывали порт, добавив слово delete:
sudo ufw delete allow 8080/tcpТак удаляются сразу оба правила — для IPv4 и IPv6. Второй способ — по номеру. Сначала посмотрите номера правил:
sudo ufw status numberedНомера стоят в квадратных скобках. Удалите правило по номеру, например третье:
sudo ufw delete 3ufw спросит подтверждение — нажмите y и Enter. По номеру удаляется одно правило: если у порта есть строка с (v6), удалите и её. После удаления номера сдвигаются, поэтому перед следующим удалением снова посмотрите список.
Фаервол в панели провайдера
У части провайдеров есть свой фаервол в панели управления VPS: он стоит перед сервером и работает отдельно от ufw. Если он включён, порт нужно открыть и там. Найдите в панели раздел про фаервол или сетевые правила либо спросите поддержку провайдера.
Если программа запущена в Docker
Порты, которые публикует Docker, проходят мимо правил ufw: порт контейнера может быть доступен снаружи, даже если в ufw он не открыт. Разбор — в статье Docker открывает порт мимо ufw.
Как открыть порт в Windows Server
Откройте PowerShell от имени администратора: нажмите Win+X или щёлкните правой кнопкой по «Пуску» и выберите пункт «Терминал» или Windows PowerShell со словом «администратор». Введите:
New-NetFirewallRule -DisplayName 'myapp 8080' -Direction Inbound -Protocol TCP -LocalPort 8080 -Action Allowmyapp 8080 — название правила, по нему его потом можно найти. Закрыть порт — удалить правило по названию:
Remove-NetFirewallRule -DisplayName 'myapp 8080'Ошибки и как их исправить
- Порт открыт в ufw, но снаружи
Connection refused— программа не слушает порт или слушает только 127.0.0.1. Вернитесь к шагу 1. - Порт открыт в ufw, но подключение висит до тайм-аута — порт закрыт фаерволом в панели провайдера. Откройте его там.
- После
sudo ufw enableне подключиться по SSH — правило для SSH не было добавлено. Войдите через консоль в панели провайдера и выполнитеsudo ufw allow OpenSSH. - Браузер пишет ERR_CONNECTION_REFUSED или ERR_CONNECTION_TIMED_OUT — разборы: ERR_CONNECTION_REFUSED, ERR_CONNECTION_TIMED_OUT.
Источники
- Справка ufw для Ubuntu 24.04 — команды allow, deny, reject, limit, delete и status numbered.
- Справка ss для Ubuntu 24.04 — ключи -t, -u, -l, -n и -p.
- Microsoft: New-NetFirewallRule — правило брандмауэра Windows из PowerShell.
- Microsoft: Remove-NetFirewallRule — удаление правила по имени.
Сверено 10 октября 2026 года.
Что почитать дальше
Проверено и обновлено: 10.10.2026