Como iniciar uma interface de rede virtual com o systemd (fornecer endereço IP adicional)

3

Gostaria de mover meu script de inicialização / inicialização / status antigo para o systemd

Basicamente, começa:

ifconfig eth0:vip 10.0.0.1/24 up

pare:

ifconfig eth0:vip down

status:

ifconfig  | grep 'eth0:vip'

Eu tentei criar uma unidade de serviço systemd:

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/path/myscript start
ExecStop=/path/myscript stop
Restart=no

Mas o systemctl status não tem como detectar quando o eth0: vip desce com um manual ifconfig eth0:vip down .

O que devo fazer para que meu script seja compatível com o systemd?

    
por heroedeleyenda 03.03.2017 / 16:07

1 resposta

3

Esta unidade é compatível. Não há melhorias a serem feitas nesse sentido.

O systemd simplesmente não suporta a definição de uma ação personalizada para systemctl status foo , ao contrário dos scripts init.d no init do System V. systemd só pode verificar um daemon em execução (ou não, dado RemainAfterExit ).

O systemd não rastreia unidades para o status da rede, endereços IP nem os aliases de interface herdados que você está usando.

Você pode alterar seu sistema de configuração de rede principal para incluir o segundo endereço IP. Você pode gostar de ter toda a configuração do seu endereço de rede no mesmo local:).

systemd-networkd suporta a execução de endereços DHCP e estáticos na mesma interface. O NetworkManager não, mas hoje em dia você pode criar um arquivo de chave para criar virtuais interfaces macvlan como filhos do físico. (Em teoria, isso pode até permitir que você solicite vários endereços DHCP :). Não tente aplicar configurações de mais de um desses sistemas de configuração à mesma interface nomeada. Se você já estiver executando o NetworkManager, provavelmente é mais fácil usá-lo.

Tanto a systemd-network (networkctl) quanto o NetworkManager (por exemplo, nmcli) detectarão e mostrarão se você mesmo alterar suas interfaces de rede.

Também pode ser possível configurar sistemas de configuração mais antigos [ 1 ] [ 2 ] para criar interfaces macvlan. No entanto, pelo que me lembro, eles poderiam ficar bastante confusos se você mexer com as interfaces nas costas.

Outras tarefas personalizadas de pré-inicialização ou pós-inicialização podem ser invadidas na maioria dos sistemas de configuração, se necessário [ 3 ], embora systemd-networkd não tenha nenhum desses sistemas embutidos. Eu digo "hackeado", porque o sistema NM não foi projetado para executar scripts escritos para uma interface específica.

    
por 03.03.2017 / 16:59