LINUX.ORG.RU
ФорумAdmin

KVM не работает сеть в виртуальных машинах

 , ,


0

1

CentOS 5.8
libvirtd (libvirt) 0.9.0
Режим моста

После перезагрузки виртуальной машины перестала работать сеть. До этого момента все работало, как часы. Пробовал удалить\добавить устройство, не помогло.

Из виртуальной машины пинг во внешний мир не проходит. Пинг из хост машины на виртуалку проходит.

[dev]# ping 200.100.200.5
PING 200.100.200.5 (200.100.200.5) 56(84) bytes of data.
64 bytes from 200.100.200.5: icmp_seq=1 ttl=64 time=1.16 ms
64 bytes from 200.100.200.5: icmp_seq=2 ttl=64 time=0.257 ms
64 bytes from 200.100.200.5: icmp_seq=3 ttl=64 time=0.255 ms

--- 200.100.200.5 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.255/0.558/1.163/0.428 ms

Включаю пинг на виртуалке. tcpdump на хостмашине показывает следующее

[dev]# tcpdump -i vnet0
tcpdump: WARNING: vnet0: no IPv4 address assigned
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on vnet0, link-type EN10MB (Ethernet), capture size 96 bytes
07:50:49.357039 arp who-has 200.100.200.15 tell 200.100.200.1
07:50:50.079061 IP 200.100.200.5.56337 > ns2.net.ru.domain:  61463+ A? google.com. (28)
07:50:53.761643 arp who-has 200.100.200.118 tell 200.100.200.1
07:50:53.885477 arp who-has 200.100.200.130 tell 200.100.200.1
07:50:55.078971 arp who-has 200.100.200.1 tell 200.100.200.5
07:50:55.085119 IP 200.100.200.5.41384 > ns1.net.ru.domain:  13498+ A? google.com. (40)
07:50:56.079081 arp who-has 200.100.200.1 tell 200.100.200.5
07:50:56.337819 arp who-has 200.100.200.190 tell 200.100.200.1

ifconfig vnet0 (хостмашина)

vnet0     Link encap:Ethernet  HWaddr FE:54:00:40:51:DF
          inet6 addr: fe80::fc54:ff:fe40:51df/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:244 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1092 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:17192 (16.7 KiB)  TX bytes:72410 (70.7 KiB)

В чем может быть проблема?



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

Включаю пинг на виртуалке.

Зачем сразу google.com пинговать? Сначала по IP, ведь у тебя похоже не работает резолвинг имен.

sdio ★★★★★
()

Пинг до шлюза не проходит.

Deera
() автор топика
  • выключить iptables на kvm
    service iptables stop
    проверить пинги
  • выключить iptables на хосте. опять проверить пинги
  • включить iptables обратно на хоcте и kvm
    service iptables stop
fjoe
()
Ответ на: комментарий от Deera

Мост выглядит правильно. Пинг из kvm до хоста и пинг из kvm до соседнего kvm работает? В других виртуалках (vnet2, venetN) со связью всё ок?

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

Пинг из хоста до kvm - работает.
Пинг из kvm до хоста - работает.
Пинг от одной kvm к другой - не работает.

В одной виртуалке инет работает, в остальных не работает.

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

В одной виртуалке инет работает, в остальных не работает.

Т.е. шлюз пингуется только на одной? Остальные kvm его не видят?

Все kvm и хост в одной подсети?

Если приостановить рабочую виртуалку и временно назначить ее IP нерабочей - появится ли пинг до шлюза?

На хосте

iptables -L -v -n
должно быть пустым.

fjoe
()
Ответ на: комментарий от fjoe
[dev]# iptables -L -v -n
Chain INPUT (policy ACCEPT 411K packets, 473M bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 359K packets, 987M bytes)
 pkts bytes target     prot opt in     out     source               destination
Deera
() автор топика
Ответ на: комментарий от Deera

Т.е. шлюз пингуется только на одной? Остальные kvm его не видят?

Да, только на одной. Остальные kvm шлюза не видят.

Все kvm и хост в одной подсети?

Да, одна подсеть.

Если приостановить рабочую виртуалку и временно назначить ее IP нерабочей - появится ли пинг до шлюза?

Приостановил, перекинул настройки с рабочей, эффекта не дало.

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

Иногда проскакивает сообщение при пинге из kvm в мир.
«destination host unreachable»
Правда как-то произвольно и закономерности нет.

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

В /etc/libvirt/qemu лежат конфиги для каждой виртуалки с описанием оборудования. Интересует содержимое настроек сетевого интерфейса для рабочей и нербочей kvm. Вот, например, как это выглядит:

[...]
    <interface type='bridge'>
      <mac address='52:54:00:3a:98:1f'/>
      <source bridge='br1'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
[...]

Если кроме mac-адреса ничем не различаются - повыключать все виртаулки и сделать service libvirtd restart. Ну можно еще попробовать перезагрузить хост на всякий случай. В RH/Centos 5.х , по слухам, kvm работает неочень. Возможно, я не прав и в 5.8 уже всё починили.

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

В элементах <interface> указаны только <mac>, рабочий от нерабочего ничем не отличается, кроме как маками.

    <interface type='bridge'>
      <mac address='52:54:00:71:ae:d5'/>
      <source bridge='br0'/>
    </interface>

Перезагружал сервис, перезагружал сервер, ничего не помогло.

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

Вот что я бы еще попробовал сделать:

1) взял мак-адрес и ip рабочей вируталки и перенес его на нерабочую.

2) склонировал рабочую вируалку, убедился что клон работает (с макадресом и ip оригинала, оригинал выключен). Потом бы поставил ip+mac от нерабочей.

3) если хост пингуется из любой kvm - можно завернуть всё через iptables на хосте. Но это тот ещё костыль.

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

Что-то типа такого

На хосте:

# echo 1 > / proc/sys/net/ipv4/ip_forward

На виртуалке:

# ifdown eth0
# ifconfig eth0 up
# ip addr add dev eth0 <ip_виртуалки>/32 
# ip route del default
# ip route add default gw <ip_хоста> dev eth0

На случай если так просто не заведется - идея состоит в том, чтобы хост стал еще и шлюзом для виртуалок.

fjoe
()
Ответ на: комментарий от funky
[dev]# ls -lia /proc/sys/net/bridge/bridge-nf-call-*
4026532797 -rw-r--r-- 1 root root 0 Sep 24 21:21 /proc/sys/net/bridge/bridge-nf-call-arptables
4026532799 -rw-r--r-- 1 root root 0 Sep 24 21:21 /proc/sys/net/bridge/bridge-nf-call-ip6tables
4026532798 -rw-r--r-- 1 root root 0 Sep 24 21:21 /proc/sys/net/bridge/bridge-nf-call-iptables

[dev]# cat /proc/sys/net/bridge/bridge-nf-call-*
0
0
0
Deera
() автор топика
Ответ на: комментарий от fjoe

Предложенный вариант не помог.
Включил форвардинг на хосте и прописал правило.

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE

Прописал в виртуалке шлюз, хостовый ип. Инет заработал в самой виртуалке, вопрос как сделать форвардинг по ip?
Идея такая: поднять виртуальную сеть, после чего алиасами поднять ip на интерфейсе eth0, затем через форвардинг связать внешний ip с локальным.

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

Предложенный вариант не помог.

А поконкретнее? Хост не пингуется? Хост не роутит пакеты от виртуалок до шлюза? Маловероятно, что копипаста этих команд заработает сразу.

Но делать через NAT (MASQUERADE) еще больший костыль. Больше настраивать, больше вероятность что-то упустить. Лучше продолжать пинать мост, чем это.

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

Хост виртуалку пингует, виртуалка хост пингует.
Но пакеты дальше не идут...

200.100.200.4 - хост
200.100.200.1 - основной шлюз хоста

[dev]# ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
From 200.100.200.4: icmp_seq=2 Redirect Network(New nexthop: 200.100.200.1)

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

В tcpdump-е на хосте видно исходящие пакеты с адресом kvm (200.100.200.4) ?

На хосте

ip route add 200.100.200.4/32 dev br0
Или, удалив предыдущий, вот так:
ip route add 200.100.200.4/32 dev eth0

Еще есть предположение, что мост может мешать роутингу, и надо поднять сеть хост<->kvm без него.

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

На выходных съезжу в ДЦ переставлю os на 6.3, посмотрю как на ней будет работать.

Deera
() автор топика
7 августа 2013 г.

Ну - так чем всё закончилось? А то у меня тоже виртуалки друг друга не видят. Хост - CentOS6.

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