![问题](https://linux22.com/image/792237/%E9%97%AE%E9%A2%98.png)
问题
我知道如何向接口添加块。但我真的不知道如何动态使用特定地址。
我想要的是
例如:
- 我的应用程序有一个块 fe80::/32。
- 我将让我的用户通过一个具有凭证的单一 IPv4 地址访问服务器。
- 我将发送带有 IPV6 的钩子
- 我想给每个用户一个特定的发送地址。
- 用户A:
fe80::1
用户B:fe80::2
我有一个完整的区块,因此将会有大量用户使用这项服务。
我做了什么
但我发现我无法将请求与特定地址绑定,这将导致 errno99。
我正在使用curl来测试linux是否支持我想要的功能,但是发现我不能。
我如何测试它:
测试服务器范围
服务器
python3 -m http.server --bind ::
客户
curl -vvv -6 "http://[fe80::3]:8000"
curl -vvv -6 "http://[fe80::4]:8000"
这将有效。因为服务器正在监听所有地址。因此您可以使用其中任何一个地址进行访问。
使用 Range 测试客户端
服务器
python3 -m http.server --bind ::
客户
curl -vvv -6 -i "fe80::2" "http://[fe80::1]:8000"
curl -vvv -6 -i "fe80::3" "http://[fe80::1]:8000"
这不会起作用。Curl 将抛出 errno99
将每个 IP 绑定到接口
我有一系列 IP,但要将每个 IP 绑定到 /32 下,这太疯狂了。所以我正在寻找一个更好的解决方案。
关于讨论
有一些讨论被删除了。我找不到它的历史记录。
免责声明:
- 我在“我想要什么”上输入了“例如:”
- 如果你检查这个问题的编辑历史你会发现“例如:”第一次出现在这里。
- 该问题随客户所请求的功能而出现。
- 我想要简单的解决掉它,我不想再谈这个了。
- 我不知道为什么我会被解雇,只是因为我必须满足在 IPV6 VPS 上托管服务的客户。
- 我遇到的问题是我不知道应该在硬件或软件上设置一些东西来解决这个问题,但我认为这是服务器问题,这导致题外话。我找到了解决方案。
答案1
你需要检查一下现实,并且——咳咳——阅读手册。
- 地址块 FE80 是本地链路。这是最后的手段。如果以太网段上的每个端点启用了 IPv6,则该地址就在那里。谢谢。
- 这意味着首先,您不能使用所有地址,因为计算机随机拥有地址。这是随机的 - 基于其 MAC。
- 因为此前缀是本地链接,并在每个链接上自动分配 - 它也不是路由的。因此,除非您的用户是本地用户 - 他们无法向其发送消息。
- 最后,你犯了一个架构上的大错误。你终止 IPv4 地址上的用户 - 这很好,因此用户拥有 IPv4 访问权限 - 然后为他们提供 IPv6 访问权限 - 假设(这是一个非常愚蠢的想法)他们甚至启用了 IPv6。事实并非如此。获取 ipv4,坚持使用 ipv4。获取 Ipv6,坚持使用 IPv6。但在这种情况下无关紧要,因为没有路由。但通常你不应该切换协议 - 你假设双栈,但 99.9% 的人都不是这种情况。
答案2
您可以考虑使用 corosync 和 pacemaker 创建一个集群,并使用两个节点和几个带有来自您块的虚拟 IP 的服务。IP 将是虚拟的,因为该服务将由节点 1 和节点 2 使用,因此节点 1 和节点 2 应该能够使用它。