Estou executando o CentOS 7. Não estou executando o NetworkManager e, na verdade, o desinstalei.
Meu sistema deve adquirir um endereço IPv4 via DHCP br0
na inicialização. No entanto, quando eu entro, ele não tem endereço.
Minha configuração:
# 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
Observe que eu não configurei esta ponte manualmente; virt-manager
fiz isso quando adicionei br0
nesta caixa de diálogo:
Relevante journalctl --boot | grep '\(\<br0\>\|enp5s0\)'
e contexto:
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)
Depois que o sistema inicializar e eu estiver conectado, eu posso abrir um terminal e:
# ifup br0
set forward delay failed: Numerical result out of range
Determining IP information for br0... done.
E então eu estou conectado à minha rede.
Por que não consigo obter um IP br0
na inicialização?
Relacionado:
- Ponte Ethernet com dhcp [CentOS forms]
Notas:
brctl showstp br0
mostra que o atraso de encaminhamento está definido como 2,00.brctl setfd br0 0
mostra o mesmo erro queifup br0
. Parece que virt-manager especificou um inválidoDELAY=0
parabr0
.- Depois de encontrar as entradas importantes nos logs, parece que
systemd
está tentando obter um IPbr0
antes de entrar no estado de encaminhamento. - Abri o bug 8086 no gerenciador de erros do CentOS.
STP=yes
da minha configuração me permite vencer esta condição de corrida.Respostas:
Sua ponte não está sendo controlada pelos scripts de rede, está sendo controlada pela libvirt. A ponte deve surgir quando o serviço libvirtd for lançado.
Eu não correria assim. Eu tornaria a ponte controlada pela rede initscript e não teria nenhuma ponte na configuração libvirt.
Os arquivos ifcfg- que você tem agora estão bem. Apenas remova a configuração da libvirt, verifique se você ainda possui esses arquivos e, em seguida,
chkconfig network on
Sim, o chkconfig funciona no EL7.
fonte
Uma citação de http://www.microhowto.info/howto/persistently_bridge_traffic_between_two_or_more_ethernet_interfaces_on_redhat.html :
Desativar o STP parece ser o caminho para fazê-lo funcionar.
fonte
Seu link físico não está ativo quando a ponte é iniciada. Adicione um atraso à sua interface física.
fonte