问题标签 [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.

0 投票
2 回答
3513 浏览

c++ - IPV6 链路本地组播

我试图弄清楚如何使用 IPV6 进行相当于 IPV4 广播的操作。

我正在创建一个非阻塞 IPV6 UDP 套接字。

从侧面广播我实际上只是在端口 12346 上发送到“FF02::1”。

在聆听方面,我发现我需要加入该小组,所以我做了以下事情:

但是 setsockopt 总是返回“WSAENOPROTOOPT”。为什么?谁能帮我解决这个问题?我完全不知所措。

编辑:我将级别更改为“IPPROTO_IPV6”,但现在我得到一个“WSAEINVAL”。

0 投票
1 回答
3647 浏览

python - 为什么 %en0 后缀不能在 Python 中连接本地链路 IPv6 TCP 套接字?

大约一周前,StackOverflow 上的某个人为什么他们用于连接到 IPv6 本地链接地址的 Python 代码不起作用,我回答说因为它是本地链接地址,所以他们需要添加一个 %en0 (或任何所需的本地接口名称是)作为其目标 IP 地址的后缀。我以为我知道我在说什么,所以在回答之前我实际上并没有测试我的建议(我感到羞耻!)。

今天我为自己使用了相同的技术,却发现它似乎不起作用。:^( 也就是说,这段代码不起作用:

另一方面,以下代码可以工作(有或没有 %en0 后缀):

...但我不喜欢那样做,因为为了确定为最后一个参数提供哪个范围 ID 整数,我必须执行一堆不太便携的代码来迭代本地接口列出,找到名为“en0”的接口,并提取其范围 ID,这比我想要的复杂性开销更大。

鉴于 connect() 接受 IP 地址的 %en0 后缀,为什么它实际上没有按预期使用它来确定作用域 ID?

FWIW,我正在 MacOS/X 10.6.4 下使用 Python 2.6.1 进行测试。

0 投票
1 回答
5855 浏览

c - IPv6:connect() 总是以 errno 22 失败

操作系统是 Ubuntu。我正在为基本的 IPv6 操作做一个简单的测试。PC通过集线器连接IP Camera(支持IPv6),ping6测试成功。

代码如下:

结果总是“connect failure,errno = 22” 问题出在哪里?

0 投票
2 回答
1042 浏览

c# - 在 .NET C# 中获取和分配链接本地 IP 地址,APIPA 的实现

我需要在 .NET c# 中创建一个功能,它是 RFC3927 中定义的 IPv4LL 的实现,这是一种在没有 DHCP 服务器的情况下分配链路本地 IP 地址的技术。在 Windows 上以 APIPA 名称提供了相同的功能。在linux上有这样的插件:avahi,avahi-autoipd。但是在windows上还没有找到类似的东西。

到目前为止,我只有一个解决方案:在一个范围内使用链路本地 IP 地址在网络上发送 ARP 数据包,并测试它们是否空闲,一旦我找到一个空闲的,它就会被分配为当前 IP 地址。

任何关于我的问题的建议将不胜感激。

0 投票
1 回答
826 浏览

interface - boost.asio 中是否可以使用链接本地地址绑定到特定的 NIC?

由于 asio 文档并没有真正辜负它的名字,我不得不问这个问题。帮助我 Stackoverflow,你是我唯一的希望 ;)

我们在这里讨论的是 IPv6。我想告诉 asio 使用特定的接口,比如 eth0,但没有全局 IP 地址,因为我只有链接本地的。我想要一些类似于 ping6 -I 的东西。这可以通过 asio 实现还是我必须为此使用 Berkeley Sockets?

提前谢谢你和最好的问候。

0 投票
1 回答
25931 浏览

linux - 添加链接本地地址

如果在接口上手动删除了 IPv6 链路本地地址,有没有办法在不关闭接口的情况下重新获取链路本地地址?该要求源于需要保持接口上的 (IPv4) 现有连接,但还需要获取其上的链路本地地址。

0 投票
2 回答
697 浏览

networking - 能否哄骗 Micrel KSZ8995 遵守 RFC 3927,以免泄露链路本地地址?

我的嵌入式系统使用一个Micrel KSZ8995M开关,连接到两个“内部”设备(内部我的意思是物理上位于同一块板上)和一个 LAN。

设备 1 是一个运行 Busybox Linux 的 ARMv5 处理器,其 LAN IP 由 DHCP 或静态配置eth0,以及一个本地链接/APIPA169.254.137.10地址eth0:0

设备 2 是运行 ARTOS 的较小芯片,谁知道还有什么,只有一个本地链接/APIPA169.254.137.11地址。

目的是让设备 1 和设备 2 能够通过 TCP/IP 相互通信,而 LAN(或任何递归连接的网络)上的任何其他设备都无法看到设备 2 或看到两者之间传输的数据设备。

此外,网络上可能存在整个单元的多个实例,并且单元之间的链路本地地址不得冲突。

据我了解,RFC 3927 中定义的链路本地寻址仅用于“内部”通信,并且在具有链路本地寻址的接口之间分派的数据包不应由交换机或路由器转发。

不幸的是,随着系统作为一个整体连接到 LAN,我看到来自更广泛网络的多个设备对设备 2 的 ARP 响应,这意味着链接本地 IP 是可见的并且在整个网络中发生冲突。也就是说,Micrel 似乎转发了这些,我看不到任何可以让它停止的配置。

我是否误解了 APIPA 寻址的工作方式?

或者,如果我是正确的,但 Micrel 只是没有正确支持它们,我可以强迫它遵守吗?


参考:

0 投票
0 回答
922 浏览

embedded - 在 ifconfig 中查找链接本地 IP (Linux - Redhat 9)

我在 MIPS Embedded 设备中设置了 IPv6。我使用 2.6.23 内核并在 menuconfig 中设置 IPv6 项。我更新了设备中的内核,但链接本地 IP 未显示在 ipconfig 中,如下所示:

-> inet6 地址:/64 范围:链接

终端

如何设置链接本地 IP?

我可以在下面找到 ipv6 地址,但 ifconfig 不是...

[root@]# cat /proc/net/if_inet6

000000000000000000000000000000001 01 80 10 80 罗

fe8000000000000002032efffe070001 02 40 20 80 eth0

问题是什么?核心?ifconfig (busybox-1.1.0)?还要别的吗?请给我任何想法!~谢谢~

0 投票
1 回答
383 浏览

windows - Windows 注册表中的 APIPA(链接本地)IP 地址

我想知道 Windows 注册表中是否有一个位置将包含 APIPA(链接本地)IP 地址,一旦提供给接口。我什至在注册表中搜索了 169.254.xx 但无济于事。

我知道您可以在此处添加 DWORD 'IPAutoconfigurationEnabled' 以启用/禁用 APIPA:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

我想知道是否可以添加另一个子项,Windows 操作系统将使用链接本地地址 (169.254.xx) 填充?或者是否有另一种方法来提出使用 MAC 地址的 IP 地址?

我知道使用 ipconfig 和 netsh,我希望从注册表中获取这个 IP,而不是从 C 程序执行系统调用。

0 投票
2 回答
1039 浏览

python - python ipaddress.IPv6Address 实例中的范围 ID

我目前正在为通过 IPv6 链接本地地址进行网络通信的 C++ 库编写 python 包装器。要初始化库,必须选择网络接口。这是通过所需接口的链路本地地址完成的。

在 C++ 端,我们使用 boost address_v6 objects。在 python 方面,ipaddress.IPv6Address似乎是一个完美的匹配。

但是我没有找到一种方法来指定python端接口的范围ID。

给出错误:

如果没有范围 ID,IPv6 链路本地通信几乎是不可能的。

我在这里遗漏了什么还是将 IPv6 链路本地接口地址指定为字符串的最佳方法?