Разрешить доменные имена в настройке QEMU VDE
Я перестроил QEMU с поддержкой VDE. Для непосвященных VDE присоединяет программу виртуального коммутатора (vde_switch) к устройству TAP, которая позволяет нескольким программам с поддержкой VDE использовать одно устройство TAP.
Моя конечная цель заключается в том, чтобы иметь возможность разрешать мои виртуальные машины по имени хоста, например "test1.qemu", "machineb.qemu" и т. Д. С моего хоста - это облегчит мне настройку во многих случаях, поскольку я использую DHCP через dnsmasq на интерфейсы TAP.
На самом деле это, вероятно, вопрос не полного понимания того, как работает разрешение имен, поэтому я надеюсь узнать что-то из этого =)
Во-первых, мой файл конфигурации dnsmasq:
user=nobody
interface=tap0
except-interface=lo
listen-address=192.168.1.1
#Assign IP's 192.168.1.2-192.168.1.253 for 8 hrs
dhcp-range=192.168.1.2,192.168.1.253,255.255.255.0,192.168.1.255,8h
pid-file=/var/run/dnsmasq_tap0.pid
dhcp-leasefile=/var/lib/misc/dnsmasq.vde.leases
domain=qemu
server=/qemu/
#Only really run on tap0, needed so there is no confliction with
#NetworkManager's dnsmasq
bind-interfaces
dhcp-authoritative
dhcp-no-override
strict-order
Как видите, я настроил dnsmasq, чтобы он отвечал за имена "*.qemu". Я могу правильно пропинговать 192.168.1.1, но, как есть, ping qemu не работает. Я предположил, что это потому, что мой хост-компьютер не знал, как разрешить "qemu", поэтому я добавил его в файл /etc/hosts. Хотя я не уверен, что это правильный способ сделать это. Конечно, после добавления записи в /etc/hosts, qemu разрешает, но не i386.qemu (одна из моих виртуальных машин).
Я думаю, что хорошей отправной точкой было бы: как я могу сказать моей машине перенаправлять все запросы *.qemu на dnsmasq, работающий на 192.168.1.1 (локальный интерфейс tap0)?
Также, если это поможет, вот моя запись в /etc/network/interfaces для tap0:
auto tap0
iface tap0 inet static
address 192.168.1.1
netmask 255.255.255.0
vde2-switch -
pre-up /sbin/sysctl net.ipv4.ip_forward=1
pre-up /sbin/iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
up /usr/sbin/dnsmasq -C /etc/dnsmasq.d/vde-network --pid-file=/var/run/dnsmasq_tap0.pid --bind-interfaces
post-down /bin/bash -c "kill -9 $(cat /var/run/dnsmasq_tap0.pid)"
post-down /sbin/sysctl net.ipv4.ip_forward=0
post-down /sbin/iptables -t nat -D POSTROUTING -o wlan0 -j MASQUERADE
1 ответ
Итак, я разобрался с ответом, и это был немного лицевой момент.
У меня был файл под названием /etc/NetworkManager/dnsmasq.d/qemu
который содержал неверный IP-адрес DNS для моего экземпляра qemu dnsmasq (192.168.100.1, а не 192.168.1.1). Итак, я думаю, что происходило то, что, когда я спросил qemu
экземпляр NetworkManager по умолчанию для сетевой маски пытался передать запрос в 192.168.100.1, который по понятным причинам не работал.
Как только я изменил адрес на 192.168.1.1 в файле конфигурации и перезапустил NetworkManager (и, следовательно, его экземпляр dnamasq), все работает отлично! /etc/hosts
Вход не был обязательным, как я думал.
Теперь мне просто нужно выяснить, как разрешить имя хоста моей виртуальной машины в адрес моей локальной сети внутри виртуальной машины, а не возвращать 127.0.1.1, что неверно с точки зрения моей виртуальной машины.