Являются ли ключевые слова в resolv.conf чувствительными к регистру?

Оглядываясь, я узнал о правильном форматировании /etc/resolv.conf :

  • Доступно прокручивание пробелов
  • Продвинутое пробелы НЕ допускается
  • Записи DNS нечувствительны к регистру, хотя в приложениях могут возникнуть странные проблемы,

Тем не менее, я не могу найти нигде, являются ли ключевые слова resolv.conf нечувствительными к регистру или чувствительными к регистру. Обычно они выглядят как строчные буквы, но они должны быть? Это ошибка, если я нахожу сервер, на котором они находятся в верхнем регистре?

Поисковый поиск Google открывает этот форум , где пример кода указывает, что ключевые слова являются чувствительными к регистру. Однако нет никакой ссылки на какую-либо авторитетную документацию.

/etc/resolv.conf (например, nameserver ) чувствительны к регистру?

2 Solutions collect form web for “Являются ли ключевые слова в resolv.conf чувствительными к регистру?”

Они, безусловно, чувствительны к регистру в библиотеках распознавателей glibc. Обратите внимание на использование strncmp (с учетом регистра), а не strncasecmp (без strncasecmp регистра) в функции MATCH в glibc res_init.c .

Этот код отвечает за чтение + разбор файла /etc/resolv.conf .

 #define MATCH(line, name) \ (!strncmp(line, name, sizeof(name) - 1) && \ (line[sizeof(name) - 1] == ' ' || \ line[sizeof(name) - 1] == '\t')) if ((fp = fopen(_PATH_RESCONF, "rce")) != NULL) { /* No threads use this stream. */ __fsetlocking (fp, FSETLOCKING_BYCALLER); /* read the config file */ while (fgets_unlocked(buf, sizeof(buf), fp) != NULL) { /* skip comments */ if (*buf == ';' || *buf == '#') continue; /* read default domain name */ if (MATCH(buf, "domain")) { if (haveenv) /* skip if have from environ */ continue; cp = buf + sizeof("domain") - 1; 

Кроме того, быстрый пример показывает, как поиск разбивается с NAMESERVER, а не сервером имен.

 # cat /etc/resolv.conf options timeout:2 attempts:5 ; generated by /sbin/dhclient-script search eu-west-1.compute.internal nameserver 172.31.0.2 # getent hosts www.google.com 2a00:1450:400b:802::2004 www.google.com # sed -i 's/nameserver/NAMESERVER/' /etc/resolv.conf # getent hosts www.google.com # 

Рассматривая исходный код для glibc , макрос, который пытается сопоставить строки, такие как domain и nameserver

 #define MATCH(line, name) \ (!strncmp(line, name, sizeof(name) - 1) && \ (line[sizeof(name) - 1] == ' ' || \ line[sizeof(name) - 1] == '\t')) 

и строка, соответствующая ключевому слову search выглядит так:

 if (MATCH(buf, "search")) { 

strncmp() чувствителен к регистру, поэтому строка будет соответствовать только search в нижнем регистре (за которым следует пробел или вкладка). То же самое верно для других ключевых слов.

В синтаксическом коде игнорируются не совпадающие строки, поэтому вы не увидите ошибки, если случайно используете SEARCH вместо search : строка будет просто проигнорирована.

  • Использование файла, отличного от /etc/resolv.conf, для указания DNS-сервера
  • Невозможно переименовать файл resolv.conf как root
  • Настройки подключения по умолчанию NetworkManager
  • Как я могу разрешить общие URL-адреса DNS для Linux Mint и DNSmasq
  • каков поток запросов, когда resolv.conf сервера имен содержит только 127.0.0.1?
  • DNS на SUNOS 4.1.4 / Solaris
  • Как заставить resolv.conf работать старым образом в современных дистрибутивах Linux?
  • может ping google dns, но не google.de -> неизвестный хост // работал в другой сети
  • режим восстановления grub: etc / resolv.conf: нет такого файла или каталога
  • Как изменить порядок /etc/resolv.conf во время загрузки
  • Изменение версии Resolv.conf DNS
  • Как обновить nsswitch, чтобы использовать второй DNS-сервер, если есть NXDOMAIN?
  • Linux и Unix - лучшая ОС в мире.