LINUX.ORG.RU
ФорумAdmin

Отдельный интерфейс для виртуальной машины

 


0

1

Прочитал кучу мануалов, прочитал форум, но так и не смог разобраться в проблеме. Ситуация следующая: есть сервер с CentOS 6.5 x64, на нем в виртуальной машине (KVM) установлена Windows 8.1 x64. В сервере 2 сетевых порта и есть желание выделить отдельный порт для виртуальной машины. Исходя из документации по libvirt пробовал режимы «mode='passthrough'» и «mode='private'». Ни в одном из режимов в гостевой системе нет доступа к сети. Интерфейс есть, но ни одной машины в сети не найти.

Текущая конфигурация виртуальной машины:

<domain type='kvm'>
  <name>winserv</name>
  <uuid>dc8fc08d-bfd9-3022-21f3-cf5bd1849fb0</uuid>
  <memory unit='KiB'>2097152</memory>
  <currentMemory unit='KiB'>2097152</currentMemory>
  <vcpu placement='static'>2</vcpu>
  <os>
    <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
    <boot dev='hd'/>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
  <cpu mode='custom' match='exact'>
    <model fallback='allow'>SandyBridge</model>
    <vendor>Intel</vendor>
    <feature policy='require' name='vme'/>
    <feature policy='require' name='dtes64'/>
    <feature policy='require' name='vmx'/>
    <feature policy='require' name='erms'/>
    <feature policy='require' name='xtpr'/>
    <feature policy='require' name='smep'/>
    <feature policy='require' name='pcid'/>
    <feature policy='require' name='est'/>
    <feature policy='require' name='monitor'/>
    <feature policy='require' name='smx'/>
    <feature policy='require' name='tm'/>
    <feature policy='require' name='acpi'/>
    <feature policy='require' name='osxsave'/>
    <feature policy='require' name='ht'/>
    <feature policy='require' name='pdcm'/>
    <feature policy='require' name='fsgsbase'/>
    <feature policy='require' name='f16c'/>
    <feature policy='require' name='ds'/>
    <feature policy='require' name='tm2'/>
    <feature policy='require' name='ss'/>
    <feature policy='require' name='pbe'/>
    <feature policy='require' name='ds_cpl'/>
    <feature policy='require' name='rdrand'/>
  </cpu>
  <clock offset='localtime'/>
  <on_poweroff>destroy</on_poweroff>
  <on_reboot>restart</on_reboot>
  <on_crash>restart</on_crash>
  <devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/winserv.img'/>
      <target dev='hda' bus='ide'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/ru_windows_8.1_with_update_x64_dvd_4048362.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' target='0' unit='0'/>
    </disk>
    <controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <interface type='direct'>
      <mac address='52:54:00:be:8f:1a'/>
      <source dev='eth1' mode='passthrough'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    <graphics type='vnc' port='-1' autoport='yes' keymap='ru'/>
    <video>
      <model type='vga' vram='9216' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </memballoon>
  </devices>
</domain>

Конфигурация сети сервера: ifconfig

eth0      Link encap:Ethernet  HWaddr 2C:59:E5:9D:D2:60  
          inet addr:192.168.1.201  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::2e59:e5ff:fe9d:d260/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1530340 errors:0 dropped:1 overruns:0 frame:0
          TX packets:132590 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:133472938 (127.2 MiB)  TX bytes:80454085 (76.7 MiB)
          Interrupt:16 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:21883 errors:0 dropped:0 overruns:0 frame:0
          TX packets:21883 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:48718467 (46.4 MiB)  TX bytes:48718467 (46.4 MiB)

macvtap0  Link encap:Ethernet  HWaddr 52:54:00:BE:8F:1A  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:3173 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:F3:FB:CF  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

ifcfg-eth1

DEVICE=eth1
HWADDR=2C:59:E5:9D:D2:61
TYPE=Ethernet
UUID=575637a3-e43e-4ec9-80c3-9852aa8d5067
ONBOOT=no
NM_CONTROLLED=no
BOOTPROTO=none

Что я делаю не так?



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

Интерфейс есть, но ни одной машины в сети не найти.

А можно подробнее? Как там девайс поживает? Другую гостевую ОС пробовал?

kerneliq ★★★★★
()

В сервере 2 сетевых порта и есть желание выделить отдельный порт для виртуальной машины.

Сначала разбираешься с тем, что такое маршрутизация и как организовать NAT. Далее знакомишься со словами bridge, как он настраивается в общем случае, как с помощью bridge реализуют виртуальную сеть. Да, маршрутизацию удобно делать с помощью firehol.

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

У меня вирт-манагер сгенерил такую штуку - работает:

<interface type='direct'>
  <mac address='00:e0:4c:f0:c2:55'/>
  <source dev='p12p1' mode='vepa'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
</interface>

на хосте:

3: p12p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
    link/ether c8:be:19:27:d7:1f brd ff:ff:ff:ff:ff:ff
....
17: macvtap0@p12p1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 500
    link/ether 00:e0:4c:f0:c2:55 brd ff:ff:ff:ff:ff:ff

ifcfg-p12p1

HWADDR="C8:BE:19:27:D7:1F"
IPV6INIT="no"
NM_CONTROLLED="no"
DEVICE="p12p1"
TYPE="Ethernet"
ONBOOT="yes"
NAME="System p12p1"

Мне кажется надо поднимать интерфейс чтоб заработало: ONBOOT=«yes» и/или ifconfig eth1 up. Ну и в виртуалке попробовать режим vepa (имхо, он проще)

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

в vbox в хосте появляется интерфейс для машины отдельный вроде, думаю, в kvm тоже так должно быть, можно его сбриджить с eth1, не?

pianolender ★★★
()

вешаешь на свою вторую сетевуху бридж, написав файлик ifcfg-br1, поправляешь ifcfg-eth1, указываешь виртуалке для подключения к сети br1. Всё.

Что я делаю не так?

не играешь во дворе с ребятами

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

Бридж не всегда работает хорошо. У меня виртуалка-граничный шлюз с провайдером, пров фильтрует по мак адресам.

Вообщем у меня не вышло с бриджом - нужный мак назначал и физическому интерфейсу и виртуальному, не помню назначал ли (и можно ли) самому бриджу, но этот вариант так и не заработал.

А вариант с пробросом интерфейса в виртуалку заработал сразу и работает хорошо, пережил замену сетевухи (нужный мак - прописан в xml-нике виртуалки)

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

1. бридж всегда работает хорошо 2. хост с виртуалками и роутер на одной железке говорят нам, что скоро по ряду причин у тебя будет зомбоведро с блохами

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

чувак, это домашнийсерверизчулана =) так что норм, виртуализация там как раз порядок навела =)

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

Всем спасибо большое за участие.

Ну я даже и не знаю что тут ещё описать. Вывод из консоли я из VNC скопировать не могу. Интерфейс определеяется как «Realtek RTL8139C+ Fast Ethernet». MAC соответствует описанному в конфигурации. loopback работает, больше в сети ничего нет.

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

Я пытался сделать через bridge на eth0, но, честно говоря, не совсем понял как всё это должно работать. Если я делаю на eth0 бридж, то сам eth0 перестает работать, что было для меня несколько неожиданно. Т.е. сам хост тоже выходит в сеть через бридж? И как это соотносится с рекомендациями отключить iptables для бриджа? Хост тоже остается без защиты? Не смог найти нормальную информацию по этой теме, даже на английском. Наверное плохо искал. Ткнете носом?

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

VEPA я не стал использовать из-за такого описания в документации Red Hat:

vepa All VMs' packets are sent to the external bridge. Packets whose destination is a VM on the same host physical machine as where the packet originates from are sent back to the host physical machine by the VEPA capable bridge (today's bridges are typically not VEPA capable)

А всё гениальное оказалось просто: В ifcfg-eth1 прописал

ONBOOT=yes
И всё заработало.

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

vepa требует поддержки на свиче. это 802.1Qbg.

dyasny ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.