Мост не получает IP через DHCP при загрузке

8

Я использую CentOS 7. Я не использую NetworkManager, и я фактически удалил его.

Моя система должна получить IPv4-адрес через DHCP br0при загрузке. Однако, когда я вхожу, у него нет адреса.

Моя конфигурация:

# pwd
/etc/sysconfig/network-scripts

# cat ifcfg-enp5s0 
DEVICE=enp5s0
ONBOOT="yes"
BRIDGE=br0

# cat ifcfg-br0 
DEVICE=br0
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=dhcp
STP=on
DELAY=0

Обратите внимание, что я не настраивал этот мост вручную; virt-managerсделал так, когда я добавил br0в этом диалоге:

Скриншот virt-manager, показывающий br0 на вкладке Сетевые интерфейсы

Актуальные journalctl --boot | grep '\(\<br0\>\|enp5s0\)'и контекст:

Jan 08 21:04:32 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link down
Jan 08 21:04:32 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_UP): enp5s0: link is not ready
Jan 08 21:04:32 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link down
Jan 08 21:04:32 jonathon-centos7 kernel: device enp5s0 entered promiscuous mode
Jan 08 21:04:32 jonathon-centos7 network[947]: Bringing up interface enp5s0:  [  OK  ]
...
Jan 08 21:04:32 jonathon-centos7 network[947]: Bringing up interface br0:
Jan 08 21:04:32 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_UP): br0: link is not ready
...
Jan 08 21:04:34 jonathon-centos7 kernel: r8169 0000:05:00.0 enp5s0: link up
Jan 08 21:04:34 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): enp5s0: link becomes ready
Jan 08 21:04:34 jonathon-centos7 kernel: br0: port 1(enp5s0) entered listening state
Jan 08 21:04:34 jonathon-centos7 kernel: br0: port 1(enp5s0) entered listening state
//// (Note: 2 second delay here, with no other events)
Jan 08 21:04:36 jonathon-centos7 avahi-daemon[957]: Registering new address record for fe80::f66d:4ff:fe3b:c24e on enp5s0.*.
Jan 08 21:04:36 jonathon-centos7 kernel: br0: port 1(enp5s0) entered learning state
///// (Too soon!)
Jan 08 21:04:38 jonathon-centos7 network[947]: Determining IP information for br0... failed; no link present.  Check cable?
Jan 08 21:04:38 jonathon-centos7 network[947]: [FAILED]
Jan 08 21:04:38 jonathon-centos7 systemd[1]: network.service: control process exited, code=exited status=1
Jan 08 21:04:38 jonathon-centos7 systemd[1]: Failed to start LSB: Bring up/down networking.
Jan 08 21:04:38 jonathon-centos7 systemd[1]: Unit network.service entered failed state.
...
Jan 08 21:04:38 jonathon-centos7 kernel: br0: topology change detected, propagating
Jan 08 21:04:38 jonathon-centos7 kernel: br0: port 1(enp5s0) entered forwarding state
Jan 08 21:04:38 jonathon-centos7 kernel: IPv6: ADDRCONF(NETDEV_CHANGE): br0: link becomes ready
Jan 08 21:04:39 jonathon-centos7 avahi-daemon[957]: Registering new address record for fe80::f66d:4ff:fe3b:c24e on br0.*.
Jan 08 21:04:41 jonathon-centos7 avahi-daemon[957]: Registering new address record for 2605:a000:1315:8119:f66d:4ff:fe3b:c24e on br0.*.
Jan 08 21:04:41 jonathon-centos7 avahi-daemon[957]: Withdrawing address record for fe80::f66d:4ff:fe3b:c24e on br0.

///// (Here's where I entered `ifup br0`)
Jan 08 22:43:30 jonathon-centos7 dhclient[5009]: DHCPDISCOVER on br0 to 255.255.255.255 port 67 interval 6 (xid=0x25f649b7)
Jan 08 22:43:31 jonathon-centos7 dhclient[5009]: DHCPREQUEST on br0 to 255.255.255.255 port 67 (xid=0x25f649b7)
Jan 08 22:43:34 jonathon-centos7 avahi-daemon[957]: Joining mDNS multicast group on interface br0.IPv4 with address 10.0.1.128.
Jan 08 22:43:34 jonathon-centos7 avahi-daemon[957]: New relevant interface br0.IPv4 for mDNS.
Jan 08 22:43:34 jonathon-centos7 avahi-daemon[957]: Registering new address record for 10.0.1.128 on br0.IPv4.
Jan 08 23:43:17 jonathon-centos7 dhclient[5124]: DHCPREQUEST on br0 to 10.0.1.1 port 67 (xid=0x25f649b7)

После загрузки системы и входа в систему я могу открыть терминал и:

# ifup br0
set forward delay failed: Numerical result out of range

Determining IP information for br0... done.

И тогда я подключаюсь к своей сети.

Почему я не могу получить IP br0при загрузке?

Связанные с:

Ноты:

  • brctl showstp br0показывает, что задержка пересылки установлена ​​на 2,00. brctl setfd br0 0показывает ту же ошибку, что и ifup br0. Похоже, что virt-manager указал неверное значение DELAY=0для br0.
  • После нахождения важных записей в журналах, кажется, что systemdпытается получить IP-адрес, br0прежде чем он перешел в состояние пересылки.
  • Я открыл ошибку 8086 на багтрекере CentOS.
Джонатон Рейнхарт
источник
1
Обновление : удаление STP=yesиз моего конфига позволяет мне выиграть это условие гонки.
Джонатон Рейнхарт

Ответы:

1

Ваш мост не контролируется сетевыми скриптами, он контролируется libvirt. Мост должен появиться, когда появится служба libvirtd.

Я бы не стал так бегать. Я бы сделал мост управляемым сетевым сценарием и не имел бы моста в конфигурации libvirt.

Файлы ifcfg, которые у вас сейчас есть, в порядке. Просто удалите конфигурацию из libvirt, убедитесь, что у вас все еще есть эти файлы, затемchkconfig network on

Да, chkconfig работает на EL7.

suprjami
источник
1
«Просто удалите конфигурацию из libvirt,« Как мне это сделать? Кто-нибудь, почему virt-manager смог так легко создать такую ​​сломанную установку?
Джонатон Рейнхарт
1

Цитата из http://www.microhowto.info/howto/persistently_bridge_traffic_between_two_or_more_ethernet_interfaces_on_redhat.html :

По этой причине вы можете оставить STP отключенным в простых случаях (например, при подключении набора виртуальных машин к одному физическому интерфейсу).

Отключение STP, кажется, способ заставить это работать.

Яри ​​Туркиа
источник
0

Ваша физическая связь не работает, когда ваш мост запускается. Добавьте задержку к вашему физическому интерфейсу.

Nils
источник