[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:38135] Re: <Q> How to make a dhcp server for twosubnets?



柴田(あ)です。

中間報告です。
# ダメ元はダメでした。

In message <E19urLY-0007Bi-00@xxxxxxxxxxxxxxxxxxxxx>
   "[debian-users:38134] Re: <Q> How to make a dhcp server for twosubnets?"
   "Thu, 4 Sep 2003 19:28:19 +0900"
   "Masaki Ikeda <masaki@xxxxxxxxxxxx>" wrote:

> 池田@オレンジです。

検討ありがとうございます。

 
> > router は下記の通りでリレーしていると考えています。
> > 実際 dhcp-relay パッケージを入れるまで IP アドレスは
> > dhcp サーバからは振られていませんでした。
> 
> DHCPのリレーエージェントというのは、サブネットにいるクライアントから直接
> ブロードキャストの届かないDHCPサーバへの中継をする役割で、今柴田さんが設
> 定されているネットワークでは「偶然」IPルータとリレーエージェントが稼動し
> ているモノが同一ホストであるに過ぎません。
> 
> たとえば
> 
> +--dhcpd
> |
> +-router
>     |
>     +--relay agent
>     |
>     +-client
> 
> という構成も存在し得ます。
> もちろんルータ配下に複数のサブネットがある場合もあり得ます。
> とすると、dhcpdはその複数サブネットをどう識別すれば良いかという問題に帰
> 結するのですが、「ルータのアドレス」では識別できないのは明らかです。

実機で実験してきました。
希望通り動作しているところからサブネットを分けたいと
いうことで活動しているので、従来のところに支障がでない
範囲で設定変更してみたのです。

不思議なことに下記のように dhcp サーバでルータのサブネットの
アドレスを検出しています。
上の方(希望通り稼動)のほうでは、 172.18.0.0 の中で 172.18.0.1 が
ルータのアドレスであり、実際に振られたアドレスは 172.18.200.1 でした。

で、ログの下の方では 172.20.0.1 を検出しています。
(なお、ルータには複数のアドレスを振られていて 172.19.0.1 も振られています。)

shibata@dhcp:/usr/local/dhcp_update$ sudo grep 00:e0:98:77:41:56 /var/log/daemon.log
Sep  4 20:14:51 dhcp dhcpd-2.2.x: DHCPDISCOVER from 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:14:52 dhcp dhcpd-2.2.x: DHCPOFFER on 172.18.200.1 to 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:14:54 dhcp dhcpd-2.2.x: DHCPDISCOVER from 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:14:54 dhcp dhcpd-2.2.x: DHCPOFFER on 172.18.200.1 to 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:15:02 dhcp dhcpd-2.2.x: DHCPDISCOVER from 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:15:02 dhcp dhcpd-2.2.x: DHCPOFFER on 172.18.200.1 to 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:15:02 dhcp dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:15:02 dhcp dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:15:05 dhcp dhcpd-2.2.x: DHCPRELEASE of 172.18.200.1 from 00:e0:98:77:41:56 via eth0 (found)
Sep  4 20:15:08 dhcp dhcpd-2.2.x: DHCPDISCOVER from 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:15:08 dhcp dhcpd-2.2.x: DHCPOFFER on 172.18.200.1 to 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:15:08 dhcp dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:e0:98:77:41:56 via 172.18.0.1
Sep  4 20:15:08 dhcp dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:e0:98:77:41:56 via 172.18.0.1
↑
希望通り動作している

移動して差替えて dhcp リクエスト出してみました。

希望通りになっていない
↓
Sep  4 20:16:06 dhcp dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:e0:98:77:41:56 via 172.19.0.1
Sep  4 20:16:06 dhcp dhcpd-2.2.x: DHCPNAK on 172.18.200.1 to 00:e0:98:77:41:56 via 172.19.0.1
Sep  4 20:16:10 dhcp dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:e0:98:77:41:56 via 172.19.0.1
Sep  4 20:16:10 dhcp dhcpd-2.2.x: DHCPNAK on 172.18.200.1 to 00:e0:98:77:41:56 via 172.19.0.1
Sep  4 20:16:18 dhcp dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:e0:98:77:41:56 via 172.19.0.1
Sep  4 20:16:18 dhcp dhcpd-2.2.x: DHCPNAK on 172.18.200.1 to 00:e0:98:77:41:56 via 172.19.0.1
Sep  4 20:54:43 dhcp dhcpd-2.2.x: DHCPDISCOVER from 00:e0:98:77:41:56 via 172.20.0.1
Sep  4 20:54:44 dhcp dhcpd-2.2.x: DHCPOFFER on 172.18.200.1 to 00:e0:98:77:41:56 via 172.20.0.1
Sep  4 20:54:44 dhcp dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:e0:98:77:41:56 via 172.20.0.1
Sep  4 20:54:44 dhcp dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:e0:98:77:41:56 via 172.20.0.1
Sep  4 21:08:21 dhcp dhcpd-2.2.x: DHCPDISCOVER from 00:e0:98:77:41:56 via 172.20.0.1
Sep  4 21:08:22 dhcp dhcpd-2.2.x: DHCPOFFER on 172.18.200.1 to 00:e0:98:77:41:56 via 172.20.0.1
Sep  4 21:08:22 dhcp dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:e0:98:77:41:56 via 172.20.0.1
Sep  4 21:08:22 dhcp dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:e0:98:77:41:56 via 172.20.0.1

 
> また同様に、クライアントに渡す "option routers" はクライアントがデフォル
> トゲートウェイにすべきルータのアドレスを「サーバがクライアントへ」知らせ
> るためのオプションですから、これではサーバはクライアントの(存在するサブ
> ネットの)識別はできない事も明らかです。

option というのはオマケということで、コチラから
クライアントに知らせてやる情報であるというのは
理解していました。

結局のところ
-------------------------『 man dhcpd.conf 』より抜粋
       shared-network ISC-BIGGIE {
         shared-network-specific parameters...
         subnet 204.254.239.0 netmask 255.255.255.224 {
           subnet-specific parameters...
           range 204.254.239.10 204.254.239.30;
         }
         subnet 204.254.239.32 netmask 255.255.255.224 {
           subnet-specific parameters...
           range 204.254.239.42 204.254.239.62;
         }
       }
-------------------------------
の「 subnet-specific parameters... 」をいかに指定するか
ということですよね。

ですから、当方が記述している /etc/dhcpd.confの
------------------------------- 前略
host 1129 {
        hardware ethernet 00:90:99:ad:62:b5 ;
        option domain-name-servers 172.16.241.11 ;
        }
host 1130 {
        hardware ethernet 00:90:99:b9:33:87 ;
        option domain-name-servers 172.16.241.11 ;
        }
shared-network Cable-Modem {
        subnet 172.16.0.0 netmask 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;
        }
}
---------------------------------
というところで、 specific parameters を述べていないと
いうことがわかり、ソコに記述できることを探すのが
解決に結びつくことであると理解したと思います。


> で、manをつらつらと眺めてみたのですが、"option agent.circuit-id"あたりを
> 使ってどのagentからリレーされてきたパケットなのかをサーバ側で識別し、適
> 切なclassなりgroupなりのアドレスを返すという形になるのではないでしょうか?
> 
> see man 5 dhcp-options "RELAY AGENT INFORMATION OPTION"

という言葉をヒントに今夜勉強してみたいと考えます。

明日も工事なので、ソレを終えて実験に取り組みます。
嬉しい報告ができることを自分自身で期待しています。

-- 
SHIBATA Akira      ケーブルテレビはまちづくり
shibata@xxxxxxxxxxxxxx   phone : +81-429-74-3611