CentOS 7에서 "host -v 호스트 이름" 명령이 작동하도록 만들기

CentOS 7에서 "host -v 호스트 이름" 명령이 작동하도록 만들기

새로운 CentOS 7을 설치했습니다. 설치 중에 centa.home.local을 호스트 이름으로 제공했습니다.

이제 소프트웨어 중 하나는 "host -v centa" 출력을 확인하여 서버에서 서버 IP 주소를 찾아야 합니다. 불행히도 IP 주소를 찾을 수 없습니다.

[user1@centa ~]$ ifconfig | grep inet
        inet 192.168.101.128  netmask 255.255.255.0  broadcast 192.168.101.255
        inet6 fe80::20c:29ff:fe00:f049  prefixlen 64  scopeid 0x20<link>
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
[user1@centa ~]$ hostname
centa.home.local
[user1@centa ~]$ hostname -d
home.local
[user1@centa ~]$ hostnamectl status
   Static hostname: centa.home.local
         Icon name: computer-vm
           Chassis: vm
        Machine ID: b2d53d8cc49e486f980d0f8461c415e2
           Boot ID: e2dbffd536434cc4ba530a17e8b186d6
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-514.el7.x86_64
      Architecture: x86-64
[user1@centa ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain
::1         localhost localhost.localdomain
192.168.101.128 centa.home.local centa
[user1@centa ~]$ cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain home.local
nameserver 192.168.101.2
[user1@centa ~]$ host -v centa
Trying "centa.localdomain"
Trying "centa.home.local"
Trying "centa"
Host centa not found: 3(NXDOMAIN)
Received 98 bytes from 192.168.101.2#53 in 136 ms
[user1@centa ~]$ 

답변1

유틸리티 host는 DNS 조회를 수행하므로 를 사용하지 않습니다 /etc/hosts. 이는 성공하려면 호스트가 일부 DNS 서버에 있어야 함을 의미합니다.
질문이 여기에 있으므로 이 DNS 레코드를 DNS 서버(192.168.101.2에 있는 레코드)에 추가하는 것은 선택 사항이 아니라고 가정합니다. 다행히도 NetworkManager를 사용하고 있기 때문에 실제로 이 문제를 꽤 쉽게 해결할 수 있습니다( 의 주석 처리된 줄에 표시됨 /etc/resolv.conf).

해결책은 dnsmasq를 활성화하고 구성하는 것입니다. dnsmasq는 localhost에서 실행되는 DNS 전달자입니다. 재귀적 조회 및 캐시 결과와 같은 간단한 작업을 수행할 수 있습니다. NetworkManager 에는 /etc/hostsdnsmasq 관리 기능이 내장되어 있습니다. 그래서 사용이 매우 간단합니다.

구성

/etc/hostsdnsmasq에 대한 NetworkManager의 기본 구성이 이 기능을 활성화하지 않기 때문에 구성 부분에서는 dnsmasq에게 레코드를 제공하도록 지시하고 있습니다 .

/etc/NetworkManager/dnsmasq.d/hosts.conf다음 내용으로 파일을 만듭니다.

addn-hosts=/etc/hosts

~할 수 있게 하다

섹션에 매개변수를 추가하면 활성화됩니다 dns = dnsmasq. 예를 들어:[main]/etc/NetworkManager/NetworkManager.conf

[main]
dns = dnsmasq

이 작업을 수행한 후 NetworkManager를 다시 시작합니다( 를 통해 systemctl restart NetworkManager.service).

용법

이제 를 가리키는 항목이 /etc/resolv.conf하나만 있음 을 알 수 있습니다 . 네임서버를 조회하는 데 사용되는 모든 도구는 이제 결국 dnsmasq를 누르고 에서 레코드를 수신해야 합니다 . 에 레코드가 없으면 조회가 업스트림 DNS 서버로 전달됩니다 . (192.168.101.2).nameserver127.0.0.1/etc/resolv.conf/etc/hosts/etc/hosts

관련 정보