(crosspost:网络堆栈交换)
我有一个通过 WiFi 连接的 Proxmox 设置。一切都适合我的需求和 IPv4 连接。
现在,我想看看是否可以进行一些 DHCPv6 设置,以便我的虚拟机也具有 IPv6 地址。我更喜欢没有 NAT 的设置,但这不是强制性的。
我正在考虑 IPv6 连接的几个选项:
- 国庆节代理。这个感觉是最“透明”的,我会从与主机相同的网络获取一个公有的IPv6地址,也就是主abcd:abcd:abcd:FFFF::/64网络。
- DHCPv6 网络。我的路由器有 DHCPv6,我可以让我的 Proxmox 实例请求一个网络用于其内部网桥(使用前缀委托)。我目前正在将 dnsmasq 用于虚拟机的 IPv4 地址,但我相信我可以用其他东西替换它。
- NAT。我不想要这个选项,但我也不会完全拒绝它。我不能将 Proxmox 桥接器以桥接模式连接到我的 LAN(这会使事情变得容易得多)的原因是我无法引入有线连接,所以我必须使用 WiFi(幸好至少它是 5 GHz并且大部分时间不需要太多流量)并且WiFi客户端不支持网桥。
所以这是我的建议请求。先感谢您。
编辑:作为我的选择来前缀委托。还没有完全完成。现在解决问题:
- 我获得了 IPv6 前缀的委托,Proxmox 服务器获得了 /62
- 在我启用了 radvd 的服务器上,它正确地向 VM 的内部 LAN 广播
- 虚拟机,一个带有 NetworkManager 的 Ubuntu 20.04,正在获取路由器广告,甚至自动配置默认路由。但是,它不会自动配置 IPv6 地址,这会导致在尝试 ping IPv6 地址时出现“无法访问的目标:超出源地址范围”的意外问题。如果我手动执行“ip aa dev ens18 2001:db8:facb:9876::23:2918/62”它可以工作(路由是 2001:db8:facb:9874::/62 加上默认路由)。
radvdump 输出:
{
AdvSendAdvert on;
# Note: {Min,Max}RtrAdvInterval cannot be obtained with radvdump
AdvManagedFlag off;
AdvOtherConfigFlag off;
AdvReachableTime 0;
AdvRetransTimer 0;
AdvCurHopLimit 64;
AdvDefaultLifetime 300;
AdvHomeAgentFlag off;
AdvDefaultPreference medium;
AdvSourceLLAddress on;
prefix fde1:d59a:7fa7:8::/62
{
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
}; # End of prefix definition
prefix 2001:db8:facb:9874::/62
{
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
}; # End of prefix definition
prefix fde1:d59a:7fa7:8::/62
{
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
}; # End of prefix definition
prefix 2001:db8:facb:9874::/62
{
AdvValidLifetime 86400;
AdvPreferredLifetime 14400;
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
}; # End of prefix definition
route ::/0
{
AdvRoutePreference medium;
AdvRouteLifetime 300;
}; # End of route definition
}; # End of interface definition
RADVD 配置:
interface vmbr0 {
AdvSendAdvert on;
MinRtrAdvInterval 30;
MaxRtrAdvInterval 100;
AdvSourceLLAddress on;
prefix ::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
Base6Interface vmbr0;
};
route ::/0 {
};
};
(vmbr0 的 IPv6 地址已正确配置)
原来我做的一些事情有点过于复杂,现在我已经设法自己回答了这个问题。
首先,让我链接到对此目的最有帮助的外部资源:超级用户回答。
我的配置反映了那篇文章中的配置:
dhcp6c.conf 片段:
dnsmasq.conf 片段: