resolv.conf의 키워드는 대소문자를 구분합니까?

resolv.conf의 키워드는 대소문자를 구분합니까?

/etc/resolv.conf주변을 둘러보면서 유효한 형식에 대한 다음 정보를 찾았습니다 .

그러나 나는 어디에서나 찾을 수 없습니다.resolv.conf 핵심 단어대소문자를 구분하지 않거나 대소문자를 구분하지 않습니다. 모두 소문자인 것 같아요대개, 하지만 꼭 그래야만 하나요? 대문자인 서버를 발견하면 버그입니까?

구글 검색이 나오네요이 포럼 주제, 여기서 코드 예제는 키워드가 대소 문자임을 나타내는 것으로 보입니다.존재하다예민한. 그러나 신뢰할 수 있는 문서에 대한 링크는 없습니다.

/etc/resolv.conf예를 들어 키워드는 대소문자를 nameserver구분합니까?

답변1

물론 glibc 파서 라이브러리에서는 대소문자를 구분합니다. MATCH 함수에서는 strncmp(대소문자 구분 비교) 대신 (대소문자 구분 비교) 를 사용합니다.strncasecmpglibc 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
#

답변2

보고 있다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해당 줄이 무시되고 오류가 표시되지 않습니다.

관련 정보