Proxmox
如何在沒有網橋的 Proxmox 中配置 DHCPv6?
(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 地址已正確配置)
原來我做的一些事情有點過於復雜,現在我已經設法自己回答了這個問題。
首先,讓我連結到對此目的最有幫助的外部資源:超級使用者回答。
我的配置反映了那篇文章中的配置:
- 路由器:啟用前綴委託。可能不需要做任何事情來改變預設值,但以防萬一。
- 安裝包“wide-dhcpv6-client”。相應地對其進行配置以請求前綴委託,並為每個介面進行相應的配置。
- 調整 dnsmasq 以提供 IPv6 地址——這允許路由器通告和 DHCP 正常工作。
- 重新啟動(由於某種原因 ifup/ifdown 沒有正確調整,否則)。
dhcp6c.conf 片段:
interface wlp2s0 { send rapid-commit; send ia-na 0; send ia-pd 0; }; id-assoc na 0 { }; id-assoc pd 0 { prefix ::/60 infinity; prefix-interface vmbr0 { sla-len 4; sla-id 0; ifid 1; }; };
dnsmasq.conf 片段:
enable-ra dhcp-range=::1,constructor:vmbr0,ra-stateless,ra-names,4h