使用无线网卡管理PVE 8.2并通过NAT访问虚拟机

在只有无线网络环境下部署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
2 个赞

下一步是通过frp来使用JumpServer管理PVE虚拟机

1 个赞

太强了!

看来这论坛没多少人用虚拟平台,这话题不温不火的

确实,都去搞docker了

不太懂宿主机网络桥接,我PVE上装了黑群,是用的板载千兆网口。
如果以后我买个万兆网卡插上直通给黑群,那么就必须把第二根网线插直通的万兆卡黑群才有网吗?还是和现在一样用板载千兆网口用万兆口同时都通网?

万兆网卡直通的话你黑群就有两个网络接入点,流量可以走千兆也可以走万兆

jumpserver 太吃内存了。我直接用 pve 主页管理虚拟机。

docker只适合隔离应用,不适合隔离操作系统

使用JumpServer是为了统一管理,包括公网服务器

自己用感觉增加复杂度了。统一管理方案还蛮多的,我是自己弄个服务器面板+哪吒探针,大部分时间都是直接进虚拟机去使用的。

使用这个的好处是可以拿网页来连接服务器,如果多台电脑还得将服务器信息同步到所有电脑上,太浪费时间了

感谢大佬答复,多问一嘴,两根线是一个网址吗?

两个网络两个IP

谢谢

还是容器好玩

容器还是有一些限制的,没有虚拟机可玩性高

pve太专业了 iptables玩不明白

很不错!教程写得很详细。

先mark一下,回头学习一下,现在还不太懂