당신은 정확히 잘못된 도구를 사용하고 있습니다.

당신은 정확히 잘못된 도구를 사용하고 있습니다.

두 개의 네트워크 카드가 있는 FreeBSD 시스템이 있습니다. 설정은 다음과 같습니다.

  • em0 ---> IP set via DHCP (192.168.1.0/24). "home" domain
  • em1 ---> IP set statically (10.0.0.2). "lab" domain

모든 의도와 목적을 위해 내 기본 도메인이 제대로 실행되고 있습니다. 인터넷에 접속하여 네트워크의 모든 호스트에 ping을 보낼 수 있습니다. 라우팅도 작동합니다. IP를 통해 FreeBSD 시스템에서 어느 도메인의 호스트든 ping할 수 있지만 홈 네트워크의 이름만 확인할 수 있습니다.

파일 을 생성 하고 다음과 같이 파일 /etc/resolvconf.conf에 검색 도메인과 네임서버를 추가했습니다 .resolv.conf

search_domains="lab"
name_servers="10.0.0.10" 

그런 다음 다음 명령을 사용하여 resolv.conf를 업데이트했습니다.

$ sudo resolvconf -u

lab이제 네트워크에서 이름을 확인할 수 있지만 더 이상 home네트워크에서 이름을 확인할 수 없습니다. resolv.conf 파일을 수동으로 편집하고 도메인 및 이름 서버의 순서를 바꾸면 해결이 이루어지지만 정반대는 home아닙니다 .lab

resolv.conf특정 도메인(정적으로 설정된 IP)에 대해 하나의 DNS 서버를 사용하고 DHCP를 통해 다른 IP에 대한 DNS 정보를 얻을 수 있도록 허용하려면 어떻게 해야 합니까 ?


참고용으로만....

/etc/rc.conf:

hostname="beastie1"
ifconfig_em0="DHCP"
ifconfig_em1="inet 10.0.0.2 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

/etc/resolv.conf

# Generated by resolvconf
search lab home.
nameserver 10.0.0.10
nameserver 192.168.1.1

도메인 10.0.0.0의 DNS "서버"는 labDHCP 임대를 제공하는 저렴한 소비자 Netgear 라우터에 지나지 않습니다. 부팅 이미지에 사용되는 TFTP 서버이기 때문에 이것을 정적으로만 설정했으며 일부 Cisco 장치에서 펌웨어 업데이트를 플래시하려고 할 때 편의를 위해 특별히 10.0.0.2로 설정했습니다.

답변1

당신은 정확히 잘못된 도구를 사용하고 있습니다.

이 작업은 DNS 클라이언트 라이브러리 내에서 수행되지 않습니다. DNS 클라이언트 라이브러리는 찾고 있는 이름을 기반으로 쿼리를 다른 콘텐츠 DNS 서버 집합으로 라우팅하도록 결정할 만큼 정교하지 않습니다. DNS 클라이언트 라이브러리는 이러한 종류의 작업을 포함하여 무거운 쿼리 확인 작업을 프록시 DNS 서버 확인에 위임합니다. 그들을구현되는 것분할 지평선 DNS 서비스, 이것이 원하는 메커니즘입니다.

귀하의 경우 FreeBSD(또는 DragonFly BSD 및 TrueOS와 같은 파생 제품)를 직접 사용했다면 이는 unbound로컬로 실행되는 인스턴스가 됩니다.

다음 세 가지 작업을 수행합니다.

  • 당신은 실행합니다 unbound.일반적인 방법으로 자동으로 시작되도록 활성화합니다 local_unbound_enable=YES./etc/rc.conf
  • unbound분할 지평선을 수행하도록 DNS 서비스를 구성합니다 . 당신은 이것을스텁 영역in은 귀하 와 귀하의 도메인을 unbound.conf나타내며 해당 도메인 이름과 그 아래의 모든 항목 및 해당 DNS 서버의 내용을 나타내고 역할을 합니다 .lab.example.com.home.example.com.10.0.0.10192.168.1.1
  • DNS 클라이언트 라이브러리에 서버만 쿼리하도록 지시합니다.DNS 클라이언트 라이브러리에 와 통신하도록 지시하는 행 nameserver( /etc/resolv.confname_servers키-값 쌍 ) 이 있습니다 . /etc/resolvconf.confunbound

노트:

  • home.및 를 사용하지 않습니다 lab.. 이는 실제 최상위 도메인입니다.당신이 소유하지 않은 것. home.지금까지 10개의 신청서가 ICANN에 제출되었습니다. 도메인 이름 사용당신이 가지고 있는 것, 당신이 모르는 사람이 아닙니다. example.com.위 내용 으로 대체합니다 .local.아니요, 귀하는 , localhost., dev.또는 corp.기타 콘텐츠의 상당 부분을 소유하고 있지 않습니다 .

    예를 들어 가 있는 경우 및 을 radiantnexus.com.사용합니다 .home.allan.radiantnexus.com.lab.allan.radiantnexus.com.

  • 검색 도메인을 적절하게 조정하세요., 정규화되지 않은 도메인 이름이 로컬 네임스페이스에서 발견될 것으로 예상되는 경우.

    search_domains="home.allan.radiantnexus.com lab.allan.radiantnexus.com"이전 예를 계속합니다.

  • 해결을 위해 다른 사람의 프록시 DNS 서버를 사용할 수 있다고 생각하지 마십시오. 기성 라우터, ISP 또는 Google에서 제공하는 확인 프록시 DNS 서버를 추가하는 것은 큰 실수입니다. DNS 클라이언트 라이브러리가 직접 통신하는 모든 서버~ 해야 하다공급같은 견해서로 일치하는 DNS 네임스페이스의 일부입니다. 구글 퍼블릭 DNS아무것도 모른다우선, 내부 네임스페이스에 관해 말씀드리겠습니다. 대체 DNS 서버를 원한다면 다음이 필요합니다.또 다른 지역DNS 서버는 다음과 같이 구성된 어딘가에 있습니다.동일한수평 분할 설정.
  • 또한 이름 조회를 위해 스텁 영역의 이름을 지정하려면 모든 비공개 IPv6 및 IPv4 주소가 필요합니다. 실제로 이러한 것들이 많이 있으며 이들의 조회 트래픽은 실제로 귀하/귀하의 조직 경계 외부로 누출되어서는 안 됩니다. 응, 그래.~해야 한다결합된 DHCP/DNS 서버에 의해 배포된 임대에 대해 주소-이름 조회가 작동하도록 하려면 이 영역이 로컬 영역이 아닌 스텁 영역이어야 합니다.

보너스 콘텐츠

저는 FreeBSD에서 djbdns를 사용하고 있습니다(패치...글쎄...제가 했습니다).

  • [email protected]nosh 도구 세트의 구성 가져오기 하위 시스템은 로컬 확인 프록시 DNS 서버를 실행하는 서비스와 통신하기 위해 로컬 루트 콘텐츠 DNS 서버를 [email protected]실행하는 서비스를 설정합니다 .[email protected][email protected]

    enable다음 명령을 사용하여 이러한 서비스를 활성화합니다 /etc/system-control/presets/20-djbwares.preset.

    ~할 수 있게 하다[이메일 보호됨]
    cyclog@axfrdns 활성화
    ~할 수 있게 하다[이메일 보호됨]
    cyclog@tinydns 활성화
    ~할 수 있게 하다[이메일 보호됨]
    cyclog@dnscache 활성화
  • .로컬 루트 콘텐츠 DNS 서버의 데이터베이스에는 ICANN에서 가져온 공개 데이터(대략 매년 사용됨) axfr-get와 내가 소유한 도메인 이름에 대한 내부 이름 데이터가 혼합되어 있습니다 .

    % ls -dl 루트/{data*,p*,root*,Makefile}
    -rw-r--r-- 1 루트 차크라 968 9월 16일 09:43 root/Makefile
    -rw-r--r-- 1 루트 차크라 571334 11월 28일, 00:33 루트/데이터
    -rw-r--r-- 루트 차크라 1개 1088169 11월 28일 00:33 root/data.cdb
    -rw-r--r-- 1 루트 차크라 3243 9월 16일 09:55 루트/비공개
    -rw-r--r-- 1 루트 차크라 6962 11월 28일, 00:32 루트/공개
    -rw-r--r-- 루트 차크라 1개 560853 2017년 3월 11일 루트/루트
    -rw-r--r-- 루트 차크라 1개 3668733 2017년 3월 11일 root/root.zone
    %

    root/private파일에는 다음과 같은 개인 데이터가 저장됩니다.

    =machine97.jdebp.eu:192.168.100.97:::lo
  • root/servers/@적용 범위가 해당 지점으로 보낼 수 있는 공개 콘텐츠 DNS 서버 주소 정보를 알 수 있도록 각 분할 지평선 정리 지점에 대해 이 파일을 복제했습니다 .[email protected]dnscache

    % ls -dli 루트/서버/{@,CEFip6.arpa,machine97.jdebp.eu}
    352608 -rw-r--r-- 46 루트 차크라 11 2016년 11월 23일 root/servers/@
    352608 -rw-r--r-- 46 루트 차크라 11 2016년 11월 23일 root/servers/CEFip6.arpa
    352608 -rw-r--r-- 46 루트 차크라 11 2016년 11월 23일 root/servers/machine97.jdebp.eu
    %
    (실제로 nosh 도구 세트는 나를 위해 개인 IP 주소를 표준으로 설정했습니다. 제공되는 내용과 이를 사용하는 다양한 방법에 대한 전체 장이 있습니다.스낵 가이드.)

이것은개인 루트설정. 그것은 중 하나입니다다른두 개의 콘텐츠 DNS 서버를 사용하여 분할 수평 DNS 서비스를 제공하는 방법에는 여러 가지가 있습니다. ( unbound위 설정에서는 다중 콘텐츠 DNS 서버 배열도 있습니다. 로컬 콘텐츠 DNS 서버는 컴퓨터 자체의 전용 DNS 서버가 아니라 LAN의 다른 컴퓨터에 있는 서버 입니다 10.0.0.10. )192.168.1.1127.53.0.1

또한 개인 루트는 Google Chrome의 감지부터 전체 인터넷으로 탈출하는 대신 fec0::/12IPv6 주소 및 IPv4 주소를 역매핑하려는 항목에 이르기 까지 존재하지 않는 항목에 대한 DNS 쿼리 트래픽을 더핑하는 이점도 제공합니다 .192.168.0.0/16

개인 루트에도 사용할 수 있습니다 unbound. 그러나 스텁 영역보다 더 복잡합니다. 나는 이것을 독자를 위한 연습으로 남겨두고 있으며, 이 답변의 범위를 벗어납니다.

추가 읽기

관련 정보