12

Linuxを搭載した組み込みデバイスで作業しています。最初は DHCP クライアントを使用したいが、DHCP サーバーからの応答がない場合は、静的なデフォルト IP を設定したい。複雑ではないと思いますが、厳密な答えは見つかりませんでした。

私は2つの解決策について考えています(残念ながら、数日でテストできます):

  1. ifconfig で静的 IP を設定してから、udhcpc を呼び出します。udhcpc が新しい IP を取得しない場合は、古い IP が残ります。

  2. また、最初に udhcpc を呼び出し、しばらく待って IP が取得されているかどうかを確認することもできます。しかし、これは私にとっては良くありません。スタートアップに待機ルーチンを追加したくありません。

BR バーテック

私はudhcpcを使用しています-次のようなものです:

udhcpc -n -f -i eth0 
if ifconfig | grep -A1 eth0 | grep inet 
    then 
4

2 に答える 2

25

dhclient はリース宣言によるフォールバックをサポートする必要があります。mandhclient.confページを参照してください。

このようなものをあなたに追加してくださいdhclient.conf

timeout 10;
lease {
interface "eth0";
fixed-address 10.0.0.10;
option subnet-mask 255.255.255.0;
renew 2 2022/1/1 00:00:01;
rebind 2 2022/1/1 00:00:01;
expire 2 2022/1/1 0:00:01;
}

または、次のようにインターフェイスに2番目のIPを割り当てることができます/etc/network/interfaces

auto lo
iface lo inet loopback
iface eth0 inet dhcp

auto eth0:1
iface eth0:1 inet static
address 10.10.10.2
netmask 255.255.255.0
于 2012-10-04T13:28:22.000 に答える
0

古い質問ですが、Gentoo Linux には長い間この機能があったことに注意してください (私は 2004 年から使用しています)。Gentoo のネットワーク構成ファイル (/etc/conf.d/net) を使用すると、DHCP が失敗した場合に任意のインターフェイスにフォールバック IP アドレスを簡単に指定できます。たとえば、次のようになります。

modules="dhclient"
config_eth0="dhcp"
config_eth1="dhcp"
dhclient_eth1="nogateway"
fallback_eth0="apipa"
fallback_eth1="192.168.10.10/24"
fallback_routes_eth1="default via 192.168.10.1"

eth0:0 のようなエイリアスを使用するために Maurizio が提供した解決策は、多くの (おそらくほとんどの) 状況では問題ありませんが、すべてではありません。同じポートであっても、DHCP からの応答がないために定義されていない場合、eth0:0 が eth0 の適切な代替であると見なさないソフトウェアに遭遇しました。したがって、静的フォールバック アドレスは、エイリアス ソリューションよりもわずかに優れています。

于 2020-01-26T03:29:18.660 に答える