Tutoriel Linux

LinuxにおけるIPネイバー:ARPを使用せずにネットワークネイバーを見つける

Débutant2 min de lecture
À retenirLinux n'est pas réservé aux experts. Le bon point de départ : une distribution accessible, une sauvegarde propre et quelques commandes comprises.

ネットワーク上のマシンが断続的に応答する、ゲートウェイが誤ったMACアドレスに関連付けられたままになる、またはエントリが表示される 失敗したインターフェースを再起動する前に、カーネルが管理する近隣テーブルを確認してください。

古いコントロールを有利に置き換える arp -a そして arp -nこれは、ARPで学習したIPv4ネイバーとNDPで検出されたIPv6ネイバーを対象としています。最も重要な点は、キャッシュ全体をクリアすることなく、それらの状態を読み取り、単一のエントリを削除し、再構築を確認できることです。

Tuxは、アクティブなリンク、古いリンク、およびアクセス不能なリンクを持つローカルネットワークの近隣ノードを検査します。
ip neigh コマンドは、カーネルが認識している IPv4 および IPv6 ネイバーとその解決状態を表示します。

隣人と連絡を取るために使用するインターフェースを見つける

eth0 習慣的に、インターフェースを表示してから、カーネルに要求されたアドレスに到達するためにどの経路を使用するかを問い合わせます。

IPアドレスの簡単なリンク
IPアドレスの簡単な説明
ip route get 192.168.1.50

のリリース IPルートの取得 特に、次のインターフェースを示します 開発者 そしてその後の現地住所 送信元宛先にゲートウェイが含まれる場合、レベル 2 ネイバーは最終アドレスではなく、そのゲートウェイになります。ガイド Linux での IP ルーティング

キャッシュのせいにする前に、リンクの状態も確認してください。

ip link show dev enp1s0
ip addr show dev enp1s0

インターフェース またはキャリアがない場合、近隣のデバイスを見つけることができません。 IPアドレスとネットワークの状態 区別するのに役立ちます 下降 そして、本当に使える住所。

ip neigh コマンドで IPv4 および IPv6 ネイバーの一覧を表示します。

まず表全体を表示し、次に表示を関連するインターフェースに限定します。

IPネイバーショー
ip neigh show dev enp1s0

2種類の住所を区別するには:

IP -4 Neigh show dev enp1s0
IP -6 Neigh show dev enp1s0

IPv4の回線は次のようになります。

192.168.1.50 dev enp1s0 lladdr 52:54:00:12:34:56 STALE

後のアドレス ラドル これは、このネイバーが認識しているMACアドレスです。最終状態は、解決が成功したか失敗したかを示します。テーブル全体をスキャンせずに単一のアドレスを対象とするには:


ip neigh get 192.168.1.50 dev enp1s0

REACHABLE、STALE、INCOMPLETE、FAILEDを理解する

州は、有効なエントリの削除を禁止する。

  • 到達可能 隣人は最近確認された。
  • 入口は知られていますが、最近アクセス可能かどうかは確認されていません。これは間違いではありません。
  • 遅れ または プローブ : カーネルは、ネイバーがまだ応答しているかどうかを積極的にチェックします。
  • 不完全 解決処理中ですが、使用可能なMACアドレスはまだ取得されていません。
  • 失敗した 解決しようとする試みは失敗に終わった。
  • 永続 : このエントリは静的に追加されたものであり、動的なエントリのように期限切れになることはありません。

特定の州で絞り込むことができます。

ip neigh show dev enp1s0 nud reachable
ip neigh show dev enp1s0 nud stale

エントリー 古くなった またなれる 到達可能 失敗した エラーコードが繰り返し発生する場合は、インターフェースの不具合、ホストの欠落、VLANの誤り、Wi-Fiの問題、重複したアドレス、または物理リンクの障害が原因である可能性が高いです。

議論を開始し、解決策を見守る

アドレスに対して単純なトラフィックを生成し、その後すぐにエントリを再読み込みします。

ping -c 3 192.168.1.50

テスト中の変更を追跡するには:

watch -n 1 'ip neigh show dev enp1s0'

入口が残ってれば 不完全 またはに行きます 正しいインターフェース上でARPとNDPのやり取りを観察してください。

sudo tcpdump -ni enp1s0 'arp または icmp6'

ARPリクエストに応答がない場合、問題はIPアドレスより前の段階にあることを示しています。デバイスがオフライン、スイッチポートが間違っている、VLANが間違っている、ケーブルに問題がある、Wi-Fiに問題がある、またはアドレスが存在しない可能性があります。リクエストが送信されない場合は、インターフェースのルーティングを変更して再接続してください。詳細については、ガイドを参照してください。 Linux 上での tcpdump すべてのトラフィックを記録せずにキャプチャを制限する方法を示します。

イーサネットでは、速度、デュプレックス、キャリアも制御できます。 エスツール隣接するエントリを削除しても、接続がうまくいかない、または切断されているリンクは修復されません。

MACアドレスが明らかに古いか間違っている場合は、対象のエントリのみを削除してください。リモートサーバーでは、特にゲートウェイとして機能する隣接サーバーとやり取りする場合は、2つ目のSSHセッションとバックアップコンソールを維持してください。

sudo ip neigh del 192.168.1.50 dev enp1s0
ping -c 3 192.168.1.50
ip neigh show to 192.168.1.50 dev enp1s0

リンクローカルIPv6アドレスの場合、インターフェースは不可欠です。

sudo ip -6 neigh del fe80::5054:ff:fe12:3456 dev enp1s0
ping -6 -c 3 fe80::5054:ff:fe12:3456%enp1s0
IP -6 Neigh show dev enp1s0

カーネルは次回の通信時にエントリを再作成する必要があります。MACアドレスと状態を比較します。誤ったアドレスが返された場合は、重複したIPアドレス、静的構成、クローンされた仮想マシン、または想定されるネイバーではなく応答しているデバイスを探します。これを繰り返します。 ip neigh del この原因は解消されない。

境界が完全に制御下に入った場合にのみ、キャッシュをクリアしてください。

まず、削除する項目を表示します。インターフェース上で既にエラーが発生したエントリのみをクリーンアップするには:

ip neigh show dev enp1s0 nud が失敗しました
sudo ip neigh flush dev enp1s0 nud が失敗しました

以下のコマンドは、より広範囲に及びます。

sudo ip neigh flush dev enp1s0

このコマンドは複数のネイバーの再検出を強制するため、アクティブな接続が一時的に中断される可能性があります。SSHセッションをホストしているインターフェースで自動的に実行しないでください。対象を絞った削除の方が制御しやすく、診断情報もより詳細に得られます。

そこには ip-neighbour(8) のマニュアルページ 文書操作 得るデル そして フラッシュ

sudo apt update && sudo apt upgrade