이름으로 virsh 호스트를 찾는 방법은 무엇입니까?

이름으로 virsh 호스트를 찾는 방법은 무엇입니까?

tl;dr: virsh에서 생성한 가상 머신을 찾기 위해 내 컴퓨터의 DNS를 어떻게 얻나요?

Ubuntu 18.04(bionic)에서 일반 패키지를 통해 virsh를 설치했습니다. 이로 인해 192.168.122.1에서 실행되는 dnsmasq 인스턴스(virsh 인스턴스용)와 127.0.0.53에서 실행되는 /lib/systemd/systemd-resolved 인스턴스라는 두 개의 이름 서버가 생성됩니다.

후자는 전자와 대화하지 않습니다. 이 문제를 해결하고 싶지만 어디서부터 시작해야 할지 잘 모르겠습니다.

virsh를 사용하여 가상 머신을 생성하면 DHCP를 사용하여 dnsmasq 인스턴스에서 IP 주소를 가져옵니다. 호스트는 이름(vippy)을 보내고 dnsmasq는 이를 기록합니다. 내 입력이 host vippy 192.168.122.1작동하지만 dnsmasq가 도메인 이름을 사용하도록 구성되지 않은 경우. 그래서 일하고 싶어요 host vippy.hosts.virsh 192.168.122.1.

다음 문제는 .hosts.virsh에 대한 모든 요청을 192.168.122.1로 라우팅하도록 systemd-resolved를 얻는 것입니다.

답변1

systemd중요한 서비스(ntp, dns, cron 등)에 대한 대부분의 대안과 마찬가지로 systemd-resolved이는 Lennart Poettering의 서비스와 매우 유사한 데스크톱에서만 작동하는 절반 정도의 구현입니다. 그것이 그의 시스템 요구 사항을 충족한다면 모든 사람에게 충분하므로 불평을 중지하십시오. WONTFIX NOTABUG 사용자 오류입니다. systemd는 init처럼 훌륭하지만 불행하게도 필요한 것보다 더 많은 일을 하려고 무능합니다.

먼저 비활성화하십시오 systemd-resolved.

systemctl stop systemd-resolved
systemctl disable systemd-resolved

그런 다음 실제 재귀 캐싱 네임서버( dnsmasq, unbound, 또는 기타)를 설치하고 도메인에 대한 요청을 192.168.122.1로 bind전달하도록 구성합니다.hosts.virsh

dnsmasq의 경우 다음과 같은 것을 사용할 수 있습니다 --server=/hosts.virsh/192.168.122.1.

바인딩을 사용하여 다음과 같이 전달 영역을 정의합니다 named.conf.

zone "hosts.virsh" {
        type forward;
        forwarders { 192.168.1.122; };
};

언바운드의 경우 다음과 같습니다.

forward-zone:
name: "hosts.virsh."
forward-addr: 192.168.1.122

이 이름 서버가 모든 IP 주소(또는 적어도 LAN 연결 가능 주소)를 수신하도록 구성된 경우 네트워크의 다른 컴퓨터에 대한 캐싱 확인자 역할을 할 수도 있습니다. 국제해사기구모든밀리초, 수십 또는 수백 밀리초보다 나은 캐싱 DNS 확인을 위한 밀리초 미만의 응답 시간을 가진 캐싱 확인자가 네트워크에 있어야 합니다.

dnsmasq이미 가상 머신에서 사용하고 있다면 Hosts.virsh의 전달자(해당 도메인 은 이미 구성되어 있습니다).

나는 그것을 사용하지 않기 때문에 시도하지 않았기 때문에 "해야 한다"고 말합니다 dnsmasq. 대신 ISC를 사용 dhdcpd하고 bind9내 도메인의 MAC 주소를 기반으로 고정 IP 주소를 하드코딩 dhdpd.conf하고 VM 항목을 도메인의 영역 파일에 수동으로 추가합니다. . 가운데.

관련 정보