в версии до 0.9.9 dhcp пытался запуститься еще до конфигурации bridge. в этой версии поправили: 23 апреля 2009 Denis Ovsienko <pilot at altlinux.ru> 0.9.9-alt1 + rearrange bridge processing code to resolve DHCP and STP issues но проблема осталась в том, что интерфейс не сразу входит в режим передачи пакетов forwarding, поэтому это изменение не помогает, dhcpcd все равно успевает показать timeout. пример: в нынешней конфигурации по умолчанию для 0.9.9 May 15 10:34:15 combr kernel: [ 6543.519867] br0: port 2(tap0) entering listening state May 15 10:34:15 combr kernel: [ 6543.519878] br0: port 1(eth0) entering listening state May 15 10:34:15 combr dhcpcd[25095]: br0: dhcpcd 3.0.17 starting May 15 10:34:15 combr dhcpcd[25095]: br0: hardware address = 00:a0:d1:8e:b3:09 May 15 10:34:15 combr dhcpcd[25095]: br0: broadcasting for a lease May 15 10:34:30 combr kernel: [ 6558.516039] br0: port 2(tap0) entering learning state May 15 10:34:30 combr kernel: [ 6558.516053] br0: port 1(eth0) entering learning state May 15 10:34:45 combr kernel: [ 6573.517045] br0: topology change detected, propagating May 15 10:34:45 combr kernel: [ 6573.517067] br0: port 2(tap0) entering forwarding state May 15 10:34:45 combr kernel: [ 6573.517073] br0: topology change detected, propagating May 15 10:34:45 combr kernel: [ 6573.517080] br0: port 1(eth0) entering forwarding state May 15 10:34:45 combr dhcpcd[25095]: br0: timed out dhcpd запускается теперь после запуска br0, это верно. но сам br0 требует 30 секунд для перехода по состояниям. если же в файле brctl добавить setfd AUTO 0 то выходит такое: May 15 10:37:38 combr kernel: [ 6747.061404] device eth0 entered promiscuous mode May 15 10:37:38 combr kernel: [ 6747.062635] device tap0 entered promiscuous mode May 15 10:37:38 combr kernel: [ 6747.081013] br0: topology change detected, propagating May 15 10:37:38 combr kernel: [ 6747.081026] br0: port 2(tap0) entering forwarding state May 15 10:37:38 combr kernel: [ 6747.081029] br0: topology change detected, propagating May 15 10:37:38 combr kernel: [ 6747.081031] br0: port 1(eth0) entering forwarding state May 15 10:37:38 combr dhcpcd[25695]: br0: dhcpcd 3.0.17 starting May 15 10:37:38 combr dhcpcd[25695]: br0: hardware address = 00:a0:d1:8e:b3:09 May 15 10:37:38 combr dhcpcd[25695]: br0: broadcasting for a lease May 15 10:37:38 combr dhcpcd[25695]: br0: offered 10.1.1.14 from 10.1.10.240 May 15 10:37:38 combr dhcpcd[25695]: br0: leased 10.1.1.14 for 43200 seconds May 15 10:37:38 combr dhcpcd[25695]: br0: adding IP address 10.1.1.14/16 May 15 10:37:38 combr dhcpcd[25695]: br0: adding route to 10.1.0.0 (255.255.0.0) via 0.0.0.0 metric 1 May 15 10:37:38 combr dhcpcd[25695]: br0: removing route to 10.1.0.0 (255.255.0.0) via 0.0.0.0 metric 0 May 15 10:37:38 combr dhcpcd[25695]: br0: adding default route via 10.1.5.155 metric 1 May 15 10:37:39 combr dhcpcd.sh: interface br0 has been configured with new IP=10.1.1.14 т.е. все происходит за одну секунду и успешно. но при этом такая конфигурация с временем 0 подходит не всем и всегда, это проблема. с другой стороны, ждать и потом вручную запускать dhcpcd для получения адреса - тоже проблема. надо что-то придумать ;)
Я поясню. Вы настраиваете 2-портовый мост между двумя сетйми: локальной и удалённой. Если вы наверняка знаете, что этот мост навсегда останется единственноым средством сообщения между этими двумя сетями на 2-м сетевом уровне, то от использования STP можно отказаться: echo "stp AUTO off" >> /etc/net/ifaces/br0/brctl Если же петли коммутации возможны, то так делать нельзя. В Linux вашим единственным выбором является STP, с которым честно добиться низкого Forward delay вы не сможете (впрочем, работоспособность RSTP на TAP-интерфейсах я вообще поставлю под сомнение). В этом случае единственный надёжный способ --- увеличить таймаут: echo "DHCP_TIMEOUT=90" >> /etc/net/ifaces/br0/options Закрываю.