CentOS에서 회전, 시간 초과와 같은 resolv.conf 옵션을 유지하는 방법은 무엇입니까?


9

CentOS는 /etc/resolv.conf정기적으로 수행 한 수동 변경 사항을 모두 지 웁니다. Linux의 기본값은 적절한 시간에 장애 조치 (failover) 측면에서 좋지 않습니다 (매번 동일한 순서로 쿼리 이름 서버, 5 초 시간 초과, 2 회 재시도).

따라서 귀하의 첫 번째 DNS resolv.conf는 본질적으로 중요한 경로입니다. 실패하면 10 초 전에 장애 조치를 수행 할 수 있습니다.

이러한 기본값은 조정할 수 있지만 ( resolv.conf 매뉴얼 페이지 참조) CentOS에서 어떻게 변경 사항을 영구적으로 적용하고 재부팅 등을 통해 유지할 수 있습니까?

답변:


12

대답은 다음에서 찾을 수 있습니다 /sbin/dhclient-script.

if [ -n "${RES_OPTIONS}" ]; then
    echo "options ${RES_OPTIONS}" >> ${rscf}
fi

그러나 RES_OPTIONS스크립트에서 스크립트를 선택하도록 설정할 수있는 곳은 분명하지 않습니다. 검색 도메인과 같은 일부 ifcfg-ethX파일에 설정할 수 있지만 리졸버 옵션은 다른 곳에 설정되어 있습니다. 원하는 파일은 실제로 /etc/sysconfig/network입니다. 관련 옵션을 설정하려면 해당 파일에 다음 줄을 추가하십시오.

RES_OPTIONS="rotate timeout:1 retries:1"

타임 아웃을 1 초로 설정하고 단일 재 시도를 사용하고 매번 목록을 순차적으로 처리하는 대신 요청마다 리졸버를 회전하도록 클라이언트에 지시합니다.

변경 사항을 즉시 적용 service network restart하려면 명령을 내리고 새로운 /etc/resolv.conf영광을 확인하십시오 . 이것을 테스트 할 때 내 모습은 다음과 같습니다.

# cat /etc/resolv.conf 
; generated by /sbin/dhclient-script
search example.com
options rotate timeout:1 retries:1
nameserver 10.1.1.2
nameserver 10.1.1.1

1

레거시 네트워킹 스크립트를 사용할 때 허용되는 답변입니다. NetworkManager 를 사용하는 경우 네트워크 관리자 가 없을 수도 있으며 /etc/sysconfig/network, 사용하는 경우 여전히 NetworkManager가 관리하는 연결에 사용되지 않습니다 .

NetworkManager 를 사용하는 경우 :

예는 추가 옵션을 추가 rotate로를 bond0:

nmcli con mod bond0 +ipv4.dns-options rotate

해당 옵션을 제거하려면

nmcli con mod bond0 -ipv4.dns-options rotate

+옵션도 변경 하는 것이 좋습니다. NetworkManager 는 기존 옵션을 감지하고 업데이트 할 수있을 정도로 똑똑합니다. 예를 들어, 시간 종료 값 변경 :

root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:5"
root@debian:~# nmcli con mod bond0 +ipv4.dns-options timeout:3
root@debian:~# nmcli con show bond0 |grep ipv4.dns-options
ipv4.dns-options:                       "rotate,timeout:3"

이는 제거를 위해 값이 무시되고 필요하지도 않음을 의미합니다. 시간 초과를 제거하려면

nmcli con mod bond0 -ipv4.dns-options timeout

시간 초과 값으로도 작동하지만 해당 값은 무시 되므로 제거 timeout:5하면 다른 시간 초과 값도 제거됩니다.

NB :이를 살펴 보면서 네트워크 관리자 v1.14.6 , v1.15.2-devv1.16 에서 수정 된 관련 버그 가 발견되었습니다 . 문제가 발생하면 먼저 네트워크 관리자 버전을 확인하십시오 .


1
허용되는 이전 답변에 새 답변을 추가 할 때는 질문과 답변이 몇 살인지 기록하는 것이 좋습니다. 레거시로 간주되는 것은 4 년 전에 질문을 받았을 때 반드시 그런 것은 아닙니다. 레거시로 태그를 지정하는 대신 기본값이 변경된시기 (어떤 CentOS 버전-8일까요?)를 기록한 다음 정보를 추가 한 경우 훨씬 유용한 답변이 될 것입니다. 또는 새로운 버전 (예 : 최신 CentOS 버전의 경우 또는 Network Manager를 사용하는 경우)을 다시 질문하고 응답하여이 이전 버전으로 다시 연결하여 참조하십시오.
Adam C

구식 방법은 여전히 ​​유효하지만 NetworkManager는 오랫동안 사용되어 왔지만 데비안과 CentOS에서 구식을 계속 구성 할 수 있습니다.
Thomas Guyot-Sionnest

0

nmcli구성 관리 도구와 같은 명령이 아닌 플랫 파일로이 작업을 수행해야하는 경우 Red Hat은 다른 솔루션을 제공합니다.

/etc/NetworkManager/dispatcher.d/15-resolv사용자 정의 /etc/resolv.conf를 제자리에 복사 하는 스크립트를 작성하십시오 .

#!/bin/bash
#
# Description : script to override default resolv.conf file
# with customized file.
cp -f /etc/resolv.conf.custom /etc/resolv.conf

NetworkManager를 다시 시작하면이 스크립트가 실행되어 파일을 자신의 것으로 바꿉니다.

https://access.redhat.com/solutions/61921


0

/etc/resolv.conf파일을 모두 함께 관리하지 않도록 NetworkManager에 지시 할 수 있습니다 .

  1. /etc/NetworkManager/conf.d/90-dns-none.conf다음 내용으로 파일을 작성하십시오 .

    [main]
    dns=none
    
  2. NetworkManager 서비스를 다시로드하십시오.

    systemctl reload NetworkManager
    

이 문서에는 /etc/resolv.conf파일에 대한 심볼릭 링크로 대체하는 두 번째 솔루션이 있습니다.

이에게 읽어주세요 : 22. 수동으로 /etc/resolv.conf 파일을 구성


-1

그냥 추가

resolv_conf_options=rotate\ timeout:1\ retries:1

당신의 resolvconf.conf


CentOS의 옵션인지 확인하십시오 (문서 / 링크가 표시되어 있음)? FreeBSD 옵션과 Ubuntu로 보았지만 CentOS에서는 찾지 못했습니다
Adam C

그것은 openresolv 패키지 의 일부입니다
Evgeny F

1
표준 패키지는 아닌 것 같습니다. 따라서 특히 제어 된 환경에서 CentOS를위한 옵션이 아니라 다른 곳에서는 나쁜 옵션이 아닙니다
Adam C

-3

지난번에 새로 가입 한 Linux VPS에서 같은 문제에 직면했습니다. 내가 해결 한 방법은 chattr + i 명령을 사용하여 파일을 변경할 수 없도록하는 것이 었습니다. resolv.conf 파일을 필요한대로 변경 한 후 / etc 폴더로 이동하여이를 실행하십시오.

chattr + i resolv.conf

설정을 되돌리려면 다음과 같이하십시오.

chattr -i resolv.conf

참조를위한 전체 지침 : http://boxtutor.com/fix-etcresolv-conf-is-not-saving-after-server-reboot/


DHCP에서 네임 서버에 대한 변경 사항을 선택할 수 없기 때문에 잠재적 인 문제가 될 수 있습니다. 자주 변경되지는 않지만 여전히 작동하고 싶습니다.
Adam C
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.