Как я могу запустить DHCP3-сервер позже, чтобы он ожидал инициализации интерфейса моста перед загрузкой?

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

По существу, br0 не имеет IP-адреса для использования с DHCP3-сервером до конца цикла загрузки, а также после того, как DHCP3-сервер попытался загрузить.

После загрузки сервера я могу без проблем запустить /etc/init.d/dhcp3-server start.

Можно ли как-нибудь: - заставить dhcp3-сервер подождать, пока интерфейс загрузится, прежде чем пытаться загрузить? - Запустить dhcp3-сервер после загрузки всего остального?

8
задан 4 September 2011 в 07:55

2 ответа

Вы можете изменить сценарий запуска /etc/init.d/dhcp3-server так, чтобы он ожидал появления IP-адреса в br0. Например: (Предупреждение: непроверенный код!)

# wait 5 secs between br0-ready tests
wait_time_between_probes=5
# maximum number of attempts (i.e., timeout)
max_attempts=10

log_progress_msg "Waiting for br0 to get an IP address"
for n in $(seq 1 $max_attempts); do
  if /sbin/ifconfig br0 | egrep -q "inet addr:" ; then
    # IP address ready on br0, exit loop
    break
  else
    sleep $wait_time_between_probes
  fi
done
if [ "$n" = "$max_attempts" ]; then
    log_warning_msg "Maximum number of attempts reached, but br0 has no IP address yet" 
    log_warning_msg "Continuing anyway but DHCP3 server might not start correctly"
fi 

Фрагмент должен войти в сценарий запуска, в части case ... start), до запуска демона DHCP3. Конечно, вам следует настроить время ожидания и количество попыток в соответствии с вашей средой (сколько времени займет максимум br0, чтобы получить IP-адрес?)

0
ответ дан 4 September 2011 в 07:55

Одним из решений является указание dhcp-серверу не запускаться автоматически, а затем добавьте следующие две строки в ваш файл /etc/network/interfaces для определения моста

post-up /etc/init.d/dhcp3-server start
pre-down /etc/init.d/dhcp3-server stop

Таким образом, он будет выглядеть следующим образом

iface br0 inet static
    bridge_ports eth0 eth1
    address 192.168.1.2
    broadcast 192.168.1.255
    netmask 255.255.255.0
    gateway 192.168.1.1
    post-up /etc/init.d/dhcp3-server start
    pre-down /etc/init.d/dhcp3-server stop

Таким образом, управление сетью (ifup / ifdown, НЕ network-manager) запустит сервер DHCP после установки моста и выключит его перед удалением моста.

0
ответ дан 4 September 2011 в 07:55

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

Похожие вопросы: