[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)