나는 dhcpcd만 사용하고 /etc/resolv.conf를 추가하여 domain.local을 검색하고 싶습니다.

나는 dhcpcd만 사용하고 /etc/resolv.conf를 추가하여 domain.local을 검색하고 싶습니다.

네트워크 관리자를 사용하지 않고 IP 주소를 설정하기 위해 dhcpcd만 사용하는 컴퓨터가 많습니다. 예를 들어 내 Raspberry Pi 4가 있습니다. /etc/dhcpcd.conf 파일에 IP 주소를 정적으로 할당했는데 제대로 작동하니 만족스럽습니다. 내가 원하는 것은 nslookup machine2(예를 들어)를 입력하면 구성된 도메인을 해당 조회에 추가하는 것입니다.

dhcpcd(내 ArchLinux PC)를 사용하는 다른 컴퓨터에서는 dhcpcd를 통해 dhcp를 사용하도록 주소를 구성했습니다(즉, 이번에는 정적이 아님). 내 DHCP 서버에서는 클라이언트에 반환되는 옵션으로 도메인 이름 필드를 지정하도록 설정했습니다. 결과적으로 내 /etc/resolv.conf 파일이 다음 줄로 업데이트됩니다.

도메인 이름 mydomain.local

이 파일에 이 "도메인" 값이 설정되어 있으므로 nslookup machine2를 입력하면 쿼리에 mydomain.local이 추가되고 내 DNS 서버는 machine2.mydomain.local의 fqdn에 대한 IP를 확인합니다.

따라서 이상적으로는 이 설정을 모방하여 라즈베리 파이4가 동일한 작업을 수행하도록 하고 싶지만 정적으로 설정되어 있으므로 어떻게 해야 합니까?

/etc/resolv.conf 파일에 "search domain.local"을 추가하려고 시도했는데 원하는 대로 작동했지만 재부팅 시 이러한 설정이 손실되므로 여기서 이 값을 설정할 수 없습니다. dhcpcd에 대한 올바른 작업 솔루션이 필요합니다.

고쳐 쓰다:

/etc/resolv.conf의 출력을 여기에 넣으라는 요청을 받았습니다:

$ cat /etc/resolv.conf
# Generated by resolvconf
nameserver 10.10.0.1

답변1

(마침내) 올바르게 이해했다면 dhcpcd.conf(dhcpd.conf 아님)를 사용하여 네트워크를 구성한 것입니다.

다음과 유사한 구성을 사용하고 싶습니다.

interface eth0
static ip_address=192.168.2.31/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1 8.8.8.8 4.2.2.1

도메인 및 검색 도메인을 설정하려면 다음과 같은 항목을 추가할 수 있어야 합니다.

static domain_name=example.com
static domain_search=example.com

즉, 그냥 domain_search정적 옵션으로 설정하면 됩니다.

참고로 여기를 보세요http://www.techsneeze.com/configuring-static-ip-raspberry-pi-running-raspbian/


OP가 지적했듯이 이 옵션은 잘 숨겨져 있습니다. 추론에 따르면 dhcpcd는 DHCP 개념을 기반으로 구축된 네트워크 구성 도구입니다. dhcpcd에서는 DHCP 응답(부분)을 정의하여 정적 구성을 설정할 수 있습니다. 따라서 이 경우 대답은 domain_search정적으로 정의된 값에 추가하는 것입니다.

문서가 부족한 이유는 DHCP가 사용자 정의 DHCP 옵션을 추가할 수 있도록 허용하기 때문일 수 있습니다. 그러므로 dhcpcd가 정적으로 정의할 수 있는 모든 옵션을 나열하는 것은 불가능합니다. 이는 domain_search핵심 DHCP 표준의 일부가 아니기 때문에RFC 3397.

그것이 말하는 것입니다. 매뉴얼에 더 잘 설명되어 있습니다.

답변2

nslookup을 사용하여 답변을 얻는 방법을 잘 모르겠습니다. 그러나 문제 해결 방법을 알려주기 위해 nsswitch.conf 파일을 사용하는 프로그램의 경우 쿼리 대상이 avahi(또는 Zero_conf, 즉 mDNS 데몬)를 실행 중이면 이 작업을 수행할 수 있습니다. getent cmd는 그러한 유틸리티 중 하나입니다. 예를 들어, 내 LAN에 "shadow"라는 이름의 PC가 있습니다.

`getent hosts shadow`

아무것도 반환하지 않습니다.

그러나 getent hosts shadow.local 다음을 반환합니다.

192.168.1.76 Shadow.local

avahi-resolve -n shadow반품

호스트 이름 확인자를 생성할 수 없습니다. 호스트 이름이 잘못되었습니다.

avahi-resolve -n Shadow.local은 다음을 반환합니다.

Shadow.local192.168.1.76

비록 나는 "로컬" 도메인을 어디에도 정의한 적이 없습니다.

이렇게 하려면 대상이 온라인 상태여야 mDNS 폴링에 응답할 수 있습니다. 예를 들어, 호스트 hector가 오프라인인 경우:

avahi-resolve -n hector.local

호스트 이름 'hector.local'을 확인할 수 없습니다: 시간 초과에 도달했습니다.

getent hosts hector.local

시간이 초과되어 아무것도 반환되지 않았습니다.

핵심은 /etc/nsswitch.conf 파일에 다음 줄을 포함하는 것입니다.

호스트: 파일 mdns4_minimal [NOTFOUND=return] dns myhostname

이렇게 하면 getent와 같은 cmd가 먼저 /etc/hosts 파일을 확인하고 호스트가 거기에서 발견되지 않으면 mDNS 기능을 사용해 봅니다.

avahi를 설치하고 실행하면 getent가 확인하는 경로에 필요한 라이브러리가 자동으로 추가되어 getent가 nsswitch.conf 파일에서 mdns4_minimal을 볼 때 무엇을 해야 할지 알 수 있다고 생각했습니다.

위는 일부 (불만족스러운) 해킹입니다. dhcpd가 원하는 작업을 수행하도록 강제하는 방법을 알고 싶습니다. PGMER6809

관련 정보