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

Интерфейс на основе Macvlan пингует с хоста, но не из пространства имен

[РЕДАКТИРОВАТЬ]

Производственная система в настоящее время представляет собой сочетание физической системы и системы на основе ESXi. Очевидно, мы никогда бы не стали использовать виртуальный бокс даже для предпроизводственной среды! Он использовался здесь только для быстрого решения проблемы прямо на моем рабочем столе.

Спасибо за объяснение "приостановки" на мета!

[/РЕДАКТИРОВАТЬ]

Моя установка:

  1. Частная сеть vboxnet1 10.0.7.0/24
  2. 1 хост, рабочий стол ubuntu
  3. 1 ВМ, сервер ubuntu (VirtualBox)

Схема адресации:

  1. ВЕДУЩИЙ: 10.0.7.1
  2. ВМ: 10.0.7.101
  3. ВМ MAC NAMESPACE: 10.0.7.102

На VM, Я выполнил следующие команды:

ip netns add mac                        # create a new nmespace
ip link add link eth0 mac0 type macvlan # create a new macvlan interface
ip link set mac0 netns mac

На mac пространство имен внутри виртуальной машины:

ip link set lo up
ip link set mac up
ip addr add 10.0.7.102/24 dev mac0

Так что в итоге мы получаем: (Как в начале?)

+------------------------+
| Host: 10.0.7.1         |
|                        |
| +--------------------+ |
| | VM: 10.0.7.101     | |
| |                    | |
| | +----------------+ | |
| | | NS: 10.0.7.102 | | |
| | |                | | |
| | +----------------+ | |
| +--------------------+ |
+------------------------+

Что работает:

Что не работает:

Где я начал сходить с ума:

Итак, держу пари, вы очень этого хотели, у меня вопрос: как заставить его работать? Я подозреваю, что что-то не так с ARP на macvlan внутри NS, но не могу понять, что именно ...

Кстати, я проделал то же самое с mac0 интерфейс непосредственно на виртуальной машине (без пространства имен), и он работал безупречно.

Итак, для потомков тот факт, что tcpdump внезапно заставляет все работать, должен был меня сбить с толку. Что он делает внутри, так это переключение eth0 в беспорядочный режим. То есть, eth0 будет отдавать весь сетевой трафик, а не только тот, с основным сервером MAC

Однако именно так macvlan работает: он добавляет новый вторичный виртуальный MAC-адрес, который «физический» (то есть виртуальная машина) сетевой адаптер не знает.

Таким образом, простой обходной путь - вручную: ifconfig eth0 promisc

Я надеюсь, что это помогает !