我正在构建一个虚拟化主机,并且希望我的虚拟机可以通过 v4 和 v6 IP 地址访问。
我的主机(Xen 4.1.3,带有 dom0 中的 Debian Wheezy)有一个物理 eth0 接口:
10.0.0.2/30 dev eth0
default via 10.0.0.1
2000:1111:1111:11111::2/64 dev eth0
default via 2000:1111:1111:11111::1 (aka fe80::1)
我的 ISP 为我分配了一个10.100.0.0/28
IPv4 范围,通过 进行静态路由10.0.0.2
。
在主机上我建立了xenbr0虚拟桥接接口:
10.100.0.1/28 dev xenbr0
在每个来宾虚拟机上,我设置了任何未使用的地址10.100.0.0/28
,即:
10.100.0.2/28 dev eth0
default via 10.100.0.1
正如预期的那样(因为主机就像一个经典的路由器),虚拟机能够顺利地与 v4 互联网通信。
这就是我缺乏 IPv6 经验的原因。据我所知,v6 地址的路由与 v4 地址的路由几乎相同,这意味着我想要完成的事情不可能只用一个 /64 范围(至少在 eth0 和 v6 gw 按照它们的方式配置时)。
是否可以使用单个 IPv6 /64 范围,以便虚拟机可以拥有静态 IPv6 地址,而不必去向我的 ISP 索要另一个 /64 范围(我猜)必须通过该范围进行静态路由2000:1111:1111:11111::2
?
我尝试将此 /64 网络“分割”为两个 /65 网络,然后像这样重新配置 xenbr0:
2000:1111:1111:11111:8000:2/65 dev xenbr0
此外,eth0 已重新配置(仅网络大小从 64 更改为 65):
2000:1111:1111:11111::2/65 dev eth0
default via 2000:1111:1111:11111::1
主机没有丢失 IPv6 连接。但是,当配置如下时,客户虚拟机无法与主机外部的任何设备建立连接:
2000:1111:1111:11111:8000::2/65 dev eth0
default via 2000:1111:1111:11111:8000::1
关于如何进行有什么想法吗?
答案1
从提供商处获取更大的地址块是正确的解决方案。对于 IPv6,向客户提供一个/56
或一个是很正常的/48
,这对应于 256 或 65536 个子网。这就是 IPv6 的伟大之处:总是有足够的地址!:-)
然而,仍有许多人以 IPv4 的心态运行 IPv6 网络,他们试图向客户提供尽可能少的地址,认为“/64 包含如此多的地址,对他们来说已经足够了”。然后,当您需要多个子网时,就会遇到问题……网络运营商和服务提供商必须改变他们的思维方式,并始终向想要使用它们的客户提供更大的块(像/56
或 这样的大块/48
,您不想要求他们提供每个额外的子网)。
一旦人们开始使用 IPv6 提供的大量地址空间,运行 IPv6 网络就会变得非常容易。无需再进行规划、请求额外地址等。只需:
- 为每个客户(是的,甚至是住宅客户)提供至少一个
/56
,并且/48
对于商业客户,应该默认为一个。 - 对每个子网使用
/64
。它将比你所需要的更多,这就是它应该的样子。 - 即使为每个点对点链接保留一个
/64
,尽管您可以配置一个/127
以避免 ND 缓存问题。 - 为主机提供任意数量的地址。如果您愿意,可以将每个网站放在单独的地址上。如果您想要移动内容、简化计费或使检测和抵御 (D)DOS 攻击更加容易,这可能会很有用。
一旦您习惯了突然可用的大数字,所有这些都会使您的计划和操作变得更加简单:)