どうやらisc-dhcp-serverが起動シーケンスの早い段階で起動されたようで、それは何の関係もないと述べています。 rootとして直接ログインし、init.d-scriptを使用して起動するだけで、正常に起動します。
私のセットアップは基本的に完全に標準的なルーターで、inet側にeth0があり、lan側にeth1があります。ただし、lan側にはeth1の代わりにブリッジを定義しました。したがって、ネットワークのLAN部分は、ブリッジが起動するまで起動しません。
私は現在、ブリッジが起動される前にdhcpサーバーが起動されると考えています。おそらく、ブリッジは「ネットワーク」タスクで起動され、ethは「ネットワークインターフェース」タスクで起動されます-以前に実行されます。 (また、橋はethに比べて立ち上がるのに少し時間がかかります)。
LAN側にeth1を直接使用する代わりに、ブリッジ構成を削除すると、問題は解決します。 (ただし、syslogで判断すると、物事はまだきつい。)
DHCPを後で開始する方法のアイデアは?
(ブリッジの理由は、ブリッジネットワークでKVMを使用できるようにするためです。)
ネットワークインターフェースは、networking
タスクがupstartシーケンスで実行された後にのみ起動します。/etc/init/networking.conf
のタスクの設定で、それが実行するのはifup -a
だけであることがわかります。 /etc/rc?.d
フォルダーからisc-dhcp-serverシンボリックリンクを削除し、upstartの新しいタスクを追加することにより、スタートアップシーケンスを修正しました。あなたがしなければならない唯一のことは、設定ファイル/etc/init/dhcp_start.conf
を追加して、次のようなものにそれを編集することです:
停止したネットワークで開始
exec /etc/init.d/isc-dhcp-server start
これは厄介なハックですが、動作します。ネットワークのように、別のイベントでdhcpdを静かにシャットダウンする別のタスクを追加することもできます。
停止したブリッジネットワークインターフェイスbr0で開始
exec /etc/init.d/isc-dhcp-server stop
ネットワーキングを停止する代わりに、ネットワーキングを開始したときにdhcpを起動するように言う人がいることを他のどこかで見つけました。インターフェイスはifup -a
コマンドが終了した後にのみ構成され、実際に実行されたときではないため、本質的に間違っています。 dhcpと並行してifupを実行するのは非常に高速だったため、偶然にしか機能しませんでした。
私はまったく同じ問題を抱えていました。
/etc/init.d/isc-dhcp-server
を編集し、上部にsleep 10
を追加して修正しました。sleep 5
を試しましたが、十分ではありませんでした。
うまくいけばそれもあなたのために働くでしょう。
/etc/default/isc-dhcp-server
に正しいインターフェイスを配置します。私の場合:
INTERFACES="br0 eth2"
上記のどれも私にとってはうまくいきませんでしたが、rc.localスクリプトにこれらの行を追加することでようやく動作しました
sleep 10
/etc/init.d/isc-dhcp-server start
スリープ10がなければ、これは効果がありませんでした。また、デフォルトルートを維持するのにも問題がありました。
route add default gw 192.168.1.1 eth1
(私はeth0を持っていません、理由を理解したことがありません)
これを試して、それは私のために働いた:
rm /etc/init/isc-dhcp-server.override
ファイル内に手動と表示されているため、ファイルを削除しました。