
systemdサービスファイルを使用してシステム起動時に固定パスを追加したいと思います。
デフォルトゲートウェイを介してアクセスできる別々の192.168クラスCネットワークにDMZネットワークがあります。また、OpenVPNを使用してノートブックのインターネットトラフィックをルーティングします。これはNetworkManagerを介してWi-Fi接続に自動的に接続されます。問題は、OpenVPNが接続されていて、ルートテーブルに新しいデフォルトパスを追加すると、DMZに接続できなくなることです。明らかに固定パスを手動で追加することでこの問題を解決できますが、起動時またはOpenVPNが接続されたときに自動的にこれを実行したいと思います。
起動時にこれを行うためにsystemdサービスファイルを作成してみました。サービスファイルは実行を試みるip route add
ため、ネットワークの起動後に実行する必要があります。
#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
次のようにNetworkManager-wait-online.serviceを有効にしました。
#systemctl enable NetworkManager-wait-online.service
システムが起動すると、サービスファイルは失敗し、systemctl status 01-static-route.service
次のメッセージを返します。
# 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.
ip route add
実行時にネットワーク接続がないため、コマンドが失敗したようです。
この問題を解決するために、systemd(または他の方法)を使用して永続静的パスを追加する正しい手順を説明できる人はいますか?