インターネット共有時のDHCPをストップしたい

インターネット共有をオンにすると、自動的にDHCPサーバが立ち上がります。これを立ち上がらないようにしたいのです。
当方のイントラネットのゲートウェイとしてこのPantherマシンがあります。これとは別途にDHCPサーバがあります。ほかのクライアントマシンはDHCPサーバから提供されたアドレスで、Pantherマシンから外部に接続となります。
基本的に動作しているのですが、クライアントがネットにつながると、Pantherマシンが、「ほかにDHCPサーバがある」といって「インターネット共有」がストップしてしまうのです(/var/log/system.log)。で、原因はDHCPサーバがPantherマシン上で動作しているためだと判断して、Netinfo Managerで/config/dhcp を消したり、書き換えたりしてもいつの間にか元通りになってしまいます。xinetd関係かなと思って、/etc/xinetd.d/bootps をのぞいてみたのですが私にはわかりませんでした。
どなたか、DHCPを止めるすべをご存知の方いらっしゃいませんか。

投稿日 2004/12/26 07:57

返信: 8

2004/12/26 13:15 Community User への返信

インターネット共有そのものは、/usr/libexec/InternetSharing を立ち上げることで実現しているようですが、DHCP サービスは /usr/libexec/bootpd が NetInfo の設定(config/dhcp/subnets)にしたがって行なうようです。nat そのものは、/usr/sbin/natd、DNS は /usr/sbin/named をキャッシングネームサーバで立ち上げているようです。
なので、InternetSharing が立ち上がる時に、bootpd が立ち上がらないようにすればいいと思うのですが、その設定がどこにあるのかちょっとわかりません。で、簡単なのは、(ちょっと面倒ですが)、毎回、InternetSharing を立ち上げたあと、bootpd を kill してしまえばいいのかな、と思うのですが、どうでしょう。
そんなことわかってるよ、ということでしたらごめん。

2004/12/26 13:52 Community User への返信

man bootpd によりますと、NetInfo の config/dhcp の service-control properties (こういうのを作るということ?)で、
"dhcp_enabled" = ( "" );
とすると、dhcp サービスは止まるということです。
試されてはいかがでしょうか。

2004/12/26 16:25 Community User への返信

はにさん、わざわざ調べていただいてありがとうございます。
ご指摘の件、NetInfo Managerで見ると、
/config/dhcp/dhcp_enabled
という項があって、そこは私の環境では、en0と表示され、つまり内蔵Ethernetが指定されています。そこを、
""
や、
("")
で指定してみたりしたのですが、いつの間にか、もとのen0に戻ってしまうのです。
ですので、どこかほかで指定しているのではと思った次第です。可能性としてはxinetdが思いついたので、/etc/xinietd.d/bootpsを疑ったという訳です。
引き続き助言をお願いいたします。

2004/12/26 17:35 Community User への返信

("") ではなくて、"" の前後にスペースを入れてみてはどうですか(man にはそう書いてますので)。
/etc/xinetd.d/bootps は disable = yes となってますし、関係ないと思います。
どうしても書き変わってしまうようなら、InternetSharing のバイナリーに埋め込まれているのでしょうか、、、

2004/12/26 19:00 Community User への返信

そうなんですよ。/etc/xinitd.d/bootpsの設定はdisableとなってるんですよね。
どこかにDHCPだけ設定があるのかな。
それで、( "" )、( " " ), spaceだけとかいろいろやりましたが、結局インターネット共有が始まるともとに戻ってしまいました。
いやあ、本当にゾンビのようです。

2004/12/26 19:52 Community User への返信

それなら、InternetSharing が立ち上がってから、bootpd を殺してしまうのはどうですか。
InternetSharing の名前を、例えば、InternetSharing.org と変えてしまって、次のようなスクリプトを作り、これの名前を InternetSharing とします。
***** ここから
#!/bin/sh
/usr/libexec/InternetSharing.org
sleep 20
kill `cat /var/run/bootpd.pid`
***** ここまで
このスクリプトを /usr/libexec/InternetSharing とし、
sudo chown root:wheel /usr/libexec/InternetSharing
sudo chmod 755 /usr/libexec/InternetSharing
としておきます。
こうしておくと、インターネット共有が始まると、本来の InternetSharing が立ち上がる代わりに、上記スクリプトを実行し、その中で、元の InternetSharing.org を実行します。しかし、20秒後に立ち上がっている bootpd を kill してしまいますので、DHCP サービスは動きません。
こんな方法はどうでしょう。

2004/12/27 09:54 Community User への返信

> こんな方法はどうでしょう。
自分でいっておいてなんですが、駄目っぽいですね。
よく調べてから書き込めよ <= 自分
bootpd を kill した時点で、InternetSharing も子プロセス bootpd が止まってしまった、というようなメッセージを出して、止まってしまいます。
インターネット共有を使う時は、OSX が提供するものすべてをそのまま受け入れられる時でないと駄目っぽいですね。これが仕様ということなら、自分でカスタマイズしたいときは、ブロードバンドルータでももってきてやれ、ということかもしれません。

2004/12/27 19:26 Community User への返信

はにさん、いろいろありがとうございました。
仕事から帰ったらやってみようかと思っていたら早速ご自身でやっていただいてしまったようで、恐縮です。
BSDとはいうものの、だいぶアップルの皮をかぶっているので細かいところになるとどうなっているのかわかりません。引き続き調べてみようと思います。
#アップルの環境に移るとMACアドレス制限の登録やらなんやら手作業でやらなければならないのが嫌なんです。それであたふたしている次第です。

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

インターネット共有時のDHCPをストップしたい

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。