Bridge non ottiene l'IP tramite DHCP all'avvio


8

Uso CentOS 7. Non eseguo NetworkManager e l'ho disinstallato.

Il mio sistema dovrebbe acquisire un indirizzo IPv4 tramite DHCP br0all'avvio. Tuttavia, quando eseguo l'accesso, non ha indirizzo.

La mia configurazione:

# 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

Nota che non ho configurato questo bridge manualmente; virt-managerfatto quando ho aggiunto br0in questa finestra di dialogo:

screenshot di virt-manager che mostra br0 nella scheda Interfacce di rete

Rilevante journalctl --boot | grep '\(\<br0\>\|enp5s0\)'e contesto:

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)

Dopo l'avvio del sistema e dopo aver effettuato l'accesso, posso aprire un terminale e:

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

Determining IP information for br0... done.

E poi sono connesso alla mia rete.

Perché non riesco a ottenere un IP br0all'avvio?

Relazionato:

Appunti:

  • brctl showstp br0mostra che il ritardo in avanti è impostato su 2,00. brctl setfd br0 0mostra lo stesso errore di ifup br0. Sembra che virt-manager abbia specificato un invalido DELAY=0per br0.
  • Dopo aver trovato le voci importanti nei registri, sembra che systemdstia cercando di ottenere un IP br0prima che entri nello stato di inoltro.
  • Ho aperto il bug 8086 sul bugtracker di CentOS.

1
Aggiornamento : la rimozione STP=yesdalla mia configurazione mi consente di vincere questa condizione di gara.
Jonathon Reinhart,

Risposte:


1

Il tuo bridge non è controllato dagli initscripts della rete, è controllato da libvirt. Il bridge dovrebbe emergere quando si presenta il servizio libvirtd.

Non correrei così. Renderei il bridge controllato dalla rete initscript e non avrei alcun bridge nella configurazione di libvirt.

I file ifcfg che hai ora vanno bene. Rimuovi la configurazione da libvirt, assicurati di avere ancora quei file, quindichkconfig network on

Sì, chkconfig funziona su EL7.


1
"Basta rimuovere la configurazione da libvirt," Come posso fare? Qual è il motivo per cui virt-manager è stato in grado di creare così facilmente una configurazione così rotta?
Jonathon Reinhart,


0

Il tuo collegamento fisico non è attivo all'avvio del bridge. Aggiungi un ritardo all'interfaccia fisica.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.