IP 주소 대신 이름으로 libvirt 가상 머신에 연결하는 방법

IP 주소 대신 이름으로 libvirt 가상 머신에 연결하는 방법

내 libvirt 가상 머신에 이름으로 연결하고 싶습니다. 예전에는 가능했는데 지금은 불가능한가요? 각 가상 머신에 대해 추가 수동 구성을 수행하고 싶지 않습니다.

나는 예를 들어 할 수 있었습니다 ssh debian10-vm.local. 이는 MDNS/avahi의 마법을 활용합니다. 하지만 어느 시점에서 작동이 멈췄습니다. :-(. 현재 저는 Fedora Workstation 32를 실행하고 있습니다. 약간 이전 버전에서는 작동이 멈춘 것 같습니다.

중지하면 firewalld이전처럼 작동합니다. 하지만 방화벽을 계속 실행하고 싶습니다.

답변1

  1. 설치하다libvirt-nss. Fedora의 경우 를 실행합니다 dnf install libvirt-nss(Debian의 경우: ) apt install libnss-libvirt.

  2. 위 의 /etc/nsswitch.conf링크 에 예가 있습니다 .hosts:libvirt

  3. 이제 호스트 이름(예: )을 통해 가상 머신에 액세스할 수 있습니다 ssh debian10-vm. 이 솔루션에서는 .local.

답변2

1단계: /etc/firewalld/zones/libvirt.xml다음과 같이 생성

<?xml version="1.0" encoding="utf-8"?>
<zone target="ACCEPT">
  <short>libvirt</short>

  <description>
    The default policy of "ACCEPT" allows all packets to/from
    interfaces in the zone to be forwarded, while the (*low priority*)
    reject rule blocks any traffic destined for the host, except those
    services explicitly listed (that list can be modified as required
    by the local admin). This zone is intended to be used only by
    libvirt virtual networks - libvirt will add the bridge devices for
    all new virtual networks to this zone by default.
  </description>

<rule priority='32767'>
  <reject/>
</rule>
<protocol value='icmp'/>
<protocol value='ipv6-icmp'/>
<service name='dhcp'/>
<service name='dhcpv6'/>
<service name='dns'/>
<!-- <service name='ssh'/> --> <!-- Wut? No thank you. -->
<service name='tftp'/>

<service name='mdns'/> <!-- Added by the local admin :). -->
</zone>

2단계: 실행firewall-cmd --reload


libvirt 패치의 이러한 변경 사항에 대한 설명,"Firewalld "libvirt" 영역을 선택적으로 설치". 분명히 이것은 firewalldusing에서 iptablesusing으로 전환할 때 발생합니다 nftables.

관련 정보