dhcpdのexecute機能

子どもがインフルエンザで5日間休みとなってしまった。 んで、このままだとゲーム三昧をしそう。 ということで、あんまり遊んでいるようなら、自動的にネットワークを切れないか、検討してみる。

子どもの端末やアカウントでは、Proxyサーバを通すようにしてあって、 そのアクセス時の利用時間によって、Proxyを通す/通さないをコントロールしている。 しかし、ゲーム機でhttp以外を使っていれば、効き目がない。

そこで、DHCPサーバで子どものゲーム機からのアクセスで、 禁止状態なら fake の情報をDHCPサーバが返すことで、 ネットワーク遮断させてみること考えてみた。

自宅では、isc-dhcpd-4.2.2 を使っているので、色々方法を調べてみた。

DHCPリース時のスクリプト起動

DHCPのリース時にscriptを動かすには、on commit { execute(...); }といった方法がある。

(( /etc/dhcp/dhcpd.conf ))
on commit {
  execute( "shell script..." ) ;
}

でも、これでは fake 情報を返せなさそう。

リース前にスクリプト起動

リース情報を決めるための if文が使えそうで、ここを見たら、こんなことが書けそう。 でも試してみるけど、うまく動かない。

host playstation {
   hardware ethernet 11:22:33:44:55:66 ;
   fixed-address     192.168.XXX.YYY ;

   # dhcpd.scriptは使わせたくない時は "exit 1"
   if ( execute( "/etc/dhcpd/dhcpd.script" ) = 1 ) {
      option routers 192.168.YYY.ZZZ ;  # 偽のルータ情報
   }
}

出力されたエラーメッセージは以下の通り。

dhcpd self-test failed. Please fix /etc/dhcp/dhcpd.conf.
The error was:
Internet Systems Consortium DHCP Server 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
/etc/dhcp/dhcpd.conf line xx : boolean expression expected.
        if ( execute(
            ^
/etc/dhcp/dhcpd.conf line xx : semicolon expected.
        if ( execute( "/etc/dhcpd/dhcpd.script" ) =
                                                  ^
Configuration file errors encountered -- exiting]

参考にしたサイトだと、dhcpd-3.x ではexecuteが使えるように書いてあるけど、 dhcpd-4.x のマニュアルを見ると、if 式 で execute などの"action"が使えるようなことは書いてない。 うーむ、dhcpd-3.x の隠れ技っぽいのを勝手に期待しちゃダメってことか...

 

2017年2月

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28        

ウェブページ

アーカイブ

Webデータ

このブログ記事について

このページは、T-Saitohが2013年1月15日 22:37に書いたブログ記事です。

ひとつ前のブログ記事は「dovecotのディレクトリ形式」です。

次のブログ記事は「トップページ更新」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。