On 3/21/23 16:50, Natxo Asenjo wrote:
hi,
On Tue, Mar 21, 2023 at 3:40 PM Michal Prívozník <mprivozn(a)redhat.com
<mailto:mprivozn@redhat.com>> wrote:
On 3/19/23 20:21, Natxo Asenjo wrote:
> hi,
>
> I have configured a routed network on my laptop with a ipv6 subnet and
> dnsmasq is handing out ipv6 addresses to my vms and it works
really wel,
> but finding out which ips have been used is not as easy as with ipv4.
>
> [root@lenovo ~]# virsh domifaddr --domain wec --source lease
> Name MAC address Protocol Address
>
-------------------------------------------------------------------------------
>
> [root@lenovo ~]# virsh domifaddr --domain wec --source arp
> Name MAC address Protocol Address
>
-------------------------------------------------------------------------------
>
> When using a ipv4 network, this works:
>
> root@lenovo ~]# virsh domifaddr --domain evenng --source arp
> Name MAC address Protocol Address
>
-------------------------------------------------------------------------------
> vnet2 52:54:00:4c:83:98 ipv4 192.168.122.229/0
<
http://192.168.122.229/0>
> <
http://192.168.122.229/0 <
http://192.168.122.229/0>>
>
> [root@lenovo ~]# virsh domifaddr --domain evenng --source lease
> Name MAC address Protocol Address
>
-------------------------------------------------------------------------------
> vnet2 52:54:00:4c:83:98 ipv4 192.168.122.229/24
<
http://192.168.122.229/24>
> <
http://192.168.122.229/24 <
http://192.168.122.229/24>>
>
> I can obviously look into the leases file and find out the
address, but
> it would be nice to be able to use the virt tooling.
Looks like you won't find any info for IPv6 there, because that's
exactly what '--source lease' is doing. Are you sure that your IPv6
address is not autoconfigured and it indeed is libvirt spawned dnsmasq
that's assigning the IPv6 address?
this is the xml:
# cat networks/ipv6.xml
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made
using:
virsh net-edit ipv6
or other application using the libvirt API.
-->
<network>
<name>ipv6</name>
<uuid>49957183-e4e4-4541-8746-11be67f0a511</uuid>
<forward mode='open'/>
<bridge name='virbr1' stp='on' delay='0'/>
<mac address='52:54:00:09:8e:66'/>
<domain name='ipv6'/>
<ip family='ipv6' address='2a02:xxx:xx:7::1'
prefix='64'>
<dhcp>
<range start='2a02:xxx:xx:7::100' end='2a02:xxx:xx:7::1ff'/>
</dhcp>
</ip>
</network>
so it looks like a dhcp server to me ;-)
Yep. That's fine. The only thing missing now is how's the <interface/>
configured in domain XML. Because '--source leases' is designed to work
only with <interface type='network'/>. Any other type (e.g.
type='bridge') is ignored.
I just found out about virsh net-dhcp-leases and that one lists the leases:
# virsh net-dhcp-leases --network ipv6
Expiry Time MAC address Protocol IP address
Hostname Client ID or DUID
---------------------------------------------------------------------------------------------------------------------------------------------
2023-03-22 16:35:44 52:54:00:0e:ee:da ipv6
2a02:xxx:xx:7::1ba/64 WIN-C0HD8RH61MI
00:01:00:01:2b:a7:05:c5:52:54:00:0e:ee:da
And the fact that you can see some leases but virsh doesn't report any
suggests that you may be using type='bridge'.
For the '--source arp' case - libvirt reads the arp table (effectively
the same info is exposed under /proc/net/arp file) and finds a matching
entry there, based on the MAC address. Can you see whether there's a
match?
No, that only entry right now there is my router:
]# cat /proc/net/arp
IP address HW type Flags HW address Mask
Device
xx.x.x.1 0x1 0x2 cafebabecafe * wifi0
Yeah, this is why '--source arp' doesn't display anything. And I just
realized that IPv6 doesn't use ARP, so that won't work :-)
And lastly - there's '--source agent' which is most
likely to return
useful information, but that requires guest agent running inside.
Indeed, no agent running on the vm, could add it.
If you want to get most consistent answer then that's probably the way
to go.
Michal