LINUX.ORG.RU

Настройка сети для виртуалки в qemu

 , ,


1

1

Настраиваю tap-интерфейс и мост до основного интерфейса:

ip tuntap add dev tap0 mode tap group kvm
ip link set dev tap0 up promisc on
ip addr add 0.0.0.0 dev tap0

ip link add br0 type bridge
ip link set br0 up
ip link set tap0 master br0
echo 0 > /sys/class/net/br0/bridge/stp_state
ip addr add 10.0.1.1/24 dev br0

sysctl net.ipv4.conf.tap0.proxy_arp=1
sysctl net.ipv4.conf.eno1.proxy_arp=1
sysctl net.ipv4.ip_forward=1

iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
iptables -A FORWARD -i br0 -o eno1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eno1 -o br0 -j ACCEPT
Запускаю qemu:
/usr/bin/qemu-system-x86_64 \
    -machine accel=kvm \
    -m 5196 \
    -hda "/home/maked0n/.aqemu/image.img" \
    -boot once=c,menu=off \
    -net nic,vlan=0 \
    -net tap,ifname=tap0,script=no \
    -rtc base=localtime
Сети в виртуалке нет. При попытке сделать пинг на гугл пишет
temporary failure in name resolution
ЧЯДНТ?

Ответ на: комментарий от anc

Ничего дополнительно не настраивал. ifconfig говорит, что есть ens0, который UP BROADCAST RUNNING MULTICAST. Я пытаюсь с помощью dhclient получить ip, но он долго думает и в итоге никакого результата.
Ни в каких мануалах, которые я смотрел, не настраивали дополнительно ничего внутри виртуалки.

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

А кто у вас кто-то раздает по dhcp ?
ЗЫ
Еще обратил внимание

iptables -A FORWARD -i br0 -o eno1 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -i eno1 -o br0 -j ACCEPT

Предполагаю что в направлении ошиблись.

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

Предполагаю что в направлении ошиблись.

Попробовал поменять - не помогло.

А кто у вас кто-то раздает по dhcp ?

В локальной сети у меня адреса по DHCP раздаются.

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

Как я понял вашу схему. Есть локалка eno1. Есть отдельно поднятый бридж br0. Тут важный момент, отдельно поднятый, со своей сетью не соответствующей локалки. Так что тут роутинг и поднятие dhcp на интерфейсе br0, или как в вашем случае ручками прописать.

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

Видимо, я не так понимаю принцип работы моста.
Вот я настроил сеть, но чтобы я мог подключаться к виртуалке по ssh, насколько я понимаю, я должен пробросить порт. Делаю я это, указывая qemu параметр

-net user,hostfwd=tcp::2200-:22
После этого на хостовой машине действительно прослушивается порт 2200, но подключиться по ssh не могу: клиент просто долго «думает».
Еще читал, что если настроен мост, то он должен отобразиться в сети как еще одна машина и я бы мог туда напрямую подключаться, без проброса портов через хостовую машину. Но тогда я должен по dhcp ему (интерфейсу bridge) выдать адрес?
Какой из методов правильный? И вообще, верно ли я понимаю механизм?

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

Делаю я это, указывая qemu параметр

Зачем?

У вас есть машина с ip 10.0.1.5 висящая на отдельном бридже в br0. Вы можете с хоста зайти на 10.0.1.5 ? Думаю да.

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

Видимо, я не так понимаю принцип работы моста.

Попробую обьяснить. Представьте себе очень тупую железку в виде хаба, в которую втыкают провода. Каждый провод идет к какому-то компутеру у которого есть ip. Вот каждый интерфейс в бридже и есть тот самый компутер. Список можно посмотреть благодаря brctl.

Но теперь чуть усложним. Бридж в онтопике на самом деле может быть не только тупым хабом, но и маршрутиризатором. Вот у вас поднят на бридже ip 10.0.1.1 это реальный интерфейс br0. Приблизительно равнозначно схеме, когда у вас есть физический интерфейс, предположим eth1 с ip 10.0.1.1 из него идет провод в тупой хаб из из этого хаба идут провода уже к другим физическим машинкам c ip из подсети 10.0.1.0/24 где шлюзом является 10.0.1.1. Вот эти машинки и есть ваши виртуалки. Т.е. ничего необычного с точки зрения «физики» в бридже нет.
ЗЫ На самом деле бридж в онтопике совсем не тупой хаб, он и L2 и L3 умеет, но это отдельная песня. Я попытался обьяснить ваш вариант.

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

Бридж в онтопике на самом деле может быть не только тупым хабом, но и маршрутиризатором. ЗЫ На самом деле бридж в онтопике совсем не тупой хаб, он и L2 и L3 умеет, но это отдельная песня.

Ну это настолько «на пальцах», что совсем далеко от истинного положения вещей. На самом деле ничего особенного «бридж в онтопике» дополнительно не умеет. L3 появляется именно потому, что у интерфейс, добавленный в программный коммутатор, смотрит непосредственно в ядро. То есть обычный свитч с интерфейсом управления, на котором маршрутизация делается только по причине бесплатности, там где бы у железки пришлось бы делать мощнее проц и рисовать свою ОС. А вот с L3, кстати, у обычного бриджа в онтопике всё кисло, нормально только у весьма тяжёлой реализации типа openswicth

vodz ★★★ ()