Назад | Перейти на главную страницу

Centos / OVH: общедоступный IP-адрес на виртуальной машине KVM

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

Во-первых, я использую OVH, и вам нужно знать, что они не позволяют работать в сети с разных MAC-адресов. Я зарегистрировал виртуальный MAC-адрес, связанный с моим IP-адресом аварийного переключения

Вот моя конфигурация:

Гость хотел IP: 46.105.40.x
IP-адрес хоста: 176.31.240.x

Конфигурация хоста

dummy0 интерфейс: ifcfg-dummy0

BOOTPROTO=static
IPADDR=10.0.0.1
NETMASK=255.0.0.0
ONBOOT=yes
NM_CONTROLLED=no
ARP=yes
BRIDGE=br0

мост br0: ifcfg-br0

DEVICE=br0
TYPE=Bridge
DELAY=0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
PEERDNS=yes
NM_CONTROLLED=no
ARP=yes

IP-адрес аварийного переключения перенаправляется на мост br0 с помощью ip route add 46.105.40.xxx dev br0

> cat /proc/sys/net/ipv4/ip_forward
1
> cat /proc/sys/net/ipv4/conf/vnet0/proxy_arp
1
> route -n
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         176.31.240.254  0.0.0.0         UG    0      0        0 eth0
46.105.40.x     0.0.0.0         255.255.255.255 UH    0      0        0 br0
176.31.240.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 br0

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

KVM:

<interface type='bridge'>
  <mac address='02:00:00:30:22:05'/>
  <source bridge='br0'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</interface>

Я позаимствовал большую часть конфигурации OVH здесь (на французском, http://guides.ovh.com/BridgeClient) для гостевой конфигурации
Интерфейс eth0: ifcfg-eth0

DEVICE="eth0"
BOOTPROTO=none
HWADDR="02:00:00:30:22:05"
NM_CONTROLLED="yes"
ONBOOT="yes"
TYPE="Ethernet"
UUID="e9138469-0d81-4ee6-b5ab-de0d7d17d1c8"
USERCTL=no
PEERDNS=yes
IPADDR=46.105.40.xxx
NETMASK=255.255.255.255
GATEWAY=176.31.240.254
ARP=yes

Для маршрутов у меня в route-eth0:

176.31.240.254 dev eth0
default via 176.31.240.254 dev eth0

В такой конфигурации у меня нет доступа к Интернету. Единственное, что я могу сделать, это пропинговать публичный ip хоста, не более того. Мой окончательный вывод - маршрут не работает, потому что, когда на гостевой я бегу ping 8.8.8.8, У меня на хосте:

> tcpdump -i vnet0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on br0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:38:09.009324 IP 46-105-40-xxx.kimsufi.com > google-public-dns-a.google.com: ICMP echo request, id 50183, seq 1, length                  64
13:38:09.815344 IP 46-105-40-xxx.kimsufi.com > google-public-dns-a.google.com: ICMP echo request, id 50183, seq 2, length                  64

Я никогда не получаю ответа на пинг, только запрос. Кажется, Гость -> Связь с хостом в порядке.

На eth0:

> tcpdump -i eth0 icmp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
13:39:40.240561 IP 46-105-40-xxx.kimsufi.com > google-public-dns-a.google.com: ICMP echo request, id 50439, seq 1, length 64
13:39:40.250161 IP google-public-dns-a.google.com > 46-105-40-xxx.kimsufi.com: ICMP echo reply, id 50439, seq 1, length 64

У меня есть запрос и ответ на eth0, но ответ не пересылается мосту. Я действительно не понимаю, почему, я думал, что это было целью маршрута!

IPtables отключен как на хосте, так и на гостевой системе.

Я очень надеюсь, что некоторые из вас смогут мне помочь!

Спасибо заранее,

Себастьен

У меня такая же проблема. Я хочу иметь гостевой хост и виртуальную машину на общедоступном IP. Связь между хостом и виртуальной машиной, похоже, работает нормально, но виртуальная машина не может подключиться к Интернету или наоборот.

У моего провайдера также есть правило иметь только один MAC-адрес на порт коммутатора. По сути, адреса VMAC используются для аварийного переключения в сетевых устройствах, таких как VRRP и некоторые другие протоколы, это означает, что если первый коммутатор выходит из строя, второе соединение с другим коммутатором вступает во владение, и вы получаете «реплицированный» порт коммутатора с фактическим MAC-адресом и всем остальным.

Я не понимаю, какую пользу вы можете извлечь из этого.

Лучшее решение - разместить 2 общедоступных IP-адреса на интерфейсе хоста Ethernet, один для хоста, второй для виртуальной машины. И сделайте некоторую политику маршрутизации.

С уважением