Executando um arquivo de serviço do systemd depois que a rede está pronta para ignorar um gateway padrão do OpenVPN

2

Eu gostaria de adicionar uma rota estática usando um arquivo de serviço systemd na inicialização do sistema.

Eu tenho uma rede DMZ em uma rede separada da classe C 192.168 acessível através do meu gateway padrão. Eu também uso o OpenVPN para direcionar o tráfego de internet do meu laptop, que é conectado automaticamente pelo NetworkManager junto com a minha conexão Wi-Fi. Sendo problema, quando o OpenVPN se conecta e adiciona uma nova rota padrão à tabela de roteamento, a DMZ não está mais acessível. Obviamente, posso superar isso adicionando manualmente uma rota estática, mas gostaria de fazer isso automaticamente na inicialização ou quando o OpenVPN se conecta.

Eu tentei criar um arquivo de serviço systemd para fazer isso na inicialização. O arquivo de serviço tenta executar ip route add e, como tal, precisa ser executado depois que a rede estiver ativa:

#01-static-route.service

[Unit]
Description=Static route to the DMZ
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
# Add a route to the DMZ network since the vpn will change our default gateway
ExecStart=/usr/bin/ip route add 192.168.0.0/24 via 192.168.1.1

[Install]
WantedBy=multi-user.target

Eu habilitei o NetworkManager-wait-online.service da seguinte forma:

#systemctl enable NetworkManager-wait-online.service

Quando o sistema inicializa, o arquivo de serviço falha e systemctl status 01-static-route.service retorna as seguintes informações:

# systemctl status 01-static-route.service
● 01-static-route.service - Static route to the DMZ
   Loaded: loaded (/etc/systemd/system/01-static-route.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Mon 2015-04-13 16:40:11 BST; 28s ago
  Process: 558 ExecStart=/usr/bin/ip route add 192.168.0.0/24 via 192.168.1.1 (code=exited, status=2)
 Main PID: 558 (code=exited, status=2)

Apr 13 16:40:11 archlap ip[558]: RTNETLINK answers: Network is unreachable
Apr 13 16:40:11 archlap systemd[1]: 01-static-route.service: main process exited, code=exited, status=2/INVALIDARGUMENT
Apr 13 16:40:11 archlap systemd[1]: Failed to start Static route to the DMZ.
Apr 13 16:40:11 archlap systemd[1]: Unit 01-static-route.service entered failed state.
Apr 13 16:40:11 archlap systemd[1]: 01-static-route.service failed.

Eu assumo que o comando ip route add está falhando porque não há conexão de rede quando é executado.

Alguém poderia explicar o procedimento correto para adicionar uma rota estática persistente usando systemd (ou qualquer outro método) para superar esse problema?

    
por Aaron 13.04.2015 / 18:11

0 respostas