Como pular o DHCP se nenhum cabo estiver conectado à Ethernet no Debian

12

Meu Bananian Linux está perdendo tempo no logon tentando obter uma concessão de DHCP para a interface eth0 que não está conectada. Bem, o cabo extensor está conectado a ele, mas nada está do outro lado.

eu tenho

auto eth0
iface eth0 inet dhcp 

definido no meu /etc/network/interfacesdesde que eu quero pegar ethernet, caso esteja conectado, mas certamente não quero desacelerar a inicialização do sistema se o cabo não estiver conectado à ethernet. Presumi que o sistema saberia isso automaticamente e não tentaria obter uma concessão de DHCP para a interface.

Aqui está o que vejo no tempo de carregamento (veja as três últimas linhas):

insira a descrição da imagem aqui

Depois que, se entender que a concessão não está chegando, ela prosseguirá com a inicialização.

Existe uma maneira de dizer a ele para não DHCP se não houver um cabo conectado?

Maxim V. Pavlov
fonte

Respostas:

16

Se você especificar

allow-hotplug eth0

ao invés de

auto eth0

em /etc/network/interfaces, a conexão será iniciada somente udevquando algo a acionar, em vez de a cada inicialização.

Isso pode ser suficiente para lidar com o seu caso, mas não necessariamente; a página de interfacesmanual menciona que

(As interfaces marcadas com "allow-hotplug" são exibidas quando o udev as detecta. Isso pode ocorrer durante a inicialização, se a interface já estiver presente ou posteriormente, por exemplo, ao conectar uma placa de rede USB. não tem nada a ver com a detecção de um cabo de rede conectado.)

Você pode precisar usar /etc/network/if-up.d/00check-network-cablea partir do ifupdown-extrapacote para ignorar a interface se nenhum cabo estiver conectado.

Stephen Kitt
fonte
E se o cabo já estiver conectado antes da inicialização? udevNesse caso, um evento acionará a conexão no momento da inicialização? Em outras palavras, udevverifica quais dispositivos já estão conectados às portas da máquina?
Joseph R.
0

Sempre há mais de uma solução para o problema.

Se você estiver com esta máquina sempre em um só lugar, como em casa, a maneira mais fácil seria livrar-se do pacote dhcp-client e definir o endereço IP estático, a máscara e o gateway. Supondo que você não precise, você faria algo como

apt-get remove isc-dhcp-client

Isso informará primeiro, se houver alguma dependência. Depois de desinstalar o pacote, você não precisará mais esperar durante a inicialização.

Este é um exemplo do que você definiria em seu /etc/network/interfaces

iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.254

Fonte: https://wiki.debian.org/DHCP_Client

LinuxSecurityFreak
fonte
Como mencionado na pergunta, eu quero usar o DHCP se o cabo Ethernet estiver conectado. Portanto, remover o cliente DHCP não vai me ajudar.
Maxim V. Pavlov
0

Dê uma olhada em ifplugd:

O ifplugd é um daemon Linux que configura automaticamente o seu dispositivo Ethernet quando um cabo é conectado e o desconfigura automaticamente se o cabo for puxado. Isso é útil em laptops com adaptadores de rede integrados, pois só configurará a interface quando um cabo estiver realmente conectado.

ifplugd ifplugd faz interface com os utilitários de configuração de rede nativa da sua distribuição.

Algumas funcionalidades:

  • Utiliza os programas ifup / ifdown nativos da sua distribuição.
  • Pode emitir um bipe quando o cabo está desconectado, conectado, a configuração da interface foi bem-sucedida ou falhou.
  • Suporta os Linux SIOCETHTOOL (mais recente, também conhecido como API ethtool), SIOCGMIIREG (mais antigo, também conhecido como API mii-diag / mii-tool) e SIOCDEVPRIVATE (mais antigo, também conhecido como API mii-tool) ioctl () para obter o status do link. A versão 0.24 apresenta suporte para detecção de link com o sinalizador de interface IFF_RUNNING.
  • Suporte Syslog
  • Programa pequeno - o binário tem apenas 25 KB (mais 16 KB para libdaemon).
  • Suporte a várias interfaces Ethernet
  • Pode ser configurado para ignorar períodos curtos "desconectados" (opção -d) ou períodos curtos "plugados" (opção -u)
  • Suporte para redes sem fio. Sempre que uma associação a um ponto de acesso é detectada, a rede é configurada. Dê uma olhada no waproamd se você precisar de um recurso para configurar chaves WEP antes que as associações de AP tenham êxito.
  • Modo de compatibilidade para dispositivos de rede que não suportam detecção de cabos (opção -F)

Página de Pesquisa de Pacote Debian: ifplugd .
Site oficial ifplugd

Um apt-get update && apt-get-install ifpluddeve fazer o truque. Em uma nota lateral, o criador do systemd mantém este pacote.

eyoung100
fonte
2
Eu qualificaria isso como "... usado para manter este pacote" desde o último lançamento, há dez anos ;-). Atualmente, a Lennart provavelmente recomendaria systemd-networkd... Com ifplugd, após a instalação, você também precisará configurar seu dispositivo (especifique allow-ifplugdem /etc/network/interfaces).
Stephen Kitt
@StephenKitt você usou allow-ifplugdou viu o código? Durante a pesquisa, encontrei apenas bugs.debian.org/cgi-bin/bugreport.cgi?bug=468896 , que diz que o allow-ifplugdrecurso não foi aceito.
sourcejedi