LINUX.ORG.RU

Сломал сеть в virt-manager

 , ,


0

2

Предыстория такова: Пару месяцев назад, ковырял конфиги этого самого virt-manager, дабы виртуальна машина увидела роутер, дабы его перепрошить тулзой под оффтопик. Виртуальная машина к роутеру не подключилась, а вернуть все что я там навротил взад - забыл.

Теперь, понадобилась виртуалка, а в ней сети нет. Переустановил оффтопик - без результата. Запустил виртуалку с Debian - тоже сети нет. Удалил саму програму командами: apt purge virt-manager, apt autoremove, очистил кеш. Удалил даже файлы с каталога libvirt (а то apt не удалил). Установил заново - сети нет.

VirtualBox есть, в нем сеть есть.

Вопрос: кто виноват и что делать?

★★★

Последнее исправление: Riniko (всего исправлений: 1)

конфиги они не у virt-manager, а у демона libvirtd к которому ты подключаешься (он может быть и локальным) + у конкретных VM.

При этом libvirtd может настройку сети (NAT и пр.) и не осуществлять. Например у меня libvirtd установлен без этого флага

 - - virt-network      : Enable virtual networking (NAT) support for guests. Includes all the dependencies for NATed
                         network mode. Effectively any network setup that relies on libvirt to setup and configure
                         network interfaces on your host. This can include bridged and routed networks ONLY if you are
                         allowing libvirt to create and manage the underlying devices for you. In some cases this
                         requires enabling the 'netcf' USE flag (currently unavailable). 
Т.е. список virsh net-list --all в моем случае тоже пустой. В настройках VM (в свойствах сетевого адаптера) указано «bridge device» и имя бриджа. Бридж можно создать вручную (через brctl), либо в прописать в конфигах сети.

VirtualBox есть, в нем сеть есть.

Гм, virtualbox ты тоже из virt-manager используешь (это один из поддерживаемых типов гипервизоров в libvirtd)?
Какой вообще тип гипервизора у проблемной VM?

MirandaUser2
()
Ответ на: комментарий от kostik87

Вообще там в вирутал менеджере в гуе (если не осилил virsh) есть вкладка сеть, что там по дефаульту (какой то левый нат) или мост …

virsh net-dumpxml NetworkName
virsh net-edit network
...

P.S. создай новую и глянь там virsh dumpxml вируталка > 1.xml

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 2)

mx__, kostik87. Что-то с сетью, я точно редактировал конфиги, а что именно и как - уже не помню. Удалил libvirt:

sudo systemctl stop libvirtd
sudo systemctl stop virtlogd
sudo apt purge --autoremove libvirt-daemon-system libvirt-clients libvirt-daemon virt-manager
sudo rm -rf /etc/libvirt
sudo rm -rf /var/lib/libvirt

Установил заново, теперь в статусе только ошибка:

ошибка действия: сеть "default" уже существует с UUID ABCD-1234

При попытке установить автозапуск сети default:

ошибка: не удается обозначить сеть default для автозапуска
ошибка: Запрошенное действие некорректно: нельзя указывать автозапуск для промежуточной сети

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

Чел. выше правильно писал: ip addr

ошибка действия: сеть «default» уже существует с UUID ABCD-1234

У тебя осталась мотыляться старая сеть.

если бы была шапка/fedora я бы поглядел nmcli c …

mx__ ★★★★★
()
Ответ на: комментарий от mx__
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: enp0s31f6: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel state DOWN group default qlen 1000
    link/ether f5:4d:63:t7:ea:e7 brd ff:ff:ff:ff:ff:ff
3: wwan0: <BROADCAST,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 4b:34:c2:3w:9j:18 brd ff:ff:ff:ff:ff:ff
4: wlp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 21:g4:8y:p2:27:8d brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.125/24 brd 192.168.1.255 scope global dynamic noprefixroute wlp4s0
       valid_lft 84255sec preferred_lft 84255sec
    inet6 fe80::0d45:83of:g7s2:7151/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever
5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 36:21:05:00:d8:p5 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever

После перезапуска системы, ошибка действия пропала. Но сети нет. Сеть default активна, в автозапуске.

Riniko ★★★
() автор топика
Ответ на: комментарий от MirandaUser2

Благодарю, libvirt переустановил.

Гм, virtualbox ты тоже из virt-manager используешь (это один из поддерживаемых типов гипервизоров в libvirtd)?

Нет, у неё отдельное приложение для запуска

Какой вообще тип гипервизора у проблемной VM?

По умолчанию, вероятно qemu-kvm.

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

Но сети нет.

Как Вы это определяете?

P.S. Натовская дефаультская сеть virbr0 …

5: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN

Я правда не помню она всегда поднята или нет, так как юзаю только мосты. А дефаульт отрубаю.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 3)
Ответ на: комментарий от mx__

Теперь, появился еще один интерфейс:

8: vnet1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master virbr0 state UNKNOWN group default qlen 1000
    link/ether fe:54:00:97:56:80 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe97:5680/64 scope link 
       valid_lft forever preferred_lft forever

С ним что-то делать нужно?

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

в виртуалке сеть должна быть посажена на эту натовскую сеть и вы должны пинговать 192.168.122.1.

мне непонятно у вас всегда написано странный статус интерфейса то state DOWN то state UNKNOWN

Вы настраивате виртуалку как через гуй? или через кли?

mx__ ★★★★★
()
Ответ на: комментарий от Riniko

ладно фиг с ним с гуем. Начинаем сначала.

virsh net-list --all
virsh net-dumpxml NetworkName
virsh list --all
virsh dumpxml машина

Эти 2 хмл в студию.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

sudo virsh net-dumpxml default:

<network>
  <name>default</name>
  <uuid>592a3314-7634-4d41-befa-bda5e1d5e7a6</uuid>
  <forward mode='nat'>
    <nat>
      <port start='1024' end='65535'/>
    </nat>
  </forward>
  <bridge name='virbr0' stp='on' delay='0'/>
  <mac address='36:21:05:00:d8:p5'/>
  <ip address='192.168.122.1' netmask='255.255.255.0'>
    <dhcp>
      <range start='192.168.122.2' end='192.168.122.254'/>
    </dhcp>
  </ip>
</network>

sudo virsh dumpxml win10

<domain type='kvm'>
  <name>win10</name>
  <uuid>724ba164-9cb6-44fa-b8a2-cba1190f2d3d</uuid>
  <metadata>
    <libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
      <libosinfo:os id="http://microsoft.com/win/10"/>
    </libosinfo:libosinfo>
  </metadata>
  <memory unit='KiB'>4194304</memory>
  <currentMemory unit='KiB'>4194304</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='pc-q35-7.2'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <hyperv mode='custom'>
      <relaxed state='on'/>
      <vapic state='on'/>
      <spinlocks state='on' retries='8191'/>
    </hyperv>
    <vmport state='off'/>
  </features>
  <cpu mode='host-passthrough' check='none' migratable='on'/>
  <clock offset='localtime'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
    <timer name='hypervclock' present='yes'/>
  </clock>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>destroy</on_crash>
  <pm>
    <suspend-to-mem enabled='no'/>
    <suspend-to-disk enabled='no'/>
  </pm>
  <devices>
    <emulator>/usr/bin/qemu-system-x86_64</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/win10.qcow2'/>
      <target dev='sda' bus='sata'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/home/nozomi/windows_10.iso'/>
      <target dev='sdb' bus='sata'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <controller type='usb' index='0' model='qemu-xhci' ports='15'>
      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
    </controller>
    <controller type='pci' index='0' model='pcie-root'/>
    <controller type='pci' index='1' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='1' port='0x10'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='2' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='2' port='0x11'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x1'/>
    </controller>
    <controller type='pci' index='3' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='3' port='0x12'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x2'/>
    </controller>
    <controller type='pci' index='4' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='4' port='0x13'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x3'/>
    </controller>
    <controller type='pci' index='5' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='5' port='0x14'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x4'/>
    </controller>
    <controller type='pci' index='6' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='6' port='0x15'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x5'/>
    </controller>
    <controller type='pci' index='7' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='7' port='0x16'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x6'/>
    </controller>
    <controller type='pci' index='8' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='8' port='0x17'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x7'/>
    </controller>
    <controller type='pci' index='9' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='9' port='0x18'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0' multifunction='on'/>
    </controller>
    <controller type='pci' index='10' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='10' port='0x19'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x1'/>
    </controller>
    <controller type='pci' index='11' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='11' port='0x1a'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x2'/>
    </controller>
    <controller type='pci' index='12' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='12' port='0x1b'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x3'/>
    </controller>
    <controller type='pci' index='13' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='13' port='0x1c'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x4'/>
    </controller>
    <controller type='pci' index='14' model='pcie-root-port'>
      <model name='pcie-root-port'/>
      <target chassis='14' port='0x1d'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x5'/>
    </controller>
    <controller type='sata' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
    </controller>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
    </controller>
    <interface type='network'>
      <mac address='52:54:00:35:7f:41'/>
      <source network='default'/>
      <model type='e1000e'/>
      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target type='isa-serial' port='0'>
        <model name='isa-serial'/>
      </target>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'>
      <address type='usb' bus='0' port='1'/>
    </input>
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>
    <graphics type='spice' autoport='yes'>
      <listen type='address'/>
      <image compression='off'/>
    </graphics>
    <sound model='ich9'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
    </sound>
    <audio id='1' type='spice'/>
    <video>
      <model type='qxl' ram='65536' vram='65536' vgamem='16384' heads='1' primary='yes'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
    </video>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='2'/>
    </redirdev>
    <redirdev bus='usb' type='spicevmc'>
      <address type='usb' bus='0' port='3'/>
    </redirdev>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
    </memballoon>
  </devices>
</domain>
Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

А ты, случайно, после старта libvirt не перестартовываешь файрвол со всеми правилами? libvirt динамически делает для правила, в т.ч. и для nat’а.

Покажи iptables -t nat -nvL

Dimez ★★★★★
()
Ответ на: комментарий от Riniko

Пинг есть.

А почему вы говорить что нет сети?

Если вы про то что с виндовс нельзя залезть в инет то первым делом нужно проверить форвардинг на хосте. Потом уже глядеть фиревалл, что там у вас nftables?

первый же поиск выдал: https://hubandspoke.amastelek.com/how-to-enable-ip-forwarding-on-debian-12-bookworm

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)

Dimez, там нет iptables, а установленный по умолчанию nftables, был отключен. Я включил nftables, но без результата (цепочки правил в nftables я не настраивал никакие. Как впрочем и в iptables).

mx__,

А почему вы говорить что нет сети?

Извините, не так выразился. На Win10 пинги есть, как локально так и на 8.8.8.8. Но, при попытке пропинговать google.com ошибка: Ping request could not find host google.com. Please check the name and try again. На хосте, имя пингуется. Ещё, включил форвардинг: sudo sysctl -w net.ipv4.ip_forward=1

Отредактировал /etc/sysctl.conf, раскоментировал и дописал:

net.ipv4.ip_forward=1
net.netfilter.nf_conntrack_max=1048576

Сохранил, перезапустил систему. Без изменений.

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

Я включил nftables, но без результата (цепочки правил в nftables я не настраивал никакие. Как впрочем и в iptables).

Да какая разница, nft list ruleset?

Сохранил, перезапустил систему. Без изменений.

А, оно должно подняться нормально после перезагрузки. Посмотри systemctl status и вообще логи

Dimez ★★★★★
()
Последнее исправление: Dimez (всего исправлений: 1)
Ответ на: комментарий от Dimez

nft list ruleset:

table inet filter {
	chain input {
		type filter hook input priority filter; policy accept;
	}

	chain forward {
		type filter hook forward priority filter; policy accept;
	}

	chain output {
		type filter hook output priority filter; policy accept;
	}
}

[/inline systemctl status nftables]:

nftables.service - nftables
     Loaded: loaded (/lib/systemd/system/nftables.service; enabled; preset: enabled)
     Active: active (exited) since Thu 2025-08-07 00:12:25 EEST; 1min 53s ago
       Docs: man:nft(8)
             http://wiki.nftables.org
    Process: 5846 ExecStart=/usr/sbin/nft -f /etc/nftables.conf (code=exited, status=0/SUCCESS)
   Main PID: 5846 (code=exited, status=0/SUCCESS)
        CPU: 19ms

Какие именно логи посмотреть?

Гуглю, может стоит в файле /etc/sysctl.conf, дополнительно указать net.ipv4.conf.virbr0.forwarding=1? Глянул еще раз интерфейсы, virbr0 снова DOWN, поднимаю командой sudo ip link set virbr0 up, а он по прежнему DOWN.

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

Ну вы блин даете. Это же просто ДНС не пашет в госте.

ДНС это просто 53 порт, по идее при выключенном фиревалле должно пахать.

С виндовс для начала ipconfig /all

mx__ ★★★★★
()

Dimez, включил еще раз nftables, перезапустил систему. Правила появились (вероятно вчера, упустил что-то банальное):

table inet filter {
	chain input {
		type filter hook input priority filter; policy accept;
	}

	chain forward {
		type filter hook forward priority filter; policy accept;
	}

	chain output {
		type filter hook output priority filter; policy accept;
	}
}
# Warning: table ip filter is managed by iptables-nft, do not touch!
table ip filter {
	chain LIBVIRT_INP {
		iifname "virbr0" udp dport 53 counter packets 72 bytes 4518 accept
		iifname "virbr0" tcp dport 53 counter packets 31 bytes 1528 accept
		iifname "virbr0" udp dport 67 counter packets 2 bytes 686 accept
		iifname "virbr0" tcp dport 67 counter packets 0 bytes 0 accept
	}

	chain INPUT {
		type filter hook input priority filter; policy accept;
		counter packets 7023 bytes 2977092 jump LIBVIRT_INP
	}

	chain LIBVIRT_OUT {
		oifname "virbr0" udp dport 53 counter packets 0 bytes 0 accept
		oifname "virbr0" tcp dport 53 counter packets 0 bytes 0 accept
		oifname "virbr0" udp dport 68 counter packets 2 bytes 668 accept
		oifname "virbr0" tcp dport 68 counter packets 0 bytes 0 accept
	}

	chain OUTPUT {
		type filter hook output priority filter; policy accept;
		counter packets 7538 bytes 2800880 jump LIBVIRT_OUT
	}

	chain LIBVIRT_FWO {
		iifname "virbr0" ip saddr 192.168.122.0/24 counter packets 0 bytes 0 accept
		iifname "virbr0" counter packets 0 bytes 0 reject
	}

	chain FORWARD {
		type filter hook forward priority filter; policy accept;
		counter packets 0 bytes 0 jump LIBVIRT_FWX
		counter packets 0 bytes 0 jump LIBVIRT_FWI
		counter packets 0 bytes 0 jump LIBVIRT_FWO
	}

	chain LIBVIRT_FWI {
		oifname "virbr0" ip daddr 192.168.122.0/24 ct state related,established counter packets 0 bytes 0 accept
		oifname "virbr0" counter packets 0 bytes 0 reject
	}

	chain LIBVIRT_FWX {
		iifname "virbr0" oifname "virbr0" counter packets 0 bytes 0 accept
	}
}
# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
	chain LIBVIRT_PRT {
		ip saddr 192.168.122.0/24 ip daddr 224.0.0.0/24 counter packets 4 bytes 206 return
		ip saddr 192.168.122.0/24 ip daddr 255.255.255.255 counter packets 0 bytes 0 return
		meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter packets 0 bytes 0 masquerade to :1024-65535
		meta l4proto udp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter packets 6 bytes 3810 masquerade to :1024-65535
		ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter packets 0 bytes 0 masquerade
	}

	chain POSTROUTING {
		type nat hook postrouting priority srcnat; policy accept;
		counter packets 599 bytes 81582 jump LIBVIRT_PRT
	}
}
# Warning: table ip mangle is managed by iptables-nft, do not touch!
table ip mangle {
	chain LIBVIRT_PRT {
		oifname "virbr0" udp dport 68 counter packets 2 bytes 668 xt target CHECKSUM
	}

	chain POSTROUTING {
		type filter hook postrouting priority mangle; policy accept;
		counter packets 7609 bytes 2807301 jump LIBVIRT_PRT
	}
}
table ip6 filter {
	chain LIBVIRT_INP {
	}

	chain INPUT {
		type filter hook input priority filter; policy accept;
		counter packets 101 bytes 9957 jump LIBVIRT_INP
	}

	chain LIBVIRT_OUT {
	}

	chain OUTPUT {
		type filter hook output priority filter; policy accept;
		counter packets 115 bytes 16661 jump LIBVIRT_OUT
	}

	chain LIBVIRT_FWO {
	}

	chain FORWARD {
		type filter hook forward priority filter; policy accept;
		counter packets 0 bytes 0 jump LIBVIRT_FWX
		counter packets 0 bytes 0 jump LIBVIRT_FWI
		counter packets 0 bytes 0 jump LIBVIRT_FWO
	}

	chain LIBVIRT_FWI {
	}

	chain LIBVIRT_FWX {
	}
}
table ip6 nat {
	chain LIBVIRT_PRT {
	}

	chain POSTROUTING {
		type nat hook postrouting priority srcnat; policy accept;
		counter packets 0 bytes 0 jump LIBVIRT_PRT
	}
}
table ip6 mangle {
	chain LIBVIRT_PRT {
	}

	chain POSTROUTING {
		type filter hook postrouting priority mangle; policy accept;
		counter packets 166 bytes 21722 jump LIBVIRT_PRT
	}
}

mx__:

Windows IP Configuration

   Host Name . . . . . . . . . . . . : DESKTOP-73MFIL5
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Intel(R) 82574L Gigabit Network Connection
   Physical Address. . . . . . . . . : 52-54-00-35-7F-41
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::8c4d:d56b:4294:59ea%7(Preferred)
   IPv4 Address. . . . . . . . . . . : 192.168.122.129(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : 7 августа 2025 г. 9:03:57
   Lease Expires . . . . . . . . . . : 7 августа 2025 г. 10:03:56
   Default Gateway . . . . . . . . . : 192.168.122.1
   DHCP Server . . . . . . . . . . . : 192.168.122.1
   DHCPv6 IAID . . . . . . . . . . . : 223499264
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-30-24-D5-CA-52-54-00-35-7F-41
   DNS Servers . . . . . . . . . . . : 192.168.122.1
   NetBIOS over Tcpip. . . . . . . . : Enabled

Дело не только в винде, Debian, например, в процессе установки не может к зеркалам репозиториев подключиться.

Может снова libvirt снести начисто и переустановить?

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

В госте всё ок: адрес 192.168.122.x/24, шлюз по умолчанию 192.168.122.1, DNS-сервер 192.168.122.1. Так и должно быть. DHCP-сервер (dnsmasq на хосте) выдал всё правильно.

На хосте маскарадинг тоже работает, раз из гостя пингуется 8.8.8.8 . Счётчики на правиле ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter packets 0 bytes 0 masquerade правда нулевые, но это видимо ты просто посмотрел правила на хосте до пинга из гостя.

Не работает DNS лукап в госте. DNS-сервер гостя 192.168.122.1 это тоже dnsmasq на хосте. Он должен форвардить входящие DNS-запросы от гостей на DNS-серверы хоста (которые dnsmasq берёт из /etc/resolv.conf хоста). Либо у тебя в /etc/resolv.conf на хосте пусто, либо в /etc/dnsmasq.conf на хосте указано no-resolv.

Как крайнее средство можно переустановить dnsmasq, чтобы восстановить конфиг по умолчанию. Но лучше починить его руками.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Пропинговал на госте 8.8.8.8:

table inet filter {
	chain input {
		type filter hook input priority filter; policy accept;
	}

	chain forward {
		type filter hook forward priority filter; policy accept;
	}

	chain output {
		type filter hook output priority filter; policy accept;
	}
}
# Warning: table ip filter is managed by iptables-nft, do not touch!
table ip filter {
	chain LIBVIRT_INP {
		iifname "virbr0" udp dport 53 counter packets 237 bytes 15284 accept
		iifname "virbr0" tcp dport 53 counter packets 106 bytes 5248 accept
		iifname "virbr0" udp dport 67 counter packets 4 bytes 1372 accept
		iifname "virbr0" tcp dport 67 counter packets 0 bytes 0 accept
	}

	chain INPUT {
		type filter hook input priority filter; policy accept;
		counter packets 74417 bytes 80473977 jump LIBVIRT_INP
	}

	chain LIBVIRT_OUT {
		oifname "virbr0" udp dport 53 counter packets 0 bytes 0 accept
		oifname "virbr0" tcp dport 53 counter packets 0 bytes 0 accept
		oifname "virbr0" udp dport 68 counter packets 4 bytes 1336 accept
		oifname "virbr0" tcp dport 68 counter packets 0 bytes 0 accept
	}

	chain OUTPUT {
		type filter hook output priority filter; policy accept;
		counter packets 76225 bytes 51028738 jump LIBVIRT_OUT
	}

	chain LIBVIRT_FWO {
		iifname "virbr0" ip saddr 192.168.122.0/24 counter packets 5 bytes 296 accept
		iifname "virbr0" counter packets 0 bytes 0 reject
	}

	chain FORWARD {
		type filter hook forward priority filter; policy accept;
		counter packets 10 bytes 608 jump LIBVIRT_FWX
		counter packets 10 bytes 608 jump LIBVIRT_FWI
		counter packets 5 bytes 296 jump LIBVIRT_FWO
	}

	chain LIBVIRT_FWI {
		oifname "virbr0" ip daddr 192.168.122.0/24 ct state related,established counter packets 5 bytes 312 accept
		oifname "virbr0" counter packets 0 bytes 0 reject
	}

	chain LIBVIRT_FWX {
		iifname "virbr0" oifname "virbr0" counter packets 0 bytes 0 accept
	}
}
# Warning: table ip nat is managed by iptables-nft, do not touch!
table ip nat {
	chain LIBVIRT_PRT {
		ip saddr 192.168.122.0/24 ip daddr 224.0.0.0/24 counter packets 8 bytes 420 return
		ip saddr 192.168.122.0/24 ip daddr 255.255.255.255 counter packets 0 bytes 0 return
		meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter packets 0 bytes 0 masquerade to :1024-65535
		meta l4proto udp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter packets 8 bytes 4501 masquerade to :1024-65535
		ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter packets 1 bytes 60 masquerade
	}

	chain POSTROUTING {
		type nat hook postrouting priority srcnat; policy accept;
		counter packets 4316 bytes 445628 jump LIBVIRT_PRT
	}
}
# Warning: table ip mangle is managed by iptables-nft, do not touch!
table ip mangle {
	chain LIBVIRT_PRT {
		oifname "virbr0" udp dport 68 counter packets 4 bytes 1336 xt target CHECKSUM
	}

	chain POSTROUTING {
		type filter hook postrouting priority mangle; policy accept;
		counter packets 76770 bytes 51050907 jump LIBVIRT_PRT
	}
}
table ip6 filter {
	chain LIBVIRT_INP {
	}

	chain INPUT {
		type filter hook input priority filter; policy accept;
		counter packets 853 bytes 73158 jump LIBVIRT_INP
	}

	chain LIBVIRT_OUT {
	}

	chain OUTPUT {
		type filter hook output priority filter; policy accept;
		counter packets 430 bytes 40910 jump LIBVIRT_OUT
	}

	chain LIBVIRT_FWO {
	}

	chain FORWARD {
		type filter hook forward priority filter; policy accept;
		counter packets 0 bytes 0 jump LIBVIRT_FWX
		counter packets 0 bytes 0 jump LIBVIRT_FWI
		counter packets 0 bytes 0 jump LIBVIRT_FWO
	}

	chain LIBVIRT_FWI {
	}

	chain LIBVIRT_FWX {
	}
}
table ip6 nat {
	chain LIBVIRT_PRT {
	}

	chain POSTROUTING {
		type nat hook postrouting priority srcnat; policy accept;
		counter packets 0 bytes 0 jump LIBVIRT_PRT
	}
}
table ip6 mangle {
	chain LIBVIRT_PRT {
	}

	chain POSTROUTING {
		type filter hook postrouting priority mangle; policy accept;
		counter packets 777 bytes 68357 jump LIBVIRT_PRT
	}
}

В /etc/resolv.conf пусто, за исключением записи: # Generated by NetworkManager. Файл /etc/dnsmasq.conf отсутствует. В /etc/dnsmasq.d/ и /etc/default файл так-же отсутствует.

Riniko ★★★
() автор топика
Ответ на: комментарий от iliyap

Не работает DNS лукап в госте.

Как он может не работать то? Не понимаю.

Пусть в госте днс пропишет руками на 8.8.8.8 что ли … для пробы.

Он должен форвардить входящие DNS-запросы от гостей на DNS-серверы хоста (которые dnsmasq берёт из /etc/resolv.conf хоста).

На хосте нет днс серверов.

В /etc/resolv.conf пусто, за исключением записи: # Generated by NetworkManager.

стоп. Так у вас на хосте НМ чтоли? nmcli c?

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 2)
Ответ на: комментарий от Riniko

Если /etc/resolv.conf на хосте пустой, значит здесь замешан systemd-resolved. Там используется nsswitch плагин nss-resolve вместо nss-dns, в результате /etc/resolve.conf (конфиг nss-dns) не используется glibc.

Я честно говоря не в курсе, как должна работать связка dnsmasq и systemd-resolved. dnsmasq должен форвардить DNS запросы на systemd-resolved. systemd-resolved слушает запросы на 127.0.0.53. Может прописать

server=127.0.0.53

в /etc/dnsmasq.conf или в /etc/dnsmasq.d/server.conf?

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

а может плюнуть на это и заюзать libvirtd как написано в ВСЕХ доках инета? Т.е. через мост (я всегда так юзаю) и тогда раутер даст ему и ип и днс…

вот ткнул в инет: https://www.reddit.com/r/Fedora/comments/194x1ah/how_to_enable_dns_resolution_for_your_libvirt/

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

Он должен форвардить входящие DNS-запросы от гостей на DNS-серверы хоста (которые dnsmasq берёт из /etc/resolv.conf хоста).

На хосте нет днс серверов.

Вообще то libvirtd запускает dnsmasq, который выполняет функции DHCP и DNS сервера. Это часть реализации виртуальной сети с NAT в libvirtd: libvirtd создаёт бридж virbr0, назначает на него адрес 192.168.122.1/24, добавляет NAT правила с маскарадингом, запускает dnsmasq. Всё это происходит при старте виртуальной сети.

iliyap ★★★★★
()
Ответ на: комментарий от mx__

Т.е. через мост

ТС подключается в локалку не по Ethernet, а по Wi-Fi (wlp4s0). На Wi-Fi бриджинг не работает. Точка доступа отвергает кадры с MAC-адресом источника, отличным от аутентифицировавшегося MAC-адреса.

iliyap ★★★★★
()
Ответ на: комментарий от iliyap

Я в курсе про dnsmasq и еще он может в tftp … но ему как то нужно указать верхний днс сервер.

а у него запущен systemd-resolved?

ps -ef | grep dnsmasq | grep default

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)

Dimez, процесс присутствует. USER - nobody, конфигурационный файл по пути /var/lib/libvirt/dnsmasq/default.conf. В нем следующее:

  GNU nano 7.2          /var/lib/libvirt/dnsmasq/default.conf
##WARNING:  THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
##OVERWRITTEN AND LOST.  Changes to this configuration should be made using:
##    virsh net-edit default
## or other application using the libvirt API.
##
## dnsmasq conf file created by libvirt
strict-order
pid-file=/run/libvirt/network/default.pid
except-interface=lo
bind-dynamic
interface=virbr0
dhcp-range=192.168.122.2,192.168.122.254,255.255.255.0
dhcp-no-override
dhcp-authoritative
dhcp-lease-max=253
dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile
addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts

В файлах /var/lib/libvirt/dnsmasq/default.hostsfile и /var/lib/libvirt/dnsmasq/default.addnhosts пусто.

mx__ Вывод команды nmcli c:

NAME                       UUID                                  TYPE       DEVICE
ASUS-9C2C                  1849dd02-954b-4d5a-a2db-16bb6e321348  wifi       wlp4s0
lo                         14204e6d-5f38-4f1b-8441-2048c41ff448  loopback   lo
Сеть Redmi                 56d41ce7-ba65-4e28-8d7d-845a24ac7f8c  bluetooth  --
ASUS                       beaabe17-5d7e-42de-9a25-94aefdedfd38  wifi       --
ASUS_5G                    d524f0c2-1919-4f72-8d5e-96f66303d482  wifi       --
OpenWrt                    e3a186a8-46bb-40bd-b1bf-9088701d310b  wifi       --
virbr0                     cf505318-0254-40fe-a58e-6d6021ee6aad  bridge     --
Wired connection 1         2b469deb-acf8-4f44-bed4-cbeffd576f22  ethernet   --

Вывод команды ps -ef | grep dnsmasq | grep default:

nobody      1328       1  0 13:52 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
root        1329    1328  0 13:52 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper

iliyap, создал файл /etc/dnsmasq.conf и каталог /etc/dnsmasq.d с файлом server.conf. В оба файла прописал server=127.0.0.53. Перезапустил систему. Без именений.

Установил dns на госте вручную, работает.

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

Попробуй добавить в /etc/resolv.conf на хосте:

nameserver 127.0.0.53

И перезапустить default сеть:

virsh --connect qemu:///system net-destroy default
virsh --connect qemu:///system net-start default

При перезапуске сети dnsmasq должен взять nameserver из /etc/resolv.conf.

Надеюсь NetworkManager не должен удалять nameserver из /etc/resolv.conf. Но это надо проверить.

iliyap ★★★★★
()

iliyap, указал в /etc/resolv.conf:

nameserver 127.0.0.53

Перезапустил, работает. Перезапустил саму хостовую ОС, тоже работает. Создал новую виртуальную машину - тоже работает. Благодарю, это решение исправило проблему.

p.s в файле /etc/dnsmasq.conf и каталоге /etc/dnsmasq.d с файлом server.conf, удалить внесенные изменения, или оставить? По умолчанию, они отсутствовали в системе.

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

Если /etc/resolv.conf на хосте пустой, значит здесь замешан systemd-resolved.

а у него запущен systemd-resolved?

Что то я не вижу инфы что там у вас этим?

Я тут глянул у себя в федоре, у меня эту строку: «nameserver 127.0.0.53» в /etc/resolv.conf как раз systemd-resolved фигачит.

cat /etc/resolv.conf 
# This is /run/systemd/resolve/stub-resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
...
nameserver 127.0.0.53
...
mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)
Ответ на: комментарий от mx__

Что то я не вижу инфы что там у вас этим?

Процесс /lib/systemd/systemd-resolved присутствует:

systemd+     939       1  0 10:37 ?        00:00:00 /lib/systemd/systemd-resolved

Вывод команды: ps -ef | grep dnsmasq | grep default:

nobody      1392       1  0 10:37 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
root        1393    1392  0 10:37 ?        00:00:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper

Проблема решилась, указанием в /etc/resolv.conf:

nameserver 127.0.0.53

Финально выглядит так:

cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 127.0.0.53

Riniko ★★★
() автор топика
Последнее исправление: Riniko (всего исправлений: 1)
Ответ на: комментарий от Dimez

Мне нужно с файла /etc/resolv.conf сделать симлинк на /run/systemd/resolve/stub-resolv.conf?

Содержимое:

# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients to the
# internal DNS stub resolver of systemd-resolved. This file lists all
# configured search domains.
#
# Run "resolvectl status" to see details about the uplink DNS servers
# currently in use.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 127.0.0.53
options edns0 trust-ad
search ASUS

p.s. вероятно я его руками редактировал, так-как search ASUS вряд ли там по дефолту был.

Riniko ★★★
() автор топика
Ответ на: комментарий от Riniko

вероятно я его руками редактировал

Do not edit

Его редактировать бесполезно, он перезатирается тем, что генерит systemd-resolved.

Скорее, ты редактировал /etc/systemd/resolved.conf (что тоже не совсем корректно, надо класть файлы в /etc/systemd/resolved.conf.d/)

Dimez ★★★★★
()