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

mod_unique_id: невозможно найти IPv4-адрес FQDN, несмотря на установку etc / hosts и Apache ServerName

Я пытаюсь получить mod_security и обнаруживаю очень распространенную ошибку имени хоста

[alert] (EAI 2)Name or service not known: mod_unique_id: unable to find IPv4 address of "computername.domain.com"

Обычно это означает, что требуется запись в файле hosts. Однако я перепробовал все комбинации для имени хоста; localhost (127.0.0.1), локальный IP-адрес (192.168 ....) и общедоступный IP-адрес («122.56.11.156»). Я также пробовал все комбинации для Apache ServerName; компьютер. домен, домен, IP-адреса и вообще его не настраивать. Кажется, у меня ничего не работает.

В настоящее время мой файл / etc / hosts выглядит так:

# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1              computername.domain.com computername localhost.localdomain localhost    
::1             localhost6.localdomain6 localhost6
192.168.0.102           computername.domain.com computername

#192.168.0.102          computername.hostingprovider.local  computername  # NIC <eth0>
#122.56.11.156          computername.domain.com computername

Пинг работает, также показывает имя хоста

[root@computername~]# hostname
computername.domain.com

Общедоступный DNS не имеет computername в качестве поддомена, поэтому какую комбинацию IP-адрес / ServerName следует использовать? Что происходит с повторяющимися записями на хостах? Что проверяет mod_unqiue_id, что может привести к сбою?

Спасибо за любую помощь, которую вы можете предоставить


Основная проблема

Спасибо за предложение strace. При запуске apache я получил следующее.

1377  open("/etc/hosts", O_RDONLY)      = -1 EACCES (Permission denied)

Так что быстро проверьте разрешения и:

# ll /etc/hosts
-rw-r--r-- 2 root root 608 Jul 22 16:01 /etc/hosts

Но оказалось SELinux, увидеть ниже

Проблема была в SELinux

#less /var/log/audit/audit.log

type=AVC msg=audit(1311546944.235:1040): avc:  denied  { read } for  pid=1396 comm="httpd" 
name="hosts" dev=dm-0 ino=262931 
scontext=user_u:system_r:httpd_t:s0 
tcontext=system_u:object_r:initrc_tmp_t:s0 tclass=file

В моем случае это решило следующее:

# ls -lZ /etc/hosts
-rw-r--r--  root root system_u:object_r:initrc_tmp_t   /etc/hosts
# setenforce 0
# restorecon -R -F -v /etc/hosts
# setenforce 1
# ls -lZ /etc/hosts
-rw-r--r--  root root system_u:object_r:etc_t          /etc/hosts

Я бы искал опечатки и другие «глупо простые» ошибки, которые мы все время от времени совершаем (я использую свою жену в качестве корректора), но если это не сработает, я просто запустил strace, чтобы посмотреть, какие mod_security пытается сделать. Возможно, это не чтение /etc/hosts - возможно, это означает, что не удалось разрешить имя через DNS как какой-то серьезный сбой или что-то еще.

В любом случае, я бы все равно занес имя машины в DNS. Это просто избавляет от лишних хлопот.