[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-users:38136] Re: <Q> How to make a dhcp server for twosubnets?
奈古屋といいます。職場で似たようなことをやっているのでなにかの御参考に
なれば幸いと思いまして投稿いたしました。きちんと調べたわけではないので
嘘を書いていたらごめんなさい。
# Debian GNU/Linux とあまり関係ない話題なのでなんですが
From: Masaki Ikeda <masaki@xxxxxxxxxxxx>
Date: Thu, 4 Sep 2003 19:28:19 +0900
> もちろんルータ配下に複数のサブネットがある場合もあり得ます。
> とすると、dhcpdはその複数サブネットをどう識別すれば良いかという問題に帰
> 結するのですが、「ルータのアドレス」では識別できないのは明らかです。
DHCP/BOOTPクライアントが属しているサブネットへ接続している relay agent
のインターフェースのIPアドレス(これは DHCPDISCOVER Message の giaddr
field に relay agent が埋め込む)で識別できます。
From: SHIBATA Akira <shibata@xxxxxxxxxxxxxx>
Date: Wed, 3 Sep 2003 20:20:15 +0900
> ●実験ネットワーク構造
> dhcp server
> | 172.16.241.11
> |
> +------------------------------+
> | 172.16.240.1/16 | 172.16.240.2/16
> router1 router2
> | 172.18.0.1/16 | 172.20.0.1/16
> | |
> dhcp client A dhcp client B
+ A から relay agent router1 経由の DHCPDISCOVER Message だったら giaddr = 172.18.0.1
+ B から relay agent router2 経由の DHCPDISCOVER Message だったら giaddr = 172.20.0.1
ということで、中間経路がどうなっているかとは無関係にDHCPクライアントが
接続しているサブネットをDHCPサーバは決定できるわけです(嘘つかれてたら
困りますけど…)。そしてDHCPサーバは giaddr に該当する(subnet number と
netmask から計算できる) subnet statemet に従ってDHCPクライアントへIPア
ドレスを割り振ります(DHCPOFFER Message を relay agent へ送る)。
# 以後は DHCPREQUEST/DHCPACK ということで relay agent を介さず通信する
ですからDHCPサーバの設定は
From: MATSUDA Yoh-ichi / 松田陽一 <yoh@xxxxxxxx>
Date: Thu, 4 Sep 2003 18:34:41 +0900
> そうすれば、 /etc/dhcpd.conf には
>
> subnet 172.18.0.0 netmask 255.255.0.0 {
> range 172.18.0.3 172.18.254.254;
> }
> subnet 172.20.0.0 netmask 255.255.0.0 {
> range 172.20.0.3 172.20.254.254;
> }
>
> と書くだけで良いかと。
で問題ないはずです(+ option routers/subnet-mask/broadcast-address くら
い)。shared-network statement はひとつの物理セグメント上で複数の(IPの
意味での)サブネットを運用している場合に利用するものですから、ここで話
題になっている構成では不要です(同一の設定をまとめたいのであれば group
statment を使います)。というわけで dhcpd.conf を
group {
option subnet-mask 255.255.0.0;
subnet 172.18.0.0 netmask 255.255.0.0 {
range 172.18.200.0 172.18.220.254;
option broadcast-address 172.18.255.255;
option routers 172.18.0.1;
}
subnet 172.20.0.0 netmask 255.255.0.0 {
range 172.20.100.0 172.20.120.254;
option broadcast-address 172.20.255.255;
option routers 172.20.0.1;
}
}
くらいにしておけばうまくいくのではないかと思います。
# dhcp パッケージを入れると /usr/share/doc/dhcp/doc/rfc2131.txt.gz が導
# 入されるので、それを眺めるのが一番確実だと思います。
あと、テストには dhcpdump や dhcping が便利です(apt-get で導入できます)
------
一橋大学総合情報処理センター 奈古屋広昭 (email: nagoya@xxxxxxxxxxxxxx)