我有一个根服务器,它有一个 ipv4 地址和一个 /64 ipv6 地址范围。我在服务器上创建了一个虚拟机(使用多通道)来运行 Web 服务器。
为此,我在主机上创建了一条规则,将端口 80 和 443 转发到虚拟机(/etc/ufw/before.rules
):
*nat
:PREROUTING ACCEPT [0:0]
-I PREROUTING 1 -i enp41s0 -p tcp --dport 443 -j DNAT --to-destination 10.101.132.173:443
-I PREROUTING 1 -i enp41s0 -p tcp --dport 80 -j DNAT --to-destination 10.101.132.173:80
COMMIT
...
*filter
##############
# Also needed to forward HTTP traffic to multipass virtual-machine instance
-I FORWARD 1 -p tcp -d 10.101.132.173 --dport 443 -j ACCEPT
-I FORWARD 1 -p tcp -d 10.101.132.173 --dport 80 -j ACCEPT
现在我想通过 ipv6 访问 Web 服务器。
从我(初学者)的理解来看,我可以在虚拟机上公开一个 ipv6 地址(因为我有很多虚拟机),不需要 NAT。是这样的吗?
如果是,我需要配置什么来公开 ipv6 地址?我在两台机器(主机和虚拟机)上都运行着 Ubuntu 22.04。
答案1
无需对 ipv6 进行任何配置只是一个梦想,永远无法实现。您需要像在 Ipv4 上一样进行配置。
去做:
- 在主机上定义一个 /64 范围之外的固定 Ipv6 地址,该地址应转发到虚拟机。
- Multipass 在主机和虚拟机之间使用专用网络。此网络的配置必须使用 IPv6 进行扩展,并且虚拟机需要固定的 ipv6 地址。
- 像 ipv4 一样使用 ip6tables 规则。