PVE9:主机只有无线网卡|不插网线如何来玩转PVE
快过年了,不要再讨论什么 NAS、HTPC、OpenWrt了。你带你的大机箱回到家并不能给你带来任何实质性作用,朋友们兜里掏出一大把钱吃喝玩乐,你默默的在家里摆弄你的破群晖。亲戚朋友吃饭问你收获了什么,你说我组了一个 RAID 0 的 ALL IN ONE,亲戚们懵逼了,你还在心里默默嘲笑他们,笑他们不懂你的刮削器,不懂你的 Auto Backup,也笑他们看爱奇艺还要忍受会员专属广告。你父母的同事都在说自己的子女一年的收获,儿子买了个房,女儿买了个车,姑娘升职加薪了,你的父母默默无言,说我的儿子装了个黑盒子,开起来嗡嗡响、家里电表走得越来越快了。
起因,老家有台闲置的老旧笔记本,没有有线网卡,只有个无线WiFi。只能通过连WiFi上网,反正在家也是闲着就来捣鼓一下在不插网线的情况,通过WiFi来玩转PVE。
准备工作
1)一台有无线网卡的x86主机
2)一个U盘(用于安装PVE/放置离线软件包)
3)下载PVE9.1.1 ISO安装包
4)下载balenaEtcher烧录工具
安装PVE
把大象装冰箱总共分几步?答:三步,第一步把冰箱门打开;第二步把大象装进去;第三步把冰箱门关上。
PVE烧录U盘
提前把balenaEtcher烧录工具和PVE9.1.1镜像下载好,用balenaEtcher烧录工具将PVE镜像写入U盘,然后插到主机进行安装。
PVE图形安装
将U盘接入主机引导启动到PVE安装界面,采用第一种图形化界面Install Proxmox VE (Graphical)进行安装。PVE图形界面手动分区安装示意图:
如果遇到第一种图形界面安装不成功,出现白屏黑屏或者没法继续的时候,更推荐采用第二种终端化界面Install Proxmox VE (Terminal UI)进行安装。PVE终端化界面手动安装示意图:
查看自己网卡名称
PVE安装好后,可以执行ip -c a来查看无线网卡名称,我的是wls16
配置无线
因为设备只有一个无线网卡,即使安装好PVE,我们也无法在另一台电脑上正常访问PVE的管理后台以及联网安装软件啥的,需要先配置好无线网络才能正常访问PVE后台和联网。
下载安装包到U盘
我们可以找个U盘将其格式化成fat32格式,然后将以下5个deb安装包下载好并拷到U盘,将U盘插到PVE机器上,挂载进行安装。
# 下载WIFI认证和扫描工具以及相关依赖包
https://mirrors.ustc.edu.cn/debian/pool/main/w/wpa/wpasupplicant_2.10-24_amd64.deb
https://mirrors.ustc.edu.cn/debian/pool/main/w/wireless-tools/wireless-tools_30~pre9-18+b1_amd64.deb
https://mirrors.ustc.edu.cn/debian/pool/main/w/wireless-tools/libiw30t64_30~pre9-18+b1_amd64.deb
https://mirrors.ustc.edu.cn/debian/pool/main/libn/libnl3/libnl-genl-3-200_3.7.0-2_amd64.deb
https://mirrors.ustc.edu.cn/debian/pool/main/p/pcsc-lite/libpcsclite1_2.3.3-1_amd64.deb挂载U盘并安装
PVE主机接好键鼠和显示器并将U盘插到设备上去,登录到控制台并将U盘挂载
安装离线软件包
# 进入U盘挂载路径
cd /mnt/sdb1/
# 执行安装5个deb包
dpkg -i ./*.deb测试无线网卡
可以执行以下命令来测试无线网卡是否可以正常工作了
# 启用无线网卡,wls16改成自己网卡名称
ip link set wls16 up
# 搜索附近可用WIFI,wls16改成自己网卡名称,执行后会列出一堆WiFi信息
iwlist wls16 scanning生成个WIFI密钥
因为不能直接用WiFi名称+WiFi密码进行连接,所以我们要给要连接的WiFi生成一个WiFi密钥,以下是我家的WiFi和密码,自行替换成自己的WiFi信息
# 执行以下命令生成WIFI密钥,yangwenqing_5G是wifi的名称,12345678是wifi的密码
wpa_passphrase yangwenqing_5G 12345678
# 输入结果如下:
root@pve9:~# wpa_passphrase yangwenqing_5G 12345678
network={
ssid="yangwenqing_5G"
#psk="12345678"
psk=efc169d76bafda6de23888c2b11004e44af04b178f3a9a0974af608bf9e3c2b6
}psk=efc169d76bafda6de23888c2b11004e44af04b178f3a9a0974af608bf9e3c2b6就是我们要的WiFi密钥,拍照保存。
连接无线网络
使用nano /etc/network/interfaces命令编辑网络配置文件,删掉原来的配置信息并根据自己实际的网卡名称 WiFi网段 WIFI网关 WiFi名称 PSK密钥来填写。(因为不能复制粘贴,这里手打得细心点,错一个字母都无法连上WiFi)
auto lo
iface lo inet loopback
auto wls16
iface wls16 inet static
address 10.10.10.222/24
gateway 10.10.10.10
wpa-ssid yangwenqing_5G
wpa-psk efc169d76bafda6de23888c2b11004e44af04b178f3a9a0974af608bf9e3c2b6
source /etc/network/interfaces.d/*
修改好后,保存并重启PVE设备,重新开机后就能通过https://10.10.10.222:8006访问到PVE的管理后台了,同时PVE也可以正常联网。
初始化操作
一些PVE基础初始化优化工作,可选执行
PVE换源
更换国内源主要是为了解决网络访问问题、提升下载速度、确保系统更新的可靠性,同时避免付费订阅的要求。
更换系统源
中科大源
# 替换 Debian 官方源和安全源为中科大源
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources
sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list.d/debian.sources更换企业源
中科大源
# 关闭官方订阅企业源
sed -i '/Types:/a Enabled: false' /etc/apt/sources.list.d/pve-enterprise.sources
# 新增无订阅企业源为中科大源
cat > /etc/apt/sources.list.d/pve-no-subscription.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF更换Ceph源
# 匹配当前Ceph版本和系统版本并更换为社区无订阅的中科大源
if [ -f /etc/apt/sources.list.d/ceph.sources ]; then
CEPH_CODENAME=`ceph -v | grep ceph | awk '{print $(NF-1)}'`
source /etc/os-release
cat > /etc/apt/sources.list.d/ceph.sources <<EOF
Types: deb
URIs: https://mirrors.ustc.edu.cn/proxmox/debian/ceph-$CEPH_CODENAME
Suites: $VERSION_CODENAME
Components: no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOF
fi执行更新
# 更新软件包并将系统升级到最新
apt update && apt dist-upgrade -yLXC容器更源
中科大源
# 备份APLInfo.pm
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
# 替换为中科大源:
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm
# 重启服务后生效
systemctl restart pvedaemon.servicePVE常用优化脚本
# 一键给PVE增加温度和CPU频率显示;硬盘信息;取消弹窗订阅;
(curl -Lf -o /tmp/temp.sh https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh || curl -Lf -o /tmp/temp.sh https://mirror.g hproxy.com/https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh) && chmod +x /tmp/temp.sh && /tmp/temp.sh remod删除local-lvm将空间合并到local
删除local-lvm将空间合并到local目录池让空间最大化。
# 使用命令删除local-lvm
lvremove /dev/pve/data
# 输入y,确认,输出以下信息即成功
Do you really want to remove active logical volume pve/data? [y/n]: y
Logical volume "data" successfully removed.
# 再将local-lvm的空间转移到pve-root
lvextend -rl +100%FREE /dev/pve/root
# 输出以下信息即合并local分区成功
Size of logical volume pve/root changed from <9.75 GiB (2495 extents) to <19.50 GiB (4991 extents).
Logical volume pve/root successfully resized.
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/pve-root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/pve-root is now 5110784 (4k) blocks long.删除了lvm-thin之后,还需要在Web删除local-lvm才算完成。
配置NAT网络
因为PVE使用的是无线网络WiFi,只能供PVE宿主机本身联网使用,如果还要给虚拟机和lXC容器联网,则我们还需要在PVE上设置SNAT规则和DHCP。
首先,我们应该明确SNAT和DHCP各自的作用。SNAT,即源地址转换,用于将虚拟机的内部IP地址转换为宿主机的外部IP地址,这样虚拟机就可以访问外部网络。而DHCP则负责为虚拟机分配内部IP地址,简化网络配置。
安装dnsmasq
为了使用DHCP功能,需要额外安装dnsmasq通过以下命令执行:
apt install dnsmasq禁用默认的 dnsmasq 服务
通过以下命令禁用默认的dnsmasq服务
systemctl disable --now dnsmasq启用网络转发
让PVE允许在不同网络接口之间转发流量
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p配置SDN
确保你的PVE版本是8.2及以上,这些版本才开始默认支持SDN功能。
创建Simple区域
步骤:数据中心 → SDN → 区域 → 添加Simple → 填写名称ID → 勾选DHCP
创建Vnets
步骤:数据中心 → SDN → Vnets → 创建VNet → 填写名称 → 勾选区域如果想让虚拟机之间互不通信,禁止访问对方,只需要勾选【隔离端口】就好了。这里我没有这类需求就不勾选了
创建子网
步骤:数据中心 → SDN → Vnets → 选中创建好的VNet → 创建子网 → 填写子网网段和网关 → 勾选SNAT
配置DHCP范围
步骤:数据中心 → SDN → Vnets → 选中创建好的VNet → 选中子网 → DHCP范围 → 添加IP范围
都已设置完毕,我们需要应用更改。在SDN面板并单击“应用”来完成。确保网络重新加载任务成功完成。(注意:因为PVE连的是WiFi,这里点击完应用后会导致WiFi断开使得PVE失联,需要物理重启PVE,WiFi才能重新正常连接)
配置防火墙(可选)
如果使用 PVE 防火墙,则还需要在 VNet 接口上允许 DHCP 转发和 DNS 流量。否则,您的访客将无法联系 dnsmasq 进行 DHCP 租约和 DNS 查询。为此,请向数据中心防火墙添加两个规则:一个用于 DNS 查询,另一个用于 DHCP 转发。这两个规则都应使用方向 “in”、作 “ACCEPT” 和 VNet 名称作为接口名称
对于 DNS 规则,您还应将目标地址设置为网络网关。这只允许 dnsmasq 服务器的 DNS 流量。如果您不设置它,则将允许所有 DNS 流量,这可用于规避其他防火墙规则。不能以相同的方式限制 DHCP,因为它需要首先能够发出广播消息。最后,将两者标记为已启用并保存规则。
验证上网
创建虚拟机或者容器在配置网络时,记得选择vnet0作为网桥,并将IPv4设置为 DHCP,获取的IP段取决于您配置的子网。
访问外网成功
自定义DNS
Dnsmasq还可以为整个VNet提供DNS。如果要为VNet配置自定义DNS服务器,则需要通过编辑文件 /etc/pve/sdn/subnets.cfg并设置dhcp-dns-server配置来完成。
使用nano命令编辑nano /etc/pve/sdn/subnets.cfg,在里面加入一行dhcp-dns-server 223.5.5.5即可。
subnet: dhcpsnat-172.16.80.0-24
vnet vnet0
dhcp-range start-address=172.16.80.50,end-address=172.16.80.200
gateway 172.16.80.1
dhcp-dns-server 223.5.5.5
snat 1配置静态路由
因为PVE下的虚拟机用的是nat网络(二级路由),在一级路由下的设备如果想直接访问PVE下的虚拟机或者LXC容器则还需要在路由器上做个静态路由规则。这样一级路由上的设备才能正常访问PVE下的nat虚拟机。
以爱快软路由为例:
什么!你说家用级路由器没有路由功能,无法做静态路由规则?这种情况,可以直接在设备上做静态路由规则,这里以Windows系统为例:
# 以管理员打开cmd窗口执行以下指令:
route -p add 172.16.80.0 mask 255.255.255.0 10.10.10.222配置端口转发
如果你有公网IP,需要暴露到公网,则可以做端口映射,比如将ssh端口映射到公网的2222端口。以爱快软路由为例:
总结
剩下的RAID 0 All on boom自己慢慢折腾了,市面上的WiFi6/7路由器百来块钱,给设备安装个支持WiFi6的无线网卡不比有线网络差,而且设备还可以随意挪动。