- PR -

2台のDHCPサーバを利用するには?

1
投稿者投稿内容
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2004-08-02 19:13
はじめまして、こちらの会議室でははじめての投稿になります。
いのつちといいます。宜しくお願いいたします。

2台のDHCPサーバを利用する方法を教えてください。
現在、DHCPサーバが2台あり,それぞれ別ネットワークの割当をおこなおうとしています。

便宜上それぞれのサーバをdhcp1 dhcp2 とします。
dhcp1 eth0=192.168.0.1 ネットワーク192.168.0.0/24 割当は、192.168.0.20-120
dhcp2 eth0=192.168.0.2 eth1=192.168.30.254 でeth1側のネットワークは、192.168.30.0/24
割当は、192.168.30.20-240 としています。

dhcp1 は、インターネットとつながるデフォルトゲートウェイです。
(dhcp1には eth1があり、そちらはグローバルIPが割当られています。)

dhcp2 は、192.168.0.0/24 と192.168.30.0/24 のネットワークをつなぐルータとして機能しています。

問題は、192.168.0.0/24 のネットワーク上のクライアントが、dhcp2 に反応してしまい、
192.168.30.X が割り当てられてしまうことにあります。

192.168.30.0/24上のクライアントは、問題なく、192.168.30.Xとして割り当てられているのですが・・・。

一応、dhcp2サーバのeth1(192.168.30.254)からのみ受付けるようにしているのですが、
192.168.0.0/24上のクライアントが、255.255.255.255 で送信した場合も、eth1で受け取られているので、
これを受けないようにすれば、解決できそうなのですが・・。
ルーティングの設定の問題でしょうか・・。それとも、iptablesなどで何らか拒否すればよいのでしょうか。

ログなどを見ていると、192.168.0.0/24上のクライアントが、問い合わせすると、両方のdhcpサーバが
反応しています。(それぞれ、192.168.0.X 192.168.30.X )と別々のものを与えようとしています。
で、クライアント側は受付けられないときもあれば、どちらかで対応できている場合もあるようです。


環境ですが、
dhcp1 : LASER5 Secure Server 6.9 Kernel 2.2.19-6.2.7.LS2 on an i686
dhcp2 : VINE LINUX 2.6 Kernel 2.4.22-0vl2.14 on an i586

でdhcpd を利用しています。

コード:
---------- dhcp2 サーバの dhcpd.conf の設定 抜粋-------
subnet 192.168.30.0 netmask 255.255.255.0 {
        option routers                  192.168.30.254;
        option subnet-mask              255.255.255.0;

        option nis-domain               "ofc.xxx.jp";
        option domain-name              "ofc.xxx.jp";

        option domain-name-servers      XXX.XXX.XXX.XXX;
        option time-offset              -5;     # Eastern Standard Time
        range dynamic-bootp 192.168.30.20 192.168.30.240;
        default-lease-time 21600;
        max-lease-time 43200;
}
--------- dhcp2サーバの /etc/sysconfig/dhcpd 
DHCPDARGS=eth1


-------- dhcp2 サーバのルーティング
カーネルIP経路テーブル
受信先サイト    ゲートウェイ    ネットマスク   フラグ Metric Ref 使用数 インター
フェース
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.30.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         192.168.0.1     0.0.0.0         UG    1      0        0 eth0
-----------------------------------------------

---------dhcp1 サーバのルーティング
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
211.1X.X.X   0.0.0.0         255.255.255.255 UH    0      0        0 eth1
192.168.0.1     0.0.0.0         255.255.255.255 UH    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.30.0    192.168.0.2     255.255.255.0   UG    0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         211.1X.X.X   0.0.0.0         UG    0      0        0 eth1

---------------- dhcp1 サーバの dhcpd.conf (抜粋)

dynamic-bootp-lease-length 259200;
max-lease-time 86400;
option domain-name "ofc.xxx.co.jp";
option domain-name-servers xxx.xxx.xxx.xxx;
option netbios-node-type        8;

shared-network LOCAL{
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
range 192.168.0.20 192.168.0.120;
}
}
--------- dhcp1サーバの /etc/sysconfig/dhcpd 
DHCPDARGS=eth0



宜しくお願い申し上げます。

kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-08-03 00:51
こんばんわ.

疲労困憊なのでひとつだけ気が付いたことを.
dhcp2 で
# /sbin/route add -host 255.255.255.255 dev eth1
したら如何でしょう?
host に 複数の interface がある場合の dhcpd に対するおまじないです.
水無月 遊々
大ベテラン
会議室デビュー日: 2003/10/22
投稿数: 139
お住まい・勤務地: お星様☆彡
投稿日時: 2004-08-03 11:21
こんにちは。

引用:

いのつちさんの書き込み (2004-08-02 19:13) より:
dhcp2 は、192.168.0.0/24 と192.168.30.0/24 のネットワークをつなぐルータとして機能しています。


まず、ネットワークの場合はなるべく簡単な図をつけましょう^^; たくさんの文章より効果的なことが多いです。…で、以下の図で問題ないでしょうか? だとすれば、次のような設定はいかがでしょう?

コード:
 ┃
 ┃(eth1 inet)
dhcp1                         ━┓
 ┃(eth0 192.168.0.1)          ┃
 ┃                            ┃
 ┃                            ┃
client(IP要求→192.168.30.x)    ┃net = 192.168.0.0
 ┃                            ┃
 ┃                            ┃
 ┃(eth0 192.168.0.2)          ┃
dhcp2  #Router                ━┫
 ┃(eth1 192.168.30.254)       ┃
 ┃                            ┃net = 192.168.30.0
 ┃                            ┃
 ┃                          ━┛
client



設定:

 対象サーバ:dhcp2
 対象インタフェース:eth0
 設定内容:「iptables」の「input」項目にて「ポート67-68」、「アドレス255.255.255.255」をフィルタする。

※「forward」もフィルタした方がよいかも知れません


# 注意書きを追加
## 編集したら、レイアウトが崩れるんですが…なんで?^^;
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2004-08-03 12:00
kaz様 水無月 遊々様
長文にも関わらず、ご回答いただきありがとうございます。
すみません、うまくテキストで図が描けませんでした・・。
図示いただきありがとうございます。

アドバイスを元に、次の追加を行いましたが、やはり、192.168.0.0/24の
ネットワーク上のクライアントが、dhcp2のeth1 で反応してしまい
両方からのdhcpサーバからの回答でクライアントが混乱してしまっています・。
引き続き何かご指導いただけましたら幸いです。

dhcp2サーバへの設定追加
コード:
 
route add -host 255.255.255.255 dev eth1
iptables -A INPUT -i eth0 -d 255.255.255.255 -p udp --dport 67:68 -j DROP
iptables -A FORWARD -i eth0 -d 255.255.255.255 -p udp --dport 67:68 -j DROP



iptables で 192.168.0.0/24 側から eth1 のIP宛の場合は、
通過するチェインはどうなるのでしょうか。 INPUT だけでしょうか。
それとも FORWARDとINPUT でしょうか。
コード:
 
 192.168.0.0/24 
        |
  eth0 192.168.0.2 
  ================
  eth1 192.168.30.254
        |
  192.168.30.0/24


kaz
ぬし
会議室デビュー日: 2003/11/06
投稿数: 5403
投稿日時: 2004-08-03 12:28
こんにちわ.
引用:

いのつちさんの書き込み (2004-08-03 12:00) より:

dhcp2サーバへの設定追加
コード:
 
route add -host 255.255.255.255 dev eth1
iptables -A INPUT -i eth0 -d 255.255.255.255 -p udp --dport 67:68 -j DROP
iptables -A FORWARD -i eth0 -d 255.255.255.255 -p udp --dport 67:68 -j DROP




# /sbin/iptables -A INPUT -i eth0 -p udp --dport 67:68 -j DROP
で良いのではないかと思われます.
でも,手元では interface 3つでそのような事は起きいない...
引用:

iptables で 192.168.0.0/24 側から eth1 のIP宛の場合は、
通過するチェインはどうなるのでしょうか。 INPUT だけでしょうか。
それとも FORWARDとINPUT でしょうか。


どっちもじゃないかと.
水無月 遊々
大ベテラン
会議室デビュー日: 2003/10/22
投稿数: 139
お住まい・勤務地: お星様☆彡
投稿日時: 2004-08-03 16:19
こんにちは。

引用:

いのつちさんの書き込み (2004-08-03 12:00) より:
すみません、うまくテキストで図が描けませんでした・・。



 テキストの図は手で書くと大変ですので、なにかツールを見つけられるとよいかも知れませんね。私の場合は、秀丸の罫線マクロをカーソルキーに登録して利用しています。こういう場面では結構利用することが多いと思います。(表現がきつかったなら申し訳ありませんでした…)


引用:

アドバイスを元に、次の追加を行いましたが、やはり、192.168.0.0/24の
ネットワーク上のクライアントが、dhcp2のeth1 で反応してしまい
両方からのdhcpサーバからの回答でクライアントが混乱してしまっています・。
引き続き何かご指導いただけましたら幸いです。



 うーん、なんででしょうね。とりあえず、kaz様のご意見を取り入れまして、以下のように書いてみてください。すると、syslogにドロップしたパケットが記録されるはずですので、iptablesにてきちんとパケットがドロップされていることを確認しましょう。

 syslogに残っていない場合は、パケットが通過していると思われます。

↓iptables
iptables -A INPUT -i eth0 -d 0/0 -p udp --dport 67:68 -j LOG
iptables -A INPUT -i eth0 -d 0/0 -p udp --dport 67:68 -j DROP
iptables -A FORWARD -i eth0 -d 0/0 -p udp --dport 67:68 -j LOG
iptables -A FORWARD -i eth0 -d 0/0 -p udp --dport 67:68 -j DROP

 パケットが、きちんとドロップできているなら、どこかのHUBが2つのセグメントを繋いでいないですかね? 「192.168.0.0/24」と「192.168.30.0/24」のセグメントが混在しているような気がします…。

引用:

iptables で 192.168.0.0/24 側から eth1 のIP宛の場合は、
通過するチェインはどうなるのでしょうか。 INPUT だけでしょうか。
それとも FORWARDとINPUT でしょうか。



 私も、両方関係したと思います。
水無月 遊々
大ベテラン
会議室デビュー日: 2003/10/22
投稿数: 139
お住まい・勤務地: お星様☆彡
投稿日時: 2004-08-03 16:49
すいません、追記です。
eth0のPort 67-68をOUTPUTチェインで塞いでしまうのもよいかも知れませんね。これで、他のセグメントを割り当てている場合は、同一セグメントが混在している可能性があるかと。
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2004-08-03 18:51
kaz 様 水無月 遊々様 ご回答いただきありがとうございました。

引用:

パケットが、きちんとドロップできているなら、どこかのHUBが2つのセグメントを繋いでいないですかね? 「192.168.0.0/24」と「192.168.30.0/24」のセグメントが混在しているような気がします…。


答えはこれでした。。お恥ずかしい限りです。ネットワークを今回分離したのですが、
1本だけ別ネットワークのケーブルがHUBにささっていたのが原因でした。

いくら塞いでいても、回り道されていたら意味がありませんね。

最終的には、設定は次のとおりで問題なく対処できました。
route add -host 255.255.255.255 dev eth1
iptables -A INPUT -i eth0 -p udp --dport 67:68 -j DROP
iptables -A FORWARD -i eth0 -p udp --dport 67:68 -j DROP
iptables -A OUTPUT -o eth0 -p udp --dport 67:68 -j DROP
# 設定が1になっていたので、0にしました。
echo 0 > /proc/sys/net/conf/all/accept_redirects

本当にありがとうございました。今後とも宜しくお願い申し上げます。
1

スキルアップ/キャリアアップ(JOB@IT)