让我揭示我的意图。
我的主机免费提供数百个 IPV6 地址,但对 IPV4 地址收费。我在一台服务器下有多个站点,我想知道是否可以为每个站点/域提供自己的 ipv6 地址。
这有可能吗?如果可能的话,怎么办?
我已经阅读了大量有关 ipv6 的资料,但我对它的理解并不像我希望的那样清晰。
我的主要目标是,每个域/站点都有自己独特的 IP,这样别人就无法通过反向 IP 查找来查看我在该服务器上有哪些站点。
提前感谢您的耐心。
答案1
首先,您需要一个寻址计划。如果您还没有,请为您分配一个 /48 网络。然后选择一个 /64 作为您当前的主要网络。如果您的业务规模大幅扩大,您将节省剩余的地址空间,我真诚地希望您能做到这一点。
笔记:您永远不需要超过 /64,但是如果您的业务真的很大,那么将您的大客户分成不同的 /64 可能开始有意义,以便于直观地识别每个客户。
获得 /64 后,您可以开始按顺序分配它(第一个 IP 分配给第一个站点,依此类推),也可以选择组织子组并为其分配子网(例如:客户 X 有 200 个站点,他有自己的小型子网)。我建议采用第二种方法,它将有助于路由,您的网络人员也不会头疼。我假设您有多台服务器,可能分散在不同的地理区域。
您需要正确路由您分配的 /64,因此请确保您的服务提供商正确分配了它。拥有自己的核心路由器有助于实现这一点(不是强制性的)。
之后,通过创建如下接口别名,开始将这些 IP 添加到将为这些站点提供服务的服务器的接口:
$: ifconfig eth0:0 2001:470:1f0a:314::1 up
添加完地址并验证它们可路由后,在 apache 中创建一个仅在该 IP /域上应答的 VirtualHost。
<VirtualHost [2001:470:1f0a:314::1]:80>
ServerName newhost.ipv6domain.com
如果您添加正确的 DNS 记录(newhost.ipv6domain.com -> 2001:470:1f0a:314::1),那就没问题了。
我显然省略了所有与 Apache 不相关的配置。那不是一个完整的 VirtualHost 声明。
编辑:我在有关正确 DNS 记录的行中错误地添加了端口号。这是由于我在上班前 10 分钟一手拿着咖啡输入此答案而导致的打字错误 :P
答案2
这是完全可能的,并且也确实是 IPv6 的预期工作方式。
到目前为止,问题在于客户端连接。IPv6 目前还不能普遍连接,而且可能还要过几年才会实现。仅使用 IPv6 的站点将不如使用 v4 地址的站点那样易于访问。
但是,应该可以同时支持 v4 和 v6 地址。这些站点可能都共享一个 v4 地址,但当客户端使用 v6 时,它们将获得一个单独的 IP。在我们过渡到 v6 的过程中,这种双栈方法就是我们大多数人在短期内必须采取的方法。
答案3
一段时间以来,ifconfig
已被程序取代ip
。例如,您可以添加额外的 IP6 地址
sudo ip addr add 2001:470:1f0a:314::1/64 dev eth0