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?
Tags networking systemd openvpn linux iproute