ホーム » コンピュータ » Network » dhcpdのexecute機能

システム

最近の投稿

アーカイブ

カテゴリー

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 の隠れ技っぽいのを勝手に期待しちゃダメってことか…

Google 検索

My Google   Yahoo

Microsoft

ファンサイト