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

[debian-users:38169] [Summary] <Q> How to make a dhcp server for two subnets?



柴田(あ)です。

希望通りに動作→成功しました。(実機でも成功)
検討してくださった皆様ありがとうございました。
この場を借りて御礼を述べるとともにサマリの投稿を
することで恩返しに代えたいと思います。

最後の一押しは奈古屋さんのメイル [debian-users:38136] でした。
根拠がよく理解できたような気がしたので、進む方向に確信が
もてたというのが最大の理由です。

ということで、
■回答
<A>
下記の状況では
/etc/dhcpd.conf を次のように書き換えることで
動作するようになりました。

どちらのパターンでも動作します。

●パターン 1 (現状からの変更最小構成)
設定ファイル中の shared-network CM { と対応する } を
抜くだけです。
注意:対応する } を抜き忘れると dhcpd がすぐに exit 
してしまいます(ハマりましたが、ログを見ると } が
余計だと書いてあります、手打ちで下に転記)
--------------------------
 /etc/dhcpd.conf line 26: expecting a declaration
 }
 ^
 Configuration file errors encountered -- exiting
-------------------------- こんな感じ 

default-lease-time 60;
max-lease-time 72;
option subnet-mask 255.255.0.0;
option domain-name-servers 127.0.0.1;
option domain-name "intra.hoge.jp";

host 1 {
        hardware ethernet 00:e0:98:77:41:56 ;
        option domain-name-servers 172.16.241.10 ;
        }

        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;
        }
 
●パターン 2 ( group を組む構成)
default-lease-time 60;
max-lease-time 72;
option subnet-mask 255.255.0.0;
option domain-name-servers 127.0.0.1;
option domain-name "intra.hoge.jp";

host 1 {
        hardware ethernet 00:e0:98:77:41:56 ;
        option domain-name-servers 172.16.241.10 ;
        }

group {
        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;
        }
}

●忘れちゃいけない部分
松田陽一@三鷹さんのメイル [debian-users:38131] や
奈古屋さんのメイル [debian-users:38136] には記述されてなくて
引っかかっていて、解決の最後のキーは
        subnet 172.16.0.0 netmask 255.255.0.0 {
        }
を記述したことでした。
ログをよく読むと (下記は手で写してますので typo 御免)
---------------------
No subnet declaration for eth0 (172.16.241.11).
Please write a subnet declaration in your dhcpd.conf file for the
network segment to which interface eth0 is attached.
------------------------- こんな感じ
なーんてことが書いてあったので 172.16.0.0 ネットを書き加えて
みたら、ビンゴ!だったわけです。
</A>

■おまけ
市中で売っている 1 万円くらいまでのヤスモンルータでは
dhcp をリレーしてくれないことを知らなくて、
dhcp サーバの構築には大変苦労しました。
今回 debian でルータとしようとしたのは dhcp-relay パッケージを
発見したので、実機を導入する前に実験をしておきたかったからです。



直接的には Debian 固有の話題では在りませんでしたが、
・ dhcp サーバは Debian GNU/Linux の woody で
・二台のルータも Debian で構築し、 dhcp-relay パッケージを
 導入することで容易に dhcp をリレーしてくれるルータが
 構築できました。
これらによって二つのサブネットを持つネットワークを模して
Windows の dhcp client を入れ替えました。
本筋である dhcp サーバの設定に入るまでに実験環境構築では
実質 4 時間程度と大変早くできましたので、 Debian ならではの
部分が生かされたと思います。
以前は Slackware を使っていたので、本筋に入る前にエラく苦労したので
 Debian での環境は大変ありがたいと思っています。
あとはいつか google が拾ってくれるとかで同じことで困った人に
再利用されれば、サマリを書いた者としては満足です。


以上ですが、お叱り、ご意見、ご感想、ツッコミ歓迎です。

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



In message <20030903112013.D687D17BAAE@arashi.debian.or.jp>
   "[debian-users:38120] <Q> How to make a dhcp server for two subnets?"
   "Wed, 3 Sep 2003 20:20:15 +0900"
   "SHIBATA Akira <shibata@xxxxxxxxxxxxxx>" wrote:

> 柴田(あ)です。
> 
> ■設定ついて
> 二つのサブネット向けの dhcp サーバの設定でたいへん困っております。
> チェック漏れ等ご指摘いただければ幸いに思います。
> Debian specific か悩んだのですが、 Debian のパッケージの
> 説明を読んでも ISC の DHCP サーバかわからなかったのですが、
> 読んでいくとどうもそのようだし、どこかでそう読んだような
> きがしますが、 man を読むと ISC の設定構文と同じなので ISC の
> DHCP サーバと同じ挙動をするつもりで設定しています。
> 
> 
> ■質問
> <Q>
> 二つのサブネットに向けて dhcp で IP アドレスを振りたいです。
> どのようにしたらよいでしょうか?
> </Q>
> 
> 
> ■困っていること
> 下記ネットワーク図で dhcp client A には希望通り 172.18.200.1 のような
> アドレス(希望通り)が振られるのですが、 dhcp client B にも 172.18.200.1 の
> ようなアドレス(希望とは違う)が振られてしまって困っています。
> 希望としては dhcp client B には 172.20.100.1 のようなアドレスになって
> 欲しいと設定をしてるつもりです。
> 
> 
> ■現状
> ●ディストリビューションとパッケージバージョン
> Debian GNU/Linux 3.0 Woody
> $ dpkg -l | grep dhcp
> ii  dhcp           2.0pl5-11      DHCP server for automatic IP address assignm
> 
> 
> ●実験ネットワーク構造
> 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
> 
> router1 router2 ともに debian で構築したルータで
> dhcp-relay パッケージにてリレーしておりますので
> dhcp サーバからクライアントは情報をもらっています。
> 
> ● dhcp サーバの設定
> (登録していない MAC アドレスには dns の情報を
>  あげないようにしています)
> shibata@debian:~$ cat /etc/dhcpd.conf
> default-lease-time 60;
> max-lease-time 72;
> option subnet-mask 255.255.0.0;
> option domain-name-servers 127.0.0.1;
> option domain-name "intra.hoge.jp";
> 
> host 1 {
>         hardware ethernet 00:e0:98:77:41:56 ;
>         option domain-name-servers 172.16.241.10 ;
>         }
> shared-network CM {
>         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;
>         }
> }
> 
> ● dhcp サーバのルーティング情報
> shibata@debian:~$ netstat -r
> Kernel IP routing table
> Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
> 172.18.0.0      172.16.240.1    255.255.0.0     UG       40 0          0 eth0
> 172.16.0.0      *               255.255.0.0     U        40 0          0 eth0
> 172.20.0.0      172.16.240.2    255.255.0.0     UG       40 0          0 eth0
> default         172.16.0.2      0.0.0.0         UG       40 0          0 eth0
> 
> 
> ● /var/lib/dhcp/dhcpd.leases の様子
> (途中で NIC を変えてみたりしました。)
> shibata@debian:~$ sudo cat /var/lib/dhcp/dhcpd.leases
> # All times in this file are in UTC (GMT), not your local timezone.   This is
> −略−
> lease 172.18.200.0 {
>         starts 3 2003/09/03 09:47:04;
>         ends 3 2003/09/03 09:48:04;
>         hardware ethernet 00:e0:98:77:41:56;
>         uid 01:00:e0:98:77:41:56;
>         client-hostname "pc-shibata";
> }
> lease 172.18.200.0 {
>         starts 3 2003/09/03 09:47:04;
> −略−
>         uid 01:00:90:fe:56:c5:e0;
>         client-hostname "pc-shibata";
> }
> lease 172.18.200.1 {
>         starts 3 2003/09/03 10:02:48;
>         ends 3 2003/09/03 10:03:48;
>         hardware ethernet 00:90:fe:56:c5:e0;
>         uid 01:00:90:fe:56:c5:e0;
>         client-hostname "pc-shibata";
> }
> lease 172.18.200.1 {
>         starts 3 2003/09/03 10:02:48;
>         ends 3 2003/09/03 10:03:48;
>         hardware ethernet 00:90:fe:56:c5:e0;
>         uid 01:00:90:fe:56:c5:e0;
>         client-hostname "pc-shibata";
> }
> 
> ● /var/log/daemon.log の様子
> 多分正常動作してます
>
> Sep  3 18:57:57 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via eth0
> Sep  3 18:57:57 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via eth0
> Sep  3 18:57:57 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via 172.16.240.1
> Sep  3 18:57:57 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via 172.16.240.1
> Sep  3 18:57:57 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via 172.18.0.1
> Sep  3 18:57:57 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via 172.18.0.1
> 差替え
> Sep  3 18:59:47 debian dhcpd-2.2.x: DHCPDISCOVER from 00:90:fe:56:c5:e0 via 172.20.0.1
> Sep  3 18:59:48 debian dhcpd-2.2.x: DHCPOFFER on 172.18.200.1 to 00:90:fe:56:c5:e0 via 172.20.0.1
> Sep  3 18:59:48 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via 172.20.0.1
> Sep  3 18:59:48 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via 172.20.0.1
>
> 多分正常動作してない 172.20.0.0/16 の中なのに 172.18.200.1 が振られている
> 
> ここで正常動作すると思われるサブネットへと NIC を差替えしました。
> 
> 多分正常動作してます
>
> Sep  3 19:00:18 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via eth0
> Sep  3 19:00:18 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via eth0
> Sep  3 19:00:18 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via 172.16.240.1
> Sep  3 19:00:18 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via 172.16.240.1
> Sep  3 19:00:18 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via 172.18.0.1
> Sep  3 19:00:18 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via 172.18.0.1
> Sep  3 19:00:48 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via eth0
> Sep  3 19:00:48 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via eth0
> Sep  3 19:00:48 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via 172.16.240.1
> Sep  3 19:00:48 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via 172.16.240.1
> Sep  3 19:00:48 debian dhcpd-2.2.x: DHCPREQUEST for 172.18.200.1 from 00:90:fe:56:c5:e0 via 172.18.0.1
> Sep  3 19:00:48 debian dhcpd-2.2.x: DHCPACK on 172.18.200.1 to 00:90:fe:56:c5:e0 via 172.18.0.1
> 
> ■参考情報:ルータ用 Debian マシンの dhcp リレーについて
> ●起動スクリプト
> shibata@fuga:~$ cat /etc/init.d/dhcp-relay
> #!/bin/sh
> #
> # $Id: dhcp-relay.init.d,v 1.1.1.1.2.1 2002/02/11 03:44:26 eparis Exp $
> #
> 
> # Add all interfaces you want dhcpd to handle here
> 
> test -x /usr/sbin/dhcrelay || exit 0
> 
> DHCRELAYPID=/var/run/dhcrelay.pid
> 
> case "$1" in
>         start)
>                 start-stop-daemon --start --quiet --pidfile $DHCRELAYPID \
>                         --exec /usr/sbin/dhcrelay -- -q -i eth0 -i eth1 172.16.241.11
>                 ;;
>         stop)
>                 start-stop-daemon --stop --quiet --pidfile $DHCRELAYPID
>                 ;;
>         restart)
>                 start-stop-daemon --stop --quiet --pidfile $DHCRELAYPID
>                 sleep 2
>                 start-stop-daemon --start --quiet --pidfile $DHCRELAYPID \
>                         --exec /usr/sbin/dhcrelay -- -q -i eth0 172.16.241.11
>                 ;;
>         *)
>                 echo "Usage: /etc/init.d/dhcp-relay {start|stop|restart}"
>                 exit 1
> esac
> 
> exit 0
> 
> ●動作状況
> shibata@proxy001:~$ ps ax
>   PID TTY      STAT   TIME COMMAND
>     1 ?        S      0:03 init [2]
>     2 ?        SW     0:00 [keventd]
> −略−
>   195 tty6     S      0:00 /sbin/getty 38400 tty6
>   537 ?        S      0:00 /usr/sbin/dhcrelay-2.2.x -q -i eth0 -i eth1 172.16.241.11
>   547 ?        S      0:00 /usr/sbin/sshd
>   549 ?        S      0:00 /usr/sbin/sshd
>   550 pts/0    S      0:00 -bash
>   552 pts/0    R      0:00 ps ax
> 
> shibata@fuga:~$ ps ax
>   PID TTY      STAT   TIME COMMAND
>     1 ?        S      0:04 init [2]
>     2 ?        SW     0:00 [keventd]
> −略−
>   204 tty5     S      0:00 /sbin/getty 38400 tty5
>   205 tty6     S      0:00 /sbin/getty 38400 tty6
>   223 ?        S      0:00 /usr/sbin/dhcrelay-2.2.x -q -i eth0 -i eth1 172.16.241.11
>  1515 ?        S      0:00 /usr/sbin/sshd
>  1517 ?        R      0:00 [sshd]
>  1518 pts/0    S      0:00 -bash
>  1522 pts/0    R      0:00 ps ax
> 
> 
> ●参考にした URL
> http://www.matsusaka-u.ac.jp/~okumura/networking/dhcp.html
> http://www.a-yu.com/net/net_dhcp.html
> http://www.linux.or.jp/JM/html/dhcp2/man5/dhcpd.conf.5.html
> http://www.wakhok.ac.jp/netadmin/node290.html
> http://homepage1.nifty.com/Que/plamo/dhcpd/
> 
> 
> 
> -- 
> SHIBATA Akira      ケーブルテレビはまちづくり
> shibata@xxxxxxxxxxxxxx   phone : +81-429-74-3611
> 
> 
>