私は10Gイーサネット経由で別のマシンにUDP経由で通信する私のLinuxホスト上のアプリケーションを持っています。相手側のマシンはARP要求に応答しません。私は、プログラムのw /アウト特権的地位のARPテーブルにこの情報を取得する方法はありソケットに宛先MACアドレスを提供する方法
に、それはMACは、他の手段(異なるインタフェースを介して対処します取得することができるのですか?
私は上の私ができる知っています
私は「1.2.3.4 AA:BB:CC:DD」を追加できることを知っています。「sudo arp -s 1.2.3.4 AA:BB:CC:DD:EE:FF」 :EE:など/エーテル
にFF」私は特権のUSR /プロセスとして、私はSIOCSARPへのioctlを発行することができることを知って
。 0これらのメカニズムはすべてsudo/rootアクセスが必要です。私は、アプリケーションに "CAP_NET_ADMIN"権限を与えることについて何かを読んだ。
私はこの機能を探しているため、エンドユーザーは上記のいずれかを行う必要はありません。もし私がsudo/rootを使っていれば、このネットワーク情報の必要性を判断するソケットを開くことができます。sudo/rootを使って私に提供する方法があります。
ええ、機能的なARPとICMPはいいですが、私は相手側のマシンを制御できません。それは第三者によって提供されています。私の質問では、私はより多くのことを考えていました。MAC情報を入力するパケットはありますか?それを知るためには、手動でMACをパケットにする唯一の方法はrootである必要がありますRAWソケット付き。 – Jotorious