得益于ProxmoxVE的SDN功能,现在ProxmoxVE可以更方便的开通和管理NAT小鸡了,不再需要手动配置NAT相关的规则,直接在ProxmoxVE的WEB界面就能实现SNAT。除此之外还支持DHCP,并且ProxmoxVE还将DHCP与IP地址管理(IPAM)功能进行了整合。
从ProxmoxVE 8.1开始默认安装核心软件定义网络(SDN)软件包,如果你是从旧版本升级上来的,则需要在每个节点上安装libpve-network-perl软件包:
apt update apt -y install libpve-network-perl
从ProxmoxVE 7.0及更高版本起默认安装ifupdown2软件包,如果你是从旧版本升级上来的,则还需要安装ifupdown2软件包:
apt -y install ifupdown2
此外还需要确保/etc/network/interfaces配置文件内有如下内容:
source /etc/network/interfaces.d/*
如需要使用DHCP功能,则还需要安装dnsmasq:
apt -y install dnsmasq
之后关闭dnsmasq默认的服务,proxmox会接管dnsmasq:
systemctl disable --now dnsmasq
转到“数据中心”->“SDN”->“区域”,创建一个新的简单(Simple)区域,要激活DHCP功能,你还需要在高级设置中勾选“自动DHCP”选项:
转到“VNets”,创建新的VNet(vnet1在本文的示例中)创建VNet时,“区”选择我们在上一步中创建的区域:
在同一界面中,现在需要在先前创建的VNet中创建子网。这可以通过选择VNet并单击右侧子网界面中的“创建”来完成。
输入你选择的本地子网(在本文的示例中10.0.0.0/24)。
你还需要指定一个IP当作网关,否则DHCP将无法工作(10.0.0.1在本文的示例中)。勾选“SNAT”选项以便为此VNet启用SNAT:
要使用DHCP,我们还需要为此子网创建DHCP范围,这可以通过切换到子网创建对话框中的“DHCP范围”选项卡来完成。我选择10.0.0.10和10.0.0.200作为DHCP范围的起始和结束地址:
现我们需要保存刚才的配置,转到“SDN”界面单击“应用”来完成保存:
确保网络重新加载任务成功完成。如果它完成且没有任何错误或警告,则说明一切正常:
[可选]防火墙配置。如果你启用了PVE的防火墙,则需要添加以下几条规则。
允许DHCP转发流量:
允许DNS查询流量:
[重要]为了避免把自己墙在外面,务必设置一个允许SSH流量的规则:
另外8006端口(PVEWEB面板)的流量也别忘记设置允许:
需要注意的是PVE的防火墙分为3个部分:数据中心级别、节点级别、VM级别。上面的规则建议直接在数据中心级别的防火墙设置:
接下来是创建VM时候的网络配置。我这里使用了系统模板,且模板使用了cloud-init来初始化。
首先你可以按照这篇文章来创建一个系统模板:https://lala.im/8911.html
在系统模板内添加一个网络设备,桥接vnet1(这是之前创建Vnets时指定的ID):
qm set 20000 --net1 virtio,bridge=vnet1
配置系统模板内的cloud-init使用dhcp来获取ipv4:
qm set 20000 --ipconfig1 ip=dhcp
克隆一台VM,检查VM内的网络和DNS:
如果不使用系统模板而是直接创建新VM,则在网络配置这里指定桥接vnet1即可:
如果选择创建CT(LXC容器),则在网络配置这里指定桥接vnet1,并且选中IPv4 DHCP:
检查CT内的网络和DNS:
现在你可以轻松在PVE的IPAM界面管理VM和CT的IP地址:
请问大佬可以通过SDN的配置来实现wireguard异地组集群吗?
没研究过。。。我也不会。。。
大佬,请问可以在vnet1上同时创建IPv4\IPv6吗
可以的但我没有试过,目前看样子simple sdn这个ipv6应该也只能配置成私网ipv6,然后启用snat。
如果你想直接通过这个simple sdn给vm分配公网ipv6的话应该还不行。