在只有无线网络环境下部署PVE(Proxmox Virtual Environment)时,通过无线网卡可以更灵活地管理PVE和访问虚拟机。此外,利用NAT(网络地址转换)技术,可以使虚拟机访问外部网络,满足上网需求的同时,也可以通过外部网络访问虚拟机。
网络环境
网络组件 | 描述 | IP地址范围 | 接口 |
---|---|---|---|
WiFi网络 | PVE连接的无线网络 | 172.167.0.0/24 | wlp4s0 |
虚拟机桥接网络 | PVE虚拟机使用的桥接网络 | 10.10.254.0/24 | vmbr0 |
详细步骤
安装PVE系统
假设已经成功安装并配置了PVE 8.2。此步骤略过。
查看无线网卡
登录到PVE所在的服务器,打开终端,输入以下命令以查看网络接口:
ip a
这条命令会显示所有的网络接口信息。如果看到类似wlan0或wlp3s0的条目,说明无线网卡已被识别。
离线安装wpasupplicant
在无法直接连接互联网的情况下,可以通过以下方法离线安装wpasupplicant。首先,在有网络连接的机器上下载wpasupplicant的Debian包:
访问Debian包网站下载适合的 wpasupplicant
包,并将其传输到PVE服务器上。然后,在PVE服务器上执行以下命令进行安装:
dpkg -i /path/to/wpasupplicant.deb
配置无线网络连接
安装完成后,使用wpa_passphrase命令生成psk。假设你的无线网络SSID为“YourSSID”,密码为“YourPassword”,执行以下命令:
wpa_passphrase YourSSID YourPassword
该命令会输出如下内容:
network={
ssid="YourSSID"
psk=***********
}
将生成的psk值添加到网络接口配置文件中,修改/etc/network/interfaces文件:
nano /etc/network/interfaces
* 动态IP配置(DHCP)
通过DHCP获取IP地址,添加如下内容:
auto wlp4s0
iface wlp4s0 inet dhcp
wpa-ssid YourSSID
wpa-psk ***********
* 静态IP配置
使用静态IP地址,添加如下内容:
auto wlp4s0
iface wlp4s0 inet static
address 172.167.0.111/24
gateway 172.167.0.254
wpa-ssid YourSSID
wpa-psk *************
保存退出后重启。
reboot
设置NAT
首先,打开系统转发的功能,这相当于一个总开关,修改 /etc/sysctl.conf
把其中 net.ipv4.ip_forward=1
的注释去掉,然后执行 sysctl -p
使配置生效。
在PVE上配置NAT,使虚拟机可以通过无线网卡访问外部网络。首先,编辑网络接口配置文件:
nano /etc/network/interfaces
添加如下内容:
auto vmbr0
iface vmbr0 inet static
address 10.10.254.254/24
bridge_ports none
bridge_stp off
bridge_fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up bash /root/iptables.config.sh
自定义NAT脚本
# 设置NAT,让10.10.254.0/24的数据走wlan0网卡
iptables -t nat -A POSTROUTING -s '10.10.254.0/24' -o wlp4s0 -j MASQUERADE
iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
# 设置端口转发, 让路由器下的设备能访问到虚拟机
# 把访问 172.167.0.111 指定端口的流量转发到虚拟机对应的IP
iptables -t nat -A PREROUTING -i wlp4s0 -p tcp --dport 3389 -j DNAT --to-destination 10.10.254.1:3389
# 设置默认路由,将所有未知目的地的数据包发送到 wlan0 网络接口上,并将它们的下一跳设置为 172.167.0.254
ip route add default via 172.167.0.254 dev wlp4s0
ip route flush cache
172.167.0.254
为我的WiFi网关
根据自己的配置修改端口以及IP
完整的配置文件
* /etc/network/interfaces
auto lo
iface lo inet loopback
iface eno1 inet manual
iface enp3s0 inet manual
auto wlp4s0
iface wlp4s0 inet dhcp
wpa-ssid YourSSID
wpa-psk ***********
auto vmbr0
iface vmbr0 inet static
address 10.10.254.254/24
bridge-ports none
bridge-stp off
bridge-fd 0
post-up echo 1 > /proc/sys/net/ipv4/ip_forward
post-up bash /root/iptables.config.sh
source /etc/network/interfaces.d
* /root/iptables.config.sh
iptables -t nat -A POSTROUTING -s '10.10.254.0/24' -o wlp4s0 -j MASQUERADE
iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
iptables -t nat -A PREROUTING -i wlp4s0 -p tcp --dport 3389 -j DNAT --to-destination 10.10.254.1:3389
ip route add default via 172.167.0.254 dev wlp4s0
ip route flush cache