DHCP server も立ち上げる

99年4月30日


DHCP ってなんだろう

さて, 私はモバイルな人御用達コンピュータの一つとしておなじみの日立 NP1000H こと初代 chandra を所有している (というか, この前買った)。 このマシンでは Win95 を中心に使用している (一応 Linux もインストールしてある)。 FreeBSD トップページ にある絵の中の, AT note というのはチャンドラのことである。

軽くてそれなりの性能もあるこいつはなかなか便利で, その上 PC カードは 3 枚も挿せるので, 常に Network Card を挿しておいても, 何の問題もない。

となれば, ネットワークにつなぐのが基本であろう(強引)。 ということで, どのようにつなぐのがいいのだろうか。 自宅でしかネットワークにつながないというのであれば, 他のマシンと同様に, 固定されたローカルな IP アドレス (10.1.1.x) を与えてやればすぐである。 また, 学校だけで使うのであれば, 学校のネットワークの管理人に頼んで, そこで IP アドレスを一つもらえば良い。

しかし, モバイルコンピュータというのは持ち運ぶ計算機なのである。 学校でも, 自宅でもネットワークに接続して使えないといけない。 ネットワーク環境は両方で違うので, 毎回設定しなおすのは面倒臭い。 Linux などであれば, script を用意しておけば一発なのだが, それでもわざわざ起動後に手動で毎回設定するのは面倒である。 Win95 のような GUI な OS では毎回マウスを使っていちいち IP アドレスやらネットマスクやらを手で入力し, さらに再起動する必要がある。

あぁ面倒だ, と考えた人はたくさんいる訳で, こういう状況下でネットワーク環境を自動設定してくれないかと考え, そういう仕組みを考え出した人もいる訳である。 でもって, それが DHCP (Dynamic Host Configuration Protocol) である。 DHCP を使うと, IP アドレスや Netmask といったものの他, DNS server, http proxy server, NTP (network time protocol) server といった サーバの IP アドレスなども自動で設定することができる。 ああ便利。なお, 学校ではすでに DHCP サーバが上がっている。

ということで, DHCP サーバ (IPアドレスとかを教える方) を FreeBSD マシンにやらせて, Win95 なマシンをクライアントにすることにする。

DHCP サーバの導入

DHCP server をやらせるには, いろいろな方法があるが, 一番簡単なのは例によって ports に含まれる DHCP のサーバを使うことである。FreeBSD の ports には WIDE-DHCP が含まれているので, こいつを使う (ports の net セクションの wide-dhcp-1.3b がそれである)。

まず, こいつを使うには仮想デバイス BPF (Berkley Packet Filter) が使えないといけないので, こいつを使えるように

pseudo-device bpfilter 4
という行をカーネルの設定ファイルに書き加えてカーネルを再構築し, かつ, デバイスファイル /dev/bpf? を
cd /dev ; ./MAKEDEV bpf0 bpf1 bpf2 bpf3
などとして作ることが必要である。 そして, これらの下準備ができたら WIDE-DHCP をインストールする。
pkg_install /cdrom/FreeBSD2.2.1/ports/net/dhcpd1.3b.tar.gz
なんて感じかな。

そして問題はこの後の DHCP サーバの設定である。 WIDE-DHCP の設定は /etc/dhcpdb.pool と /etc/dhcpdb/relay という二つのファイルで行なう。 relay の方は, リレーエージェントという, 他の DHCP サーバと相互に通信しあってより高度な設定を行なう, などといった時に使うものなので, とりあえず私には関係がない。 が, このファイルがないと起こられるので, とりあえず空っぽにしておく。

# touch /etc/dhcpdb.relay
などとすれば, 空っぽの dhcpdb.relay ファイルができる。

で, 問題は dhcpdb.pool である。 ネットワークの様子によってこの設定はいろいろと変えないといけないが, とりあえず私はこんなふうに設定した。

# global entry
global:!snmk=255.255.255.0:tmof=32400:rout=10.1.1.1:

# local setting for each subnet
homenetwork:tblc=global:brda=10.1.1.255:dnsv=10.1.1.1:dnsd=tominaga.org

# entries for dynamic / automatic allocation
host0:  :ipad=10.1.1.128:dfll=3600:maxl=7200:tblc=homenetwork:
host1:  :ipad=10.1.1.129:dfll=3600:maxl=7200:tblc=homenetwork:
host2:  :ipad=10.1.1.130:dfll=3600:maxl=7200:tblc=homenetwork:
host3:  :ipad=10.1.1.131:dfll=3600:maxl=7200:tblc=homenetwork:
詳しくは man dhcpdb.pool とかすればわかるので省略するが, デフォルトルートやらネットマスク, DNS サーバのアドレスとかいったものを列記し, そのあと DHCP クライアントに割り当てる IP アドレスを並べているだけである。

これで, ノートパソコンをハブにつないで電源を入れれば即ネットワークが見える。 なんて便利なんでしょう。はい。


時間を合わせる話