O Ubuntu 16.04 systemd service espera que o dhclient termine ao usar etc / network / interfaces

1

Eu tenho uma caixa 16.04 Desktop que se conecta à internet via Wi-Fi. Para facilitar o gerenciamento remoto, wlan0 é configurado via /etc/network/interfaces em vez do gerenciador de rede.

Eu tenho um serviço systemd que está ativado para iniciar na inicialização. Este serviço está configurado para iniciar após default.target , assim:

[Unit]
After=default.target

[Service]
Type=simple
ExecStart=/usr/bin/node main.js"
Restart=always

[Install]
WantedBy=default.target

Este serviço começa imediatamente se eu inicializar a caixa no alcance de sua rede wifi, porque o dhclient recebe imediatamente um IP. Mas se eu inicializar o meu sistema onde ele não pode entrar no wifi, meu serviço fica por perto e espera que o dhclient desista antes de começar. Esse serviço aguarda precisamente os 300 segundos especificados na sub-rotina /etc/dhclient/dhclient.conf timeout 300 .

Meu entendimento de After=default.target era que ele NÃO aguardaria na rede. After=network.target é a ferramenta para fazer isso. Se eu configuro meu wifi com o Network Manager em vez de /etc/network/interfaces , o serviço é iniciado imediatamente, independentemente da disponibilidade da rede.

Como posso fazer com que meu serviço seja iniciado, independentemente do status de dhclient , enquanto ainda estiver usando /etc/network/interfaces ?

    
por tyleha 03.01.2018 / 21:41

1 resposta

1

A resposta, parece, é usar a declaração allow-hotplug misteriosa em /etc/network/interfaces , como aprendi no link :

allow-hotplug wlan0
iface wlan0 inet dhcp
...

systemd não espera mais na rede para chutar de um serviço que depende de default.target . Por que allow-hotplug faz essa diferença é um pouco incerto para mim, já que não há um evento "hotplug" verdadeiro acontecendo no meu sistema. Um recurso diz:

% bl0ck_qu0te%     
por tyleha 03.01.2018 / 22:11