вторник, 4 апреля 2017 г.

Troubleshooting сервер Apache в CentOS 7 не слушает соединение на 80 порту TCP IPv4

Столкнулся недавно с последствием плохо задокументированных изменений в настройках веб сервера Apache. Проявление проблемы:
netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp6       0      0 [::]:http               [::]:*                  LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN

на стеке IPv6 порт 80 слушается, но на IPv4 нет. По некоторым не убедительным объяснениям на форумах, говорилось, что теперь, якобы стеки объединили и прочий подобный бред. Проверить можно сразу же:
curl http://web_server_ip
curl: (7) Failed connect to web_server_ip:80; Connection refused

в соединении отказано, на файрволле разрешения есть:
firewall-cmd --list-all
public (active) 
  services: dhcpv6-client ssh
  ports: 3306/tcp 80/tcp

Сам сервис фактически запущен и работает:
sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2017-03-31 10:14:44 MSK; 4min 16s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1181 (httpd)
   Status: "Total requests: 1; Current requests/sec: 0; Current traffic:   0 B/sec"
   CGroup: /system.slice/httpd.service
           ├─1181 /usr/sbin/httpd -DFOREGROUND
           ├─2300 /usr/sbin/httpd -DFOREGROUND
           ├─2301 /usr/sbin/httpd -DFOREGROUND
           ├─2302 /usr/sbin/httpd -DFOREGROUND
           ├─2303 /usr/sbin/httpd -DFOREGROUND
           └─2304 /usr/sbin/httpd -DFOREGROUND

Mar 31 10:14:43 HST systemd[1]: Starting The Apache HTTP Server...
Mar 31 10:14:44 HST httpd[1181]: systemd[1]: Started The Apache HTTP Server.

Причина:

если раньше в конфигурационном файле Apache достаточно было указать
Listen 80
чтобы сервер слушал порт TCP 80 на всех интерфейсах и стеках протоколов, то теперь для IPv4 необходимо явно указать:
sudo vi /etc/httpd/conf/httpd.conf
 Listen 0.0.0.0:80
sudo service httpd restart

в результате имеем работоспособный сервис:
netstat -tl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:http            0.0.0.0:*               LISTEN
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:smtp          0.0.0.0:*               LISTEN
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN
tcp6       0      0 localhost:smtp          [::]:*                  LISTEN
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN

Комментариев нет:

Отправить комментарий