我有一系列可用的 ipv6 地址(本机),我想使用它们。我已经设置了内核以支持 ipv6,并安装了必要的工具(iproute2 等)。
我无法理解如何实际添加服务器要使用的范围。我是否必须分别配置每个范围,还是可以添加整个范围?
另外,在我重新编译程序以支持 ipv6(Gentoo)之后,是否有一个预期的策略,即它们将使用哪个 ip 进行传出连接(假设另一端启用了 ipv6)?它是随机的,是第一个,还是完全不同的东西?
答案1
您必须手动添加要使用的每个 IP 地址。当应用程序通过 IPv6 通信时,默认情况下它们使用最后的除非绑定到特定端口(特定于应用程序),否则将分配地址。
答案2
@NathanC 发布的答案并不完全准确。
有两种方法可以让 Linux 将 IP 视为本地分配的:
传统方法是添加每个地址及其子网 - 如果是在线地址,这是最简单的方法。
ip addr add 2001:db8::1/64
- 添加单个 IP。添加将子网视为“本地”的路由。
ip rou add local 2001:db8::/64 dev lo
2. 需要注意的一点是,您不能将程序绑定到本地路由内的特定 IP 地址,而必须改为监听未指定的地址(::
)才能接收本地路由的流量,并且要求您使用 Linux 2.6.37 或更新版本。
为了使 2. 工作,子网应该路由到机器,你可以执行 proxy_nd 来使其工作,但如果要使用大量地址,这是一个糟糕的想法。实际上,这通常是一个糟糕的想法,但,如果您的提供商不给您提供路由子网,有时就没有办法解决这个问题。