Назад | Перейти на главную страницу

У firewalld включен 443, но он отказывается подключаться

Я использую centos 7, использую firewalld.

Я настроил firewalld, поэтому 443 открыт:

$ sudo firewall-cmd --zone=public --permanent --list-all
public
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: couchdb2 dhcpv6-client http https ssh
  ports: 443/tcp 5984/tcp
  protocols: 
  masquerade: no
  forward-ports: 
  sourceports: 
  icmp-blocks: 
  rich rules: 

$ sudo firewall-cmd --zone=public --add-port=443/tcp --permanent
Warning: ALREADY_ENABLED: 443:tcp
success

видимо порт 443 открыт, но ...

$ curl https://127.0.0.1:443
curl: (7) Failed connect to 127.0.0.1:443; Connection refused

Я также тестирую его с помощью веб-инструмента по адресу http://www.yougetsignal.com/tools/open-ports/

Я ввожу свой IP-адрес и порт 443 и получаю: Закрытый порт 443 закрыт на {my-ip}

Что могло пойти не так? Кажется, что он открывается, но это не так.

Я запрашиваю netstat с таким результатом:

$ sudo netstat -lnp | grep 443
udp        0      0 127.0.0.1:323           0.0.0.0:*                           
443/chronyd         
udp6       0      0 ::1:323                 :::*                                
443/chronyd

Как только я исправил свой nginx.conf для правильного прослушивания 443, результат выглядел так:

$ sudo netstat -lnp | grep 443
tcp        0      0 0.0.0.0:443             0.0.0.0:*               
LISTEN      10197/nginx: master 
tcp6       0      0 :::443                  :::*                    
LISTEN      10197/nginx: master 
udp        0      0 127.0.0.1:323           0.0.0.0:*                           
443/chronyd         
udp6       0      0 ::1:323                 :::*                                
443/chronyd   

Ошибка В соединении отказано обычно означает, что брандмауэр разрешил прохождение пакетов (если брандмауэр активно не отклоняет попытку подключения), но служба, прослушивающая номер назначенного порта, отсутствует.

В вашем случае вам необходимо убедиться, что веб-сервер HTTP работает и прослушивает порт 443. Вы можете использовать следующую команду для проверки.

sudo netstat -lnp | grep 443

Редактировать: Как прокомментировал @Paul, показанные выходные данные означают, что на порту 443 не прослушивается процесс. Результат не имеет значения, потому что идентификатор процесса соответствует 443, и нам нужно, чтобы он совпадал с номером порта протокола TCP. Вам нужно найти строку, похожую на:

tcp  0   0 0.0.0.0:443      0.0.0.0:*     LISTEN      <pid>/<proc_name>       

Вам нужно перезагрузить firewalld после того, как вы добавите правило с --permanent или вам нужно повторно запустить команду без --permanent.

Когда ты говоришь --permanent firewalld просто обновляет конфигурацию, но не перезагружает ее.