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

Демон NRPE превращает :: 1 в подсеть 52.0.0.0/14

Я настроил демон NRPE (/usr/local/nagios/etc/nrpe.cfg) в режиме отладки из-за некоторых проблем с запуском, и я понял, что ::1 находится по умолчанию в allowed_hosts директива:

allowed_hosts=127.0.0.1,::1,10.252.1.134

волшебным образом превращается в 52.0.0.0/14 по журналу:

Sep  6 08:56:44 myhost nrpe[30830]: Warning: Cannot open log file '/usr/local/nagios/var/nrpe.log' for writing
Sep  6 08:56:44 myhost nrpe[30830]: parse_allowed_hosts: parsing the allowed host string >127.0.0.1,::1,10.252.1.134< to add to ACL list
Sep  6 08:56:44 myhost nrpe[30830]: add_ipv4_to_acl: checking ip-address >127.0.0.1<
Sep  6 08:56:44 myhost nrpe[30830]: add_ipv4_to_acl: ip-address >127.0.0.1< correct, adding.
Sep  6 08:56:44 myhost nrpe[30830]: add_ipv4_to_acl: checking ip-address >10.252.1.134<
Sep  6 08:56:44 myhost nrpe[30830]: add_ipv4_to_acl: ip-address >10.252.1.134< correct, adding.
Sep  6 08:56:44 myhost nrpe[30830]: Showing ACL lists for both IP and DOMAIN acl's:
Sep  6 08:56:44 myhost nrpe[30830]:    IP ACL: 127.0.0.1/32 16777343
Sep  6 08:56:44 myhost nrpe[30830]:    IP ACL: 52.0.0.0/14 52
Sep  6 08:56:44 myhost nrpe[30830]:    IP ACL: 10.252.1.134/32 4269145354
Sep  6 08:56:44 myhost nrpe[30830]: INFO: SSL/TLS initialized. All network traffic will be encrypted.
Sep  6 08:56:44 myhost nrpe[30830]: Starting up daemon

Есть ли этому объяснение?

Версия NRPE 3.2.0

После беглого взгляда на исходный код (acl.c) Я обнаружил две проблемы:

  1. в отличие add_ipv4_to_acl функция, add_ipv6_to_acl почти не показывает сообщение в режиме отладки из-за отсутствия обращений к logit() функция. В add_ipv6_to_acl функция не имеет logit() вызовите, когда IPv6-адрес будет принят, аналогично этому:

    if(debug == TRUE)
      logit(LOG_INFO, "add_ipv4_to_acl: ip-address >%s< correct, adding.", ipv4);
    

    уведомление: эти показанные строки являются последними в add_ipv4_to_acl функция.

    Вот почему нет линейной отчетности >::1< correct, adding. в журнале в режиме отладки.

  2. Функция show_acl_lists(), который отображает список IP-адресов, использует inet_ntoa() вызов. Но, по мнению страницы руководства, эта функция работает с IPv4-адресами, а не с IPv6:

    while (ip_acl_curr != NULL) {
            logit(LOG_INFO, "   IP ACL: %s/%u %u\n", inet_ntoa(ip_acl_curr->addr),
                     prefix_from_mask(ip_acl_curr->mask), ip_acl_curr->addr.s_addr);
            ip_acl_curr = ip_acl_curr->next;
    }
    

Поэтому я думаю, проблема в том, что 52.0.0.0/14 это результат inet_ntoa() функция, когда структура адреса IPv6 используется вместо структуры адреса IPv4.

Но я до сих пор не сравнивал обе конструкции.

обновление 1

После установки NRPE на другом узле и наличия 4 IP-адресов в allowed_hosts директиве, запись списка ACL показана для ::1 другое - теперь это 0.0.0.0/20:

Showing ACL lists for both IP and DOMAIN acl's:
IP ACL: 127.0.0.1/32 16777343
IP ACL: 0.0.0.0/20 0
IP ACL: 10.252.1.134/32 4269145354
IP ACL: 10.252.1.135/32 896662794