Debian systemd network-online.target não está funcionando?

20

Então, estou tentando fazer o serviço systemd no Debian Jessie. Eu preciso que ele comece depois que network-online.target for atingido.

O problema é que network-online.target é acionado no mesmo tempo que network.target e, nesse período, minhas interfaces ainda não estão configuradas, apenas iniciamos a consulta DHCP.

Parece um problema específico do Debian, porque ele usa a configuração de rede legada.

Como contornar esse problema ou como fazer network-online.target funcionar?

    
por 10robinho 15.06.2015 / 18:00

2 respostas

15

Como você está usando /etc/network/interfaces , você precisará de um serviço systemd para monitorar o status de cada interface. Verifique se você tem /lib/systemd/system/ifup-wait-all-auto.service (instalado pelo pacote ifupdown no Ubuntu 15.04). Caso contrário, crie /etc/systemd/system/ifup-wait-all-auto.service e cole o seguinte:

[Unit]
Description=Wait for all "auto" /etc/network/interfaces to be up for network-online.target
Documentation=man:interfaces(5) man:ifup(8)
DefaultDependencies=no
After=local-fs.target
Before=network-online.target

[Service]
Type=oneshot
RemainAfterExit=yes
TimeoutStartSec=2min
ExecStart=/bin/sh -ec '\
  for i in $(ifquery --list --exclude lo --allow auto); do INTERFACES="$INTERFACES$i "; done; \
  [ -n "$INTERFACES" ] || exit 0; \
  while ! ifquery --state $INTERFACES >/dev/null; do sleep 1; done; \
  for i in $INTERFACES; do while [ -e /run/network/ifup-$i.pid ]; do sleep 0.2; done; done'

[Install]
WantedBy=network-online.target

Este é o arquivo de serviço presente em um sistema Ubuntu 15.04, mas com a seção [Install] adicionada para tornar as coisas um pouco mais fáceis. Eu estou esperando que o comportamento de ifup no Ubuntu 15.04 seja o mesmo que o comportamento de ifup no Debian Jessie. Se não, algumas modificações serão necessárias (particularmente com a última linha).

Em seguida, execute sudo systemctl enable ifup-wait-all-auto.service . Após a reinicialização do seu computador, você verá que o network-online.target é alcançado depois que as interfaces são ativadas (pelo menos).

    
por 23.07.2015 / 02:59
0

Atenção! Apenas descobri em um Jessie Raspbian: remova todas as linhas comentadas em interfaces / etc / network e ele funcionará! Parece ser um bug de análise =) No meu caso específico, eu deixei de comentar iface eth0 inet dhcp e apenas esqueci sobre isso há eons atrás, mas após atualizar para o Raspbian Jessie e reconstruir um kernel eu tenho um comportamento muito estranho: ele usou DHCP e se recusou a fazer um ajuste de / etc / network / interfaces. Então, tirei todos os comentários - apenas linhas de trabalho, reinicie - e funciona! NENHUMA PATCHING / EDIÇÃO DE SCRIPT NECESSÁRIA!

    
por 18.01.2016 / 04:35