0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

NetworkManagerのDIspatcherでdhcpサーバを起動する

0
Posted at

コネクションプロファイルの作成

dispatcherを実行するためのDHCPサーバ専用のプロファイルを追加します

sudo nmcli con add con-name DHCP_server ifname enp0s3 ipv4.method manual ipv4.addresses 10.32.245.245/16 type ethernet

con-nameとidname、typeは任意です。
ipv4.addressesはdhcpd.confでroutersに指定しているIPアドレスをしていると良いでしょう。

dispatcherのスクリプト

スクリプトを置くディレクトリは/etc/NetworkManager/dispatcher.d/です。
以下に任意のファイルを追加し、スクリプト用意します

#!/bin/bash

ACTION=$2

if [ "$CONNECTION_ID" = "DHCP_server" ] && [ "$2" = "up" ]; then
        systemctl restart isc-dhcp-server.service
        if [ $? -ne 0 ]; then
                nmcli con up 'Wired connection 1'
        fi
fi

NetworkManagerではプロファイルの切り替わり時に、第一引数にインターフェイス名、第二引数に実行されたオプションが渡されます。
今回はDHCP_serverがupされたという条件のでdhcpサーバを起動するようにしています。

if [ $? -ne 0 ]; then
        nmcli con up 'Wired connection 1'
fi

もし仮にDHCP_serverの切り替えに失敗した場合、特定のプロファイルへ再度切り替えを行う処理も用意しています。

ラズパイはCLIで起動していてモニター類は用意していません。
DHCP_serverへの切り替え後は別のネットワークに切り替わるので、
もし割り当てが行われないとSSH接続ができなくなってモニターを用意するか、クライアント側に固定IPを割り当てるか見たいな感じなって面倒くさいですね。

ですので失敗しちゃったらもともとのネットワークに戻ってくるようにしたいのです。

最後に

切り替え時だけではなく、運用中に何らかの理由でサーバが落ちた場合にプロファイルの切り替えを行うスクリプトも用意すると安心かなと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?