resolv.conf를 지속적으로 덮어쓰는 경우 dhclient를 사용하여 정적 DNS를 설정하는 방법은 무엇입니까?

resolv.conf를 지속적으로 덮어쓰는 경우 dhclient를 사용하여 정적 DNS를 설정하는 방법은 무엇입니까?

따르다데비안 네트워크 구성 위키, 저는 정적 설정을 시도하고 있습니다오픈NIC DNS성공하지 못했습니다. 처음에 직접 편집을 해봤는데 /etc/resolv.conf계속 덮어씌워지더라고요. 위키 페이지에는 세 가지 가능한 범위 소스가 나열되어 있습니다.

  1. 이것resolvconf프로그램
  2. 이것network-manager악마
  3. DHCP 클라이언트
$ apt-cache policy resolvconf
resolvconf:
  Installed: (none)
  Candidate: 1.76.1
  Version table:
     1.76.1 0
        500 http://ftp.us.debian.org/debian/ jessie/main amd64 Packages
$ apt-cache policy network-manager
network-manager:
  Installed: (none)
  Candidate: 0.9.10.0-7
  Version table:
     0.9.10.0-7 0
        500 http://ftp.us.debian.org/debian/ jessie/main amd64 Packages

내가 갖고 있지 않거나 설치되어 있지 않다는 점을 고려하면 resolvconf소스 network-manager가 DHCP 클라이언트라고 가정할 수 있습니다. wicd대안을 사용하고 있지만 network-manager속성에 정적 DNS를 설정하면 wicd-gtk작동하지 않습니다. 그래서 /etc/dhcp/dhclient.conf추가하여 편집했지만 여전히 supersede domain-name-servers 50.116.40.226;다음과 /etc/resolv.conf같습니다.

$ cat /etc/resolv.conf
nameserver 2001:558:feed::2
nameserver 2001:558:feed::1

정확히 무슨 일이 일어나고 있는 걸까요? 설치해서 resolvconf작동하는지 확인해 볼까요? 포기 wicd하고 설치 해야 할까요 network-manager?

답변1

귀하의 DHCP 서버가 원치 않는 응답을 보내는 것 같습니다. 따라서 대체 매개변수를 설정하면 resolv.conf도 덮어쓰게 됩니다. +i 속성을 추가하는 것이 해결책일 수 있지만 일부 변경이 필요한 경우 수동으로 설정을 해제하고 재설정해야 합니다.

실제로 클라이언트 측에서 일부 스크립트를 작성할 수 있습니다(참조:man 8 dhclient-script).

이 주제도 설명되어 있습니다.데비안 위키:

또 다른 방법은 dhclient-script 후크 스크립트를 활용하는 것입니다. dhclient-script(8)에 따르면:

시작 시 클라이언트 스크립트는 먼저 나중에 /etc/resolv.conf 파일을 생성하는 데 사용되는 쉘 함수 make_resolv_conf를 정의합니다. 기본 동작을 재정의하려면 Enter 후크 스크립트에서 이 함수를 재정의하세요. 따라서 다음을 수행하여 dhclient가 resolv.conf를 덮어쓰는 것을 방지할 수 있습니다.

echo 'make_resolv_conf() { :; }' > /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone
chmod 755 /etc/dhcp/dhclient-enter-hooks.d/leave_my_resolv_conf_alone

dhclient-script가 읽을 파일을 결정하기 위해 run-parts(8)를 사용하기 때문에 실행 비트가 필요합니다. 같은 이유로 파일 이름에는 문자, 숫자, 밑줄, 하이픈 외에는 어떤 것도 포함할 수 없습니다.

답변2

dhcp 클라이언트가 조작된 /etc/resolv.conf를 업데이트하지 못하도록 하려면 다음 해결 방법을 사용하십시오.

# chattr +i /etc/resolv.conf

답변3

그런데 친구도 아니고 일이 잘 안 풀리는데, 떠나기 전에 잘 살펴봐야 하니까 "chattr+i" 파일을 시스템에 적용해서 가끔은 문제에 대한 해결책을 찾아봐야 할 것 같아요 , 이러한 것들은 너무 간단하고 바로 앞에 있어서 우리가 긴장하고 시스템에 우리의 의지를 강요하기 때문에 채울 수 없습니다. 때로는 작은 스크립트가 네트워크에서 잘 실행될 때 놀라운 일을 할 수도 있지만, 분명히 당신은 원하지 않을 것입니다. 그런데 저는 시스템 관리자가 되기 위해 공부하고 있지 않거나 공부하고 있습니다. 죄송합니다! 하지만 긴장해서 시스템에 이런 무의미한 트릭을 수행하고 싶다면 결국 내 시스템에는 없으므로 화나게 해서 죄송합니다! 대신 이렇게 하세요! "chattr" 명령을 사용하여 구성하려면 "인터페이스" 파일(일반적으로 /etc/network/ 폴더에 있음)을 편집하고 원하는 네임서버 IP로 dns-nameserver 옵션을 추가/변경하세요. 이러한 옵션이 파일에 없으면 간단한 예로 추가할 수 있습니다.

-예: "/etc/network/interfaces" 파일을 다음과 같이 편집하세요.

   auto lo
   iface lo inet loopback
   iface lo inet6 loopback

   iface eth0 inet dhcp <= Here would be for DHCP devices.
   iface eth0 init 192.168.1.2 <= Here your fixed IP on the network.
   iface eth0 inet6 auto <= Here you define your IPv6 automatically.

   dns-nameserver 192.168.1.1 <= Your IP address here.
   dns-nameserver 8.8.8.8
   dns-nameserver 8.8.4.4

-파일을 저장하고 네트워크를 다시 시작하세요..

귀하의 경우 서버의 IP 주소를 설정하고 인터페이스 파일 끝에 다음을 설정하기만 하면 됩니다.

   dns-nameserver 8.8.4.4
   dns-nameserver 8.8.8.8

이것은 여기에 사용된 예입니다. DHCP를 사용하지 않는 경우에만 라우터에 의해 자동으로 정의된 IP를 사용해야 합니다. 이 IP는 네트워크 시스템에서 시작할 때마다 변경됩니다.

    auto lo
    iface lo inet loopback
    iface lo inet6 loopback
    iface eth0 inet static

            address 192.168.1.4/24
            netmask 255.255.255.0
            gateway 192.168.1.1

   dns-nameserver 192.168.1.4
   dns-nameserver 8.8.4.4
   dns-nameserver 8.8.8.8

-여기에는 더 잘 확인하고 이해하기 위한 작은 예가 있습니다.

관련 정보