ホーム » コンピュータ » Linux » Debian » dhcp-evalの使い方

サーバ⚙

アーカイブ

カテゴリー

dhcp-evalの使い方

自宅ネットワークでは、利用する機器の状態を把握するために固定IPアドレスを割り振っているが、DHCP の hardware ethernet で、Mac アドレスをみて配布している。この DHCP のリース時に、状態に合わせた処理を起動するための機能がある。

on commit などで script を実行

on commit , on release , on expiry を設定すると、IPアドレス割り振り時にプログラムを起動できる。

# vi /etc/dhcp/dhcpd.conf
:
# IPアドレス割り振り時に on-commit.sh を起動
on commit {
    set clip = binary-to-ascii(10, 8, ".",
                 leased-address);
    set clhw = binary-to-ascii(16, 8, ":",
                 substring(hardware, 1, 6));
    execute("/etc/dhcp/on-commit.sh", clip, clhw);
}

# vi /etc/dhcp/on-commit.sh
#!/bin/bash
#   IPアドレスを割り振り時にメールを送る
IP=$1
MAC=$2
if [ -n "$IP" -a -n "$MAC" ]; then
    echo "$IP $MAC" \
    | /usr/bin/mail -s "dhcp on commit" foo@example.com
fi

on commit の例で示した方法は、DHCPがアドレスをリースする度に呼び出される。スクリプトは同期して行われるため、遅い処理の場合には アドレス割り振りに支障がでるかもしれない。よって、スクリプトはシンプルなものを使う必要がある。

自宅では、host { fixed-address … } で、固定しているとはいえ WiFi なスマホだと、電波強度不足で再接続が発生する時だと、頻繁にメールが届くことになる。接続情報を保存するなどの Script を書かないとウザぃ。

host 毎に script を実行

こういうことができると、状況に合わせてリースを制御したくなる。自宅で使う場合だと、子供が長い時間使っている場合には、IPアドレスのリースを失敗させて、ネットワーク接続を切りたいかもしれない。

こういう場合には、host … { } の中に、execute を埋め込むことができる。しかも、execute で実行される script の返り値で、lease を失敗させることもできる。

# /etc/dhcp/dhcpd.conf
:
host game-machine {
    hardware ethernet 00:11:22:33:44:55 ;
    fixed-address      192.168.11.222 ;
    execute( "/etc/dhcp/lease-check.sh ,
             "192.168.11.222" ,
             "00:11:22:33:44:55" ) ;
}

# vi /etc/dhcp/lease-check.sh

#!/bin/bash
#  DHCP接続を判定する script
IP=$1
MAC=$2
if [ -n "$IP" -a -n "$MAC" ]; then
    if [ アドレスを許可する条件 ]; then
        # 接続許可
        exit 1
    else
        # 接続禁止
        exit 0
    fi
fi

注意: 最初 lease-check.sh は許可するときに shell-script 成功時を表す exit 0 を返せばいいとおもったけど、逆だったな。

検索 🔎

  My Google     Yahoo

便利サイト

%d人のブロガーが「いいね」をつけました。