PVE (基于Debian 11) WiFi 折腾

deb 离线安装 WiFi 所需软件

wpasupplicant:WiFi认证工具
iw:据说可以取代iwconfig
wireless-tools :包含iwconfig等命令
net-tools:包含ifconfig等命令
安装方法略过, 记得每个 deb 都有一到两个依赖就行, 先安装依赖.

WPA、WPA2

以前的WiFi加密是不安全的WEP,被WPA、WPA2取代,维基百科:

有线等效加密(英语:Wired Equivalent Privacy,缩写:WEP),又称无线加密协议(英语:Wireless Encryption Protocol,缩写:WEP),是个保护无线网络信息安全的体制,于1997年,由IEEE802.11制定与发布。
因为无线网络是用无线电把消息传播出去,它特别容易被窃听。WEP的设计是要提供和传统有线的局域网相当的机密性,而依此命名的。不过密码分析学家已经找出有线等效加密几个弱点,因此在2003年被Wi-Fi Protected Access (WPA)取代,随着2004年发布完整IEEE 802.11i标准,其中所制定的WPA2淘汰了WEP-40与WEP-104。

最初WEP仅适用于802.11a与802.11b,而其后的第一代WPA适用于802.11g。但随着部分厂商升级自家802.11b产品的固件,亦能采用WPA加密。

所以你看到直接在命令行中提供WiFi SSID和密码就可以连接WiFi的都是过时的教程了,必须要使用到wpa_supplicant:

wpa_supplicant -B -D wext -i wlp15s0 -c /etc/wpa_supplicant.conf

继续之前,建议先参考文档:
https://linuxcommando.blogspot.com/2013/10/how-to-connect-to-wpawpa2-wifi-network.html
https://juejin.cn/post/7115643955915522078

网络接口问题

这是安装完成后默认的网络配置:

cat /etc/network/interfaces
auto lo
iface lo inet loopback

iface wlp15s0 inet manual

auto vmbr0
iface vmbr0 inet static
        address 192.168.0.123/24
        gateway 192.168.0.1
        bridge-ports wlp15s0
        bridge-stp off
        bridge-fd 0

iface enp8s0 inet manual

这个桥接网络明显是不能使用的,而且会有网段冲突之类的问题,先ifdown掉它,把WiFi连接上再说。
这是可以正常访问网络的网络:

# ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 208  bytes 19288 (18.8 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 208  bytes 19288 (18.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlp15s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.108  netmask 255.255.255.0  broadcast 192.168.0.255
        ether e4:02:9b:53:4c:7e  txqueuelen 1000  (Ethernet)
        RX packets 7893  bytes 10110738 (9.6 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5008  bytes 532397 (519.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

这是可以正常访问网络的路由:

# ip route show
default via 192.168.0.1 dev wlp15s0
192.168.0.0/24 dev wlp15s0 proto kernel scope link src 192.168.0.108

如何使用 Linux 命令行连接到 WPA/WPA2 WiFi 网络

这一步我们就要先把网络打通,参考文章是:https://linuxcommando.blogspot.com/2013/10/how-to-connect-to-wpawpa2-wifi-network.html

  1. 首先找到 WiFi 物理网卡名称,常见的有 wlan0,但是我这个叫 wlp15s0。
# iw dev
phy#0
        Interface wlp15s0
                ifindex 3
                wdev 0x1
                addr e4:02:9b:53:4c:7e
  1. 检查无线设备是否已启动
# ip link show wlp15s0
3: wlp15s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
    link/ether e4:02:9b:53:4c:7e brd ff:ff:ff:ff:ff:ff

我这里因为已经成功了,所以是UP,应该是DOWN的。可以尝试启动:

# ip link set wlp15s0 up

不过我第一次执行该命令的时候并没有成功,但不影响,继续

  1. 检查 WiFi 连接状态
# iw wlp15s0 link
Not connected.
  1. 扫描以找出检测到的 WiFi 网络
    两种扫描方式:
# iw wlp15s0 scan | grep SSID
# iwlist wlp15s0 scan | grep ESSID
  1. 连接到 WPA/WPA2 WiFi 网络
# wpa_passphrase {SSID} >> /etc/wpa_supplicant.conf
这里没有任何提示,直接输入 WiFi 密码后回车即可,有回显

然后我们得到一个 WiFi 配置文件:

# cat /etc/wpa_supplicant.conf
# reading passphrase from stdin
network={
        ssid="xxx_5G"
        #psk="88888888"
        psk=a2684d5a639d3c1bc301e40a0d23046b73144094a77876d2d7192739ec0db550
}

开始尝试连接 WiFi :

# wpa_supplicant -B -D wext -i wlp15s0 -c /etc/wpa_supplicant.conf
Successfully initialized wpa_supplicant
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument

-B表示在后台 运行wpa_supplicant 。
-D指定无线驱动程序。 wext是通用驱动程序。(如果您使用英特尔 wifi:将 wext 替换为 nl80211。wpa_supplicant -h可以查看驱动列表)
-c指定配置文件的路径。
使用iw命令验证您确实已连接到 SSID:

# iw wlp15s0 link
Connected to b0:df:c1:87:8e:15 (on wlp15s0)
        SSID: xxx_5G
        freq: 5765
        RX: 17166166 bytes (14387 packets)
        TX: 2820770 bytes (9875 packets)
        signal: -58 dBm
        rx bitrate: 292.5 MBit/s VHT-MCS 7 80MHz VHT-NSS 1
        tx bitrate: 433.3 MBit/s VHT-MCS 9 80MHz short GI VHT-NSS 1

        bss flags:      short-slot-time
        dtim period:    1
        beacon int:     100
  1. 通过DHCP获取IP地址
# dhclient wlp15s0
# ip addr show wlp15s0
3: wlp15s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether e4:02:9b:53:4c:7e brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.108/24 brd 192.168.0.255 scope global dynamic wlp15s0
       valid_lft 77969sec preferred_lft 77969sec
  1. 添加默认路由规则
    最后的配置步骤是确保您拥有正确的路由规则。
$ ip route show 
192.168.1.0/24 dev wlp15s0 proto kernel scope link src 192.168.1.113

上面的路由表只包含 1 条规则,它将所有发往本地子网 (192.168.1.x) 的流量重定向到wlan0接口。您可能想要添加一个默认路由规则以通过wlan0传递所有其他流量。

$ sudo ip route add default via 192.168.0.1 dev wlp15s0
$ ip route show 
default via 192.168.0.1 dev wlp15s0
192.168.0.0/24 dev wlp15s0 proto kernel scope link src 192.168.0.108

持久化配置

有人回复:

非常感谢!我的 Linux Mint Debian Edition 笔记本电脑现在已连接 Wi-Fi。很棒的文章!
我只需要将步骤 7 中的路由命令更改为:
sudo route add default gw <gateway> <interface>

此外,路由和 wpa_supplicant 命令不是持久的。对于永久更改,我们必须将它们添加到 /etc/network/interfaces(对于 Debian)的 Wi-Fi 接口部分。我的结果是这样的:

auto <interface>
iface <interface> inet dhcp
wireless-essid <essid>
pre-up wpa_supplicant -B -D wext -i <interface> -c /etc/wpa_supplicant.conf
post-up route add default gw <网关> <接口>
post-down killall -q wpa_supplicant

我们再看:https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant

  1. 修改服务配置
# cat /lib/systemd/system/wpa_supplicant.service
[Unit]
Description=WPA supplicant
Before=network.target
After=dbus.service
Wants=network.target
IgnoreOnIsolate=true

[Service]
Type=dbus
BusName=fi.w1.wpa_supplicant1
#ExecStart=/sbin/wpa_supplicant -u -s -O /run/wpa_supplicant
ExecStart=/sbin/wpa_supplicant -u -s -c /etc/wpa_supplicant.conf -i wlp15s0
Restart=always

[Install]
WantedBy=multi-user.target
#Alias=dbus-fi.w1.wpa_supplicant1.service
  1. 创建dhclient服务
    创建文件:
# vi /etc/systemd/system/dhclient.service
[Unit] 
Description= DHCP Client 
Before=network.target 

[Service] 
Type=forking 
ExecStart=/sbin/dhclient wlp15s0 -v 
ExecStop=/sbin/dhclient wlp15s0 -r 
Restart=always 

[Install] 
WantedBy=multi-user.target

应用:

systemctl enable dhclient.service
  1. 配置静态IP
    追加配置文件:
# vi /etc/dhcp/dhclient.conf
interface "wlp15s0" {
     send dhcp-requested-address 192.168.0.123;
}

不建议这样配置。
确保您的 Ubuntu 系统具有静态 IP 地址的更好方法可能是登录路由器的管理界面并为您的无线网卡的 MAC 地址分配一个静态 IP,如果您的路由器支持此功能。
我们可以查看-v输出:

# systemctl status dhclient.service
● dhclient.service - DHCP Client
     Loaded: loaded (/etc/systemd/system/dhclient.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2023-05-01 02:24:30 CST; 10min ago
    Process: 801 ExecStart=/sbin/dhclient wlp15s0 -v (code=exited, status=0/SUCCESS)
   Main PID: 818 (dhclient)
      Tasks: 4 (limit: 9351)
     Memory: 6.2M
        CPU: 26ms
     CGroup: /system.slice/dhclient.service
             └─818 /sbin/dhclient wlp15s0 -v

May 01 02:24:30 pve dhclient[818]: DHCPDISCOVER on wlp15s0 to 255.255.255.255 port 67 interval 16
May 01 02:24:30 pve dhclient[818]: DHCPOFFER of 192.168.0.108 from 192.168.0.1
May 01 02:24:30 pve dhclient[818]: DHCPOFFER of 192.168.0.108 from 192.168.0.1
May 01 02:24:30 pve dhclient[818]: DHCPREQUEST for 192.168.0.108 on wlp15s0 to 255.255.255.255 port 67
May 01 02:24:30 pve dhclient[818]: DHCPREQUEST for 192.168.0.108 on wlp15s0 to 255.255.255.255 port 67
May 01 02:24:30 pve dhclient[818]: DHCPACK of 192.168.0.108 from 192.168.0.1
May 01 02:24:30 pve dhclient[818]: DHCPACK of 192.168.0.108 from 192.168.0.1
May 01 02:24:30 pve dhclient[818]: bound to 192.168.0.108 -- renewal in 34589 seconds.
May 01 02:24:30 pve dhclient[818]: bound to 192.168.0.108 -- renewal in 34589 seconds.
May 01 02:24:30 pve systemd[1]: Started DHCP Client.

apt update

PVE默认安装企业版,我们需要修改为非订阅版本:

# vi /etc/apt/sources.list.d/pve-enterprise.list
#deb https://enterprise.proxmox.com/debian/pve bullseye pve-enterprise
deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription

文档

https://pve-doc-cn.readthedocs.io/zh_CN/latest/chapter_system_administration/netconfig.html
https://juejin.cn/post/7115643955915522078
https://linuxcommando.blogspot.com/2013/10/how-to-connect-to-wpawpa2-wifi-network.html
https://www.linuxbabe.com/command-line/ubuntu-server-16-04-wifi-wpa-supplicant

posted @ 2023-04-30 22:37  develon  阅读(3098)  评论(1编辑  收藏  举报