ifconfigが別のIPアドレスを表示する理由

ifconfigが別のIPアドレスを表示する理由

イーサネットケーブルを介してローカルネットワークに接続された組み込みLinuxデバイスがあります。サブネットのローカルIPアドレスを介して各デバイスにアクセスします。192.168.34.0/24.たとえば、1つのデバイスに192.168.34.240

ifconfigデバイス内部の端末で実行すると、次のように169で始まる別のIPアドレスが表示されます。混乱しています。なぜこれですか?

eth0      Link encap:Ethernet  HWaddr 00:D0:91:4B:45:C9
          inet addr:169.254.253.217  Bcast:169.254.255.255  Mask:255.255.0.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:634513 errors:0 dropped:3 overruns:0 frame:0
          TX packets:1318475 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:78343668 (74.7 MiB)  TX bytes:399586128 (381.0 MiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:24085508 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24085508 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:11614050334 (10.8 GiB)  TX bytes:11614050334 (10.8 GiB)

ベストアンサー1

これは、20年以上にわたってioctlベースで使用されてきたLinuxでifconfig古いカーネルAPI(ioctlベース)を使用していたためです。ネットリンクソケットメッセージ。以前のAPIのその他の制限は次のとおりです。

  • のみ処理できる一つIPv4アドレス(複数のIPv6アドレスを処理できます)このアドレスを削除することさえパッチワークで行われます。アドレスを0.0.0.0に設定します。
  • アドレスのネットワークマスクは設定時に提供されません。したがって、アドレスを割り当てるには通常、2つのシステムコールが必要です。 1つはアドレス(ホスト部分)への呼び出し、もう1つはそのネットマスクを変更する呼び出しです。
  • 複数のIPv4アドレス処理もパッチワークを介して行われます。つまり、いわゆるエイリアスインターフェイス(実際には別のインターフェイスではなくアドレスのラベルで実装されています)のみが実行され、ifconfig他の部分(ルーティング、ファイアウォールなど)は実行されません。
  • OPに示すように、タグなし(したがって最新のAPI設定を使用する)他のIPアドレスはまったくブロックされませんifconfig

明らかに、アドレスラベルがない場合(名前が正しく指定された場合はエイリアスインターフェイスとして表示されます)、ifconfigネットワークは最新のnetlinkベースのAPIを使用して設定されます。したがって、最新のツールを使用してifconfig完全に削除することで、内蔵スペースを節約できます。

ip address

IPv4アドレスが複数ある場合は、複数のIPv4アドレスを含むすべてのインターフェイスに割り当てられているすべてのアドレスが表示されます。

最新のAPIを使用して再実装できますがifconfig(少なくともUL SEの一般ユーザーはそうです)、このコマンドは(ゆっくりと)交換するのではなく、アップグレード(他の* NIXとの互換性のため)が必要になるようです。ほとんどのLinux開発者やディストリビューションマネージャは、最新のツールには興味がありません。

したがって、Linuxでは次のことを考慮する必要があります。ip linkそしてip address変えるifconfig。同様にip route交換するにはroutebridge(除くip linkbrctl他のサブコマンドの交換ipさまざまなその他のコマンドを置き換えます(VLAN、トンネル、結合インターフェイス...)。

それでは、住所がいくつかある理由について話しましょう。考えられる理由は、デバイスがあふれ/ゼロ構成(AppleのBonjour実装と同じ)LAN経由で通信し、機能を通知します。また、標準通信(インターネットを含む)用にDHCPとして設定することもできます。 Zeroconfを有効にする(ルーティングできません)IPv4LLアドレスは、DHCPを使用して取得する一般的なアドレスとは別のものです。

おすすめ記事