Как открыть порт в Ubuntu
В Ubuntu есть простой брандмауэр ufw (Uncomplicated Firewall). Он установлен сразу, но выключен — пока он выключен, порты закрывать и открывать не нужно: всё, что слушает программа, доступно. Состояние:
sudo ufw statusStatus: inactive — брандмауэр выключен, active — включён, ниже список правил.
Открыть порт
sudo ufw allow 80/tcp
sudo ufw allow 443/tcpТак открываются порты сайта: 80 (http) и 443 (https). /tcp или /udp — протокол; без него открываются оба. Другие варианты:
| Задача | Команда |
|---|---|
| Порт SSH по имени программы | sudo ufw allow OpenSSH |
| Диапазон портов | sudo ufw allow 6000:6007/tcp |
| Только из своей сети | sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp |
| Только с одного адреса | sudo ufw allow from 192.168.1.5 |
| Закрыть порт для всех | sudo ufw deny 3306/tcp |
Включить брандмауэр
Перед включением по SSH обязательно разрешите сам SSH (sudo ufw allow OpenSSH). Иначе новые подключения по SSH перестанут проходить: как только текущее соединение закроется, войти снова получится только с клавиатуры сервера.
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw status verboseПосле включения всё входящее, что не разрешено правилами, закрыто; исходящее — открыто.
Удалить правило
sudo ufw status numbered
sudo ufw delete 3Первая команда показывает правила с номерами, вторая удаляет правило с номером 3. Можно и по самому правилу: sudo ufw delete allow 80/tcp.
Порт открыт, а подключиться нельзя
- Программа не слушает порт.
sudo ss -tln— порта нет в списке, значит, программа не запущена или слушает другой. - Программа слушает только сам компьютер. Адрес
127.0.0.1:портв выводеss— подключиться можно только с этого же компьютера. Это меняется в настройках самой программы (у баз данных так по умолчанию). - Доступ из интернета. Домашний роутер не пропускает подключения снаружи: на нём нужен проброс порта на адрес сервера. У хостинга бывает свой брандмауэр в панели управления.
- Docker. Порты контейнеров, опубликованные через
-p, Docker открывает своими правилами в обход ufw. Закрытый в ufw порт контейнера всё равно доступен — ограничивайте его при запуске:-p 127.0.0.1:8080:80.