Псевдоним IP и мостовое соединение портов

Ситуация такова, что у меня есть Ubuntu box с несколькими портами Ethernet, который я хотел бы вести, как будто он подключен к компьютеру через коммутатор. Я могу легко достичь этого с помощью моста. В /etc/network/interfaces:

iface br0 inet static
  bridge_ports regex eth.*
  address 192.168.1.1
  netmask 255.255.255.0

В этой конфигурации другое устройство может подключиться к любому из портов и пропинговать это поле на 192.168.1.1.

Теперь вторая часть заключается в том, что я хотел бы, чтобы один из портов имел псевдоним IP, посредством чего он также пытается получить адрес DHCP. Я могу сделать это на eth0 без моста, вот так:

iface eth0 inet static
  address 192.168.1.1
  netmask 255.255.255.0

iface eth0:0 inet dhcp

Теперь дело в том, как бы я совместил это с функциональностью программного переключателя? Поскольку brctl работает на уровне 2, я не могу создать eth0:0, если eth0 является частью br0. Единственное, что я могу сделать, это создать его как br0:0:

iface br0 inet static
  bridge_ports regex eth.*
  address 192.168.1.1
  netmask 255.255.255.0

iface br0:0 inet dhcp

Это на самом деле делает почти то, что я хотел, но с одной странной проблемой: когда порты Ethernet отключены или нет DHCP-сервера, мост не получает свой правильный статический IP-адрес - или он получит его, но не раньше, чем через минуту или две после завершения загрузки.

Итак, мой вопрос, что случилось с задержкой? Можно ли как-то от этого избавиться?

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

Благодарю.

2 ответа

Решение

Похоже, вас укусила задержка пересылки.

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

Короткий ответ, это может решить вашу проблему:

# brctl setfd br0 0

Обычно интерфейс псевдонимов не может получить DHCP.

Попробуйте поставить DHCP на интерфейс br0, а статический IP на псевдоним br0:0.

Другие вопросы по тегам