美文网首页
PVE 使用无线网卡

PVE 使用无线网卡

作者: 几簟生凉 | 来源:发表于2023-04-23 20:17 被阅读0次

    需求就是主机离路由器太远,不想用网线连接。本来我以为会很简单,但是配着配着发现真复杂,主要是无法桥接无线网卡,我劝你还是插网线。如果不听劝,那快乐地折腾起来吧。

    配置网络环境的命令很多,为了避免复杂,这里所有的配置尽可能地通过修改/etc/network/interfaces来完成,这样可以清楚地看到我们改了什么,所以先备份一下/etc/network/interfaces
    驱动网卡的过程需要网络,所以需要有线网卡支持,没有的话通过手机的usb共享网络分享一个,在使用手机的USB共享网络时,直接插电脑上是不会自动配置的,需要在/etc/network/interfaces中添加

    auto usb0
    iface usb0 inet dhcp
    

    然后重启电脑。

    去掉pve的企业软件源,mv /etc/apt/source.list.d/pve-enterprise.list /etc/apt/source.list.d/pve-enterprise.list.bak

    在用上无线网卡之前,我们主要通过显示器和键鼠操作命令行界面。

    一、驱动网卡

    这里以两个网卡为例,其一是BCM943602CS,给黑苹果用的网卡,也是我这台机器上主要用的网卡;其二是RTL8812bu,这个是之前给R2S做无线AP买的USB网卡,型号是CF-812AC,这里只用做安装驱动测试。

    开始之前先了解下怎么算驱动成功呢,一个 ip a命令就可以了,如果驱动的话会显示相应的网络接口,否则不显示。

    编译之前需要添加pve的内核头文件

    # 添加非订阅源
    deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription
    apt update
    apt install pve-headers-`uname -r`
    

    1.1 BCM4360

    BCM4360的驱动有编译好的,添加non-free源,然后添加无线驱动软件

    echo '' /etc/apt/source.list
    apt update
    apt install broadcom-sta-dkms
    modprobe wl
    

    重启下电脑然后使用ip a查看一下,是不是多了一个接口,我这里叫wlp5s0,这样就算驱动成功了。

    1.2 RTL88x2bu

    RTL88x2bu没有编译好的软件包,只能用源码自己编译了,

    apt install git
    git clone https://github.com/morrownr/88x2bu-20210702
    cd 88x2bu-20210702
    bash install-driver.sh
    reboot
    

    有的驱动源码中没有提供安装脚本的话,一般情况都是通过make && make install来编译和安装。重启后同样使用ip a确认一下是否驱动成功,我这里是wlx200db046cbe5

    二、连接wifi

    多数的wifi使用wpa/wpa2加密,想连接这种加密的wifi需要wpasupplicant支持

    apt install wpasupplicant
    

    然后修改/etc/network/interfaces文件,添加无线接口配置

    auto wlp5s0
    iface wlp5s0 inet dhcp
            wpa-ssid 你的wifi名称
            wpa-psk 你的wifi密码
    
    

    如果成功连上wifi,可以删除/etc/network/interfaces文件中usb0配置了。也可以通过分配的ip地址访问pve的web界面了。

    三、请求转发

    目前为止,咱们的无线网卡已经可以让pve上网了,但是给虚拟机配置网络的时候只能用虚拟网卡,正常情况下我们将无线网卡的网络桥接给虚拟机就好了,但是桥接无线网卡好像需要网卡支持monitor模式,总之是如何都桥接不成功,那还有一个办法就是使用转发。

    开始前,先介绍一下我现在的网络环境,路由器是OpenWRT,子网10.1.1.0/24,给pve分配的地址是10.1.1.3;在pve中新建了一个子网10.3.3.0/24,vmbr0是10.3.3.1,给虚拟机分配的地址是10.3.3.x。

    首先,打开系统转发的功能,这相当于一个总开关,修改/etc/sysctl.conf把其中net.ipv4.ip_forward=1的注释去掉,然后执行sysctl -p使配置生效。

    3.1 虚拟机访问外网

    使用iptables命令添加转发规则,也可以在/etc/network/interfaces文件中配置,这里把所有的请求都通过无线网卡转发出去就可以了,直接附上我的/etc/network/interfaces文件。

    auto lo
    iface lo inet loopback
    
    iface enp4s0 inet dhcp
    
    auto wlp5s0
    iface wlp5s0 inet dhcp
            wpa-ssid xxxx
            wpa-psk xxxxxxxx
    
    auto vmbr0
    iface vmbr0 inet static
            address 10.3.3.1/24
            bridge-ports none
            bridge-stp off
            bridge-fd 0
    
    post-up iptables -t nat -A POSTROUTING -o wlp5s0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -o wlp5s0 -j MASQUERADE
    

    重启电脑,目前,桥可以正常上网了,但是当桥和虚拟机连接时虚拟机还是不能上网,因为虚拟机并不知道目前所处网络的环境,必须手动设置ip才能正常上网,所以我们可以给虚拟桥接口配置一个dhcp服务器,这样所有的虚拟机就可以通过dhcp客户端自动获得ip地址了。

    3.2 外网访问虚拟机

    这就稍微麻烦了,首先,你的路由需要手动配置路由的功能,把所有目的地址是10.3.3.0/24的请求路由到10.1.1.3,然后,在pve中,把请求转发到虚拟网卡。
    第一步中,我用的OpenWRT,在网络|路由|静态IPv4路由中添加一条规则,接口填LAN,目标10.3.3.0/24,网关10.1.1.3。这样当路由器下的设备访问10.3.3.0/24时,请求就会到10.1.1.3
    第二步,添加一条iptables规则就好了,还是直接上/etc/network/interfaces文件:

    auto lo
    iface lo inet loopback
    
    iface enp4s0 inet dhcp
    
    auto wlp5s0
    iface wlp5s0 inet dhcp
            wpa-ssid xxxx
            wpa-psk xxxxxxxx
    
    auto vmbr0
    iface vmbr0 inet static
            address 10.3.3.1/24
            bridge-ports none
            bridge-stp off
            bridge-fd 0
    
    post-up iptables -t nat -A POSTROUTING -o wlp5s0 -j MASQUERADE;iptables -t nat -A POSTROUTING -d 10.3.3.0/24 -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -o wlp5s0 -j MASQUERADE; iptables -t nat -D POSTROUTING -d 10.3.3.0/24 -o vmbr0 -j MASQUERADE
    

    折腾半天突然发现,外网能ping通虚拟机,可以通过浏览器访问网络,但是远程桌面连不上,SSH连不上。。。

    四、DHCP服务器

    安装dhcp服务器,安装完会自动启动,会有些错误,请忽略,因为咱们还没配置呢。

    # 安装dhcp服务器
    apt install isc-dhcp-server
    # 备份一下默认的配置
    mv /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
    

    编辑/etc/dhcp/dhcpd.conf文件,填入以下内容新建一个子网,网段和虚拟网桥的网段;dns是我的主路由和一个公共dns;routers 是虚拟网桥的地址,注意虚拟网桥的地址设置为10.3.3.1/24而不是10.3.3.1/32,否则网络不能经过网桥转发。

    subnet 10.3.3.0 netmask 255.255.255.0 {
      range 10.3.3.10 10.3.3.99;
      option domain-name-servers 10.1.1.1, 8.8.4.4;
      option routers 10.3.3.1;
    }
    

    给vmbr0指定dhcp服务,修改/etc/default/isc-dhcp-server文件如下,

    INTERFACESv4=”vmbr0″
    

    使用service isc-dhcp-server restart启动dhcp服务。

    五、补充

    参考

    1. https://unix.stackexchange.com/questions/175810/how-to-install-broadcom-bcm4360-on-debian-on-macbook-pro
    2. https://blog.csdn.net/lixifun/article/details/125452382
    3. https://cloud.tencent.com/developer/article/1374873

    相关文章

      网友评论

          本文标题:PVE 使用无线网卡

          本文链接:https://www.haomeiwen.com/subject/xjdsjdtx.html