web-dev-qa-db-ja.com

Windowsの永続的な静的ARPエントリ、それは可能ですか?

私は現在実行しています coLinux ワイヤレスネットワーキングカードまたはドライバーが非ブロードキャストレイヤー2トラフィックを受け入れることができない、または受け入れたくないマシン、またはワイヤレスカードのプライマリMACアドレス。

これが問題であることがわかった後、ホストマシンと同じMACアドレスを持つようにcoLinuxインターフェースを設定してみました。魔法のように、ネットワーキングが機能し始めました。残念ながら、残っている問題は1つだけです。LANの残りの部分は通信できても、ホストマシンはcoLinuxインスタンスと通信できません。

CoLinuxインスタンスのIPアドレスの静的ARPエントリをホストに追加することにより、ワイヤレスカード/ドライバーが一緒にプレイしたくない場合でも、ブリッジモードで完全な接続を実現できることがわかりました。

このセットアップのハッキングにもかかわらず、私はいくつかの理由でそれを維持したいと思います。その主な理由は、IO coLinuxインスタンスのパフォーマンスです。これは私に問題をもたらします:ARPエントリをホストマシン。

私はウェブを検索しましたが、UNIXから/etc/arpに相当するWinNTを見つけることができませんでした。そのようなファイルは存在しますか?レジストリのどこかに疑いがありましたが、悲しいかな、これまでのところ私の検索は無益です。

私の唯一の選択肢は、起動時にバッチファイルを実行してarpコマンドラインツールを使用してARPエントリを再作成することですが、これは皮肉にもハックに思えます。 :)

ありがとう。

4
dmw
netsh interface ipv4 add neighbors "Local Area Connection" 10.1.1.1 12-34-56-78-9a-bc

これにより、再起動後も存続する静的なarpエントリが作成されます。ただし、ホットフィックスがないとエントリを削除できない場合があるため、エントリの追加には注意してください。

https://support.Microsoft.com/en-us/kb/27188

10
goofology

ARPテーブルに静的エントリを追加するには、arp -sコマンドを使用できる必要があります。

arp -s 157.55.85.212 00-aa-00-62-c6-09 ....静的エントリを追加します。

2
Conor

Windowsには永続的なARPエントリの組み込みメカニズムはありません。最善の策は、起動スクリプトを使用して、起動ごとに必要な静的ARPエントリを指定することです。

2
Evan Anderson

netshは、Windowsシステムでのネットワークインターフェイス管理に推奨される方法ではなくなりました。可能であれば、Windows PowershellまたはPowershell Coreを使用する必要があります。最初に、ARPキャッシュエントリを適用するインターフェイスのインターフェイスインデックスを見つける必要があります。

Get-NetIPInterface

インターフェースのリスト、具体的にはifIndexというプロパティを返します。私の場合、プライマリインターフェイスのインデックスは12なので、次のコマンドで使用します。

そのインターフェイスの静的ARPキャッシュエントリを作成するには:

New-NetNeighbor -InterfaceIndex 12 -IPAddress '192.168.0.10' -LinkLayerAddress '0000120000ff' -State Permanent

どちらが戻ります:

ifIndex IPAddress      LinkLayerAddress      State       PolicyStore
------- ---------      ----------------      -----       -----------
12      192.168.0.10   00-00-12-00-00-ff     Permanent   PersistentStore

これにより、再起動後も持続する永続的なARPキャッシュエントリが設定されます。再起動してから、次のコマンドを実行して再確認できます。

Get-NetNeighbor -InterfaceIndex 12 -IPAddress 192.168.0.10

再起動する前に見たのと同じエントリを返すはずです。

Remove-NetNeighbor -IPAddress '192.168.0.10'

これにより、エントリが削除されます。アクティブな場合、アクティブなエントリを削除するか保持するかを選択できます。キャッシュされたエントリを削除するか保持するかを選択できます。これにより、すべてのインターフェイスで「192.168.0.10」のエントリが削除されます。 -InterfaceIndexを使用して、削除するインターフェースを1つだけ選択できます。

1
Dusty Vargas

Windowsにはこれを行うためのコマンドarp -sが存在しますが、Vistaからは機能しないと思います(Win10で管理コマンドプロンプトを使用してテストしただけです)。 arpはエラーを表示しませんが、arp -aの後にエントリは表示されません。
@ goofologyが書いたのはnetshを経由する唯一の方法です。この問題は数年前にかなりの時間を要しました。複数のPCで試してみました。 [Conorsの回答にarp -sの提案でコメントすることはできないため、arp -sを介して他のすべての人が回答しようとする場合の回答としてこれを行います

0
Hannes

NDISドライバーの問題は、OSとネットワークカードの間にレイヤーが追加され、レイヤー2レベルでの作業(特にワイヤレスカードの場合)が困難になることです。 coLinuxのWebサイト( http://colinux.wikia.com/wiki/Network#Recommended_Setup )を見ると、2つの仮想インターフェイスを使用することをお勧めします。1つはLANと通信するためのcoLinux用、もう1つはホストと通信します。この構成を検討しましたか?

0
einstiien