問題タブ [link-local]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - IPv6 リンク ローカル マルチキャスト
IPV6 を使用して IPV4 ブロードキャストに相当する方法を見つけようとしています。
ノンブロッキング IPV6 UDP ソケットを作成しています。
ブロードキャスト側から、私は文字通り、ポート 12346 で "FF02::1" に sendto を実行しています。
リッスン側では、グループに参加する必要があることを発見したので、次のことを行いました。
ただし、setsockopt は常に「WSAENOPROTOOPT」を返します。なんで?誰でもこれで私を助けることができますか?私は完全に途方に暮れています。
編集: レベルを「IPPROTO_IPV6」に変更しましたが、「WSAEINVAL」が表示されます。
python - Python でリンクローカル IPv6 TCP ソケットを接続するために %en0 サフィックスが機能しないのはなぜですか?
1 週間ほど前、StackOverflow の誰かが、IPv6 リンクローカル アドレスに接続するための Python コードが機能しない理由を尋ねました。 desired local-interface-name is) ターゲット IP アドレスのサフィックス。私は自分が話していることを知っていると思っていたので、答える前に自分の提案を実際にテストしませんでした (恥ずかしい!)。
今日、私は同じテクニックを自分自身で使用しようとしましたが、うまくいかないようです. :^( つまり、このコードは機能しません:
一方、次のコードは機能します (%en0 サフィックスの有無にかかわらず)。
...しかし、最後の引数に指定するスコープID整数を把握するために、あまり移植性のないコードを実行してローカルインターフェイスを反復処理する必要があるため、そのようにするのは好きではありませんリストを作成し、「en0」という名前のインターフェイスを見つけて、そのスコープ ID を抽出します。これは、必要以上に複雑なオーバーヘッドになります。
connect() が IP アドレスへの %en0 サフィックスを受け入れているとすれば、スコープ ID を決定するために実際にそれを期待どおりに使用しないのはなぜですか?
FWIW、私は MacOS/X 10.6.4 の下で Python 2.6.1 でテストしています。
c - IPv6:connect()は常にerrno22で失敗します
OSはUbuntuです。基本的なIPv6操作の簡単なテストを行っています。PCはハブを介してIPカメラ(IPv6をサポート)に接続されています。ping6テストは成功しています。
コードは以下のとおりです。
結果は常に「接続障害、errno = 22」です。問題はどこにありますか?
c# - .NET C# でのリンクローカル IP アドレスの取得と割り当て、APIPA の実装
RFC3927 で定義されている IPv4LL の実装である機能を .NET c# で作成する必要があります。これは、DHCP サーバーなしでリンクローカル IP アドレスを割り当てるためのテクノロジです。APIPA という名前で Windows でも同じ機能が利用可能です。Linux には、そのようなプラグイン :avahi 、avahi-autoipd があります。しかし、Windowsではまだ似たようなものは見つかりませんでした。
これまでのところ、解決策は 1 つしかありません。範囲内のリンクローカル IP アドレスを使用してネットワーク上で ARP パケットを送信し、空いているかどうかをテストします。空きが見つかったら、現在の IP アドレスとして割り当てられます。
私の問題に関する提案は大歓迎です。
interface - boost.asio で、リンク ローカル アドレスを使用して特定の NIC にバインドすることは可能ですか?
asio のドキュメントはその名前に実際には対応していないため、この質問をしなければなりません。Stackoverflowを助けてください、あなたは私の唯一の希望です;)
ここではIPv6で話しています。eth0 などの特定のインターフェイスを使用するように asio に指示したいと思いますが、ローカル IP アドレスしかリンクしていないため、グローバル IP アドレスは使用しません。ping6 -I に似たものが欲しいです。これはasioで可能ですか、それともBerkeley Socketsを使用する必要がありますか?
よろしくお願いいたします。
linux - リンクローカルアドレスの追加
インターフェイスでIPv6リンクローカルアドレスを手動で削除した場合、インターフェイスを停止せずにリンクローカルアドレスを取得する方法はありますか?この要件は、インターフェイス上の既存の接続(IPv4)を保持する必要があるだけでなく、インターフェイス上のリンクローカルアドレスも取得する必要があることに起因します。
networking - リンクローカルアドレスをリークしないように、MicrelKSZ8995をRFC3927に準拠させることができますか?
私の組み込みシステムは、2つの「内部」デバイス(内部とは物理的に同じボード上にあることを意味します)とLANに接続されたMicrelKSZ8995Mスイッチを使用しています。
デバイス1は、Busybox Linuxを実行しているARMv5プロセッサであり、LAN IPはDHCPまたは静的に構成されてeth0
おり、リンクローカル/APIPA169.254.137.10
アドレスはにありeth0:0
ます。
169.254.137.11
デバイス2は、ARTOSを実行している小さなチップであり、リンクローカル/ APIPAアドレスのみを使用して、他に何を知っているかを知っています。
デバイス1とデバイス2は、LAN上の他のデバイス(または再帰的に接続されたネットワーク)がデバイス2を認識したり、2つの間を行き来するデータを確認したりすることなく、TCP/IPを介して相互に通信できるようにすることを目的としています。デバイス。
また、ネットワーク上にユニット全体の複数のインスタンスが存在する可能性があり、リンクローカルアドレスがユニット間で衝突してはなりません。
私の理解では、RFC 3927で定義されているリンクローカルアドレッシングは「内部」通信のみを対象としており、リンクローカルアドレッシングを使用してインターフェイス間でディスパッチされたパケットはスイッチやルーターによって転送されるべきではありません。
残念ながら、システム全体がLANに接続されていると、より広いネットワーク上の複数のデバイスからデバイス2へのARP応答が見られます。これは、リンクローカルIPが表示され、ネットワーク全体で衝突していることを意味します。つまり、Micrelはこれらを転送しているように見え、停止させるための構成がわかりません。
APIPAアドレッシングが機能する方法を誤解しましたか?
または、私が正しいのに、Micrelがそれらを適切にサポートしていない場合、強制的に準拠させることはできますか?
参照:
python - Python ipaddress.IPv6Address インスタンスのスコープ ID
私は現在、IPv6 リンクローカル アドレスを介してネットワーク通信を行う C++ ライブラリの Python ラッパーを作成しています。ライブラリを初期化するには、ネットワーク インターフェイスを選択する必要があります。これは、目的のインターフェイスのリンクローカル アドレスを介して行われます。
C++ 側では、ブーストaddress_v6 オブジェクトを使用します。Python 側では、ipaddress.IPv6Addressが完全に一致しているように見えました。
ただし、Python 側でインターフェイスのスコープ ID を指定する方法が見つかりませんでした。
エラーが発生します:
IPv6 リンクローカル通信は、スコープ ID なしではほとんど不可能です。
ここに何か不足がありますか、それとも IPv6 リンクローカル インターフェイス アドレスを文字列として指定する最良の方法はありますか?