23. wifi#
本章配套视频介绍:
《15-无线网卡连接WiFi和蓝牙》
https://www.bilibili.com/video/BV1Y24y1A7xH/
如果想使用无线功能,可以使用外接usb或者mini-pcie无线网卡来支持,
23.1. LubanCat无线网卡支持列表#
LubanCat-RK3576系列板卡支持 MINI PCI-E 接口及 USB接口 的无线网卡
网卡型号 |
接口 |
工作频率 |
理论最高速率 |
支持协议 |
AP模式 |
蓝牙 |
MT7601U |
USB |
2.4GHz |
150Mbps |
b/g/n |
不支持 |
无 |
RTL8811CU |
USB |
5/2.4GHz |
433Mbps |
b/g/n/ac |
支持 |
无 |
RTL8821CU |
USB |
5/2.4GHz |
433Mbps |
b/g/n/ac |
支持 |
BT4.2 |
RTL8188CE |
PCIE |
2.4GHz |
150Mbps |
b/g/n |
支持 |
无 |
RTL8188EE |
PCIE |
2.4GHz |
150Mbps |
b/g/n |
支持 |
无 |
RTL8822CE |
PCIE |
5/2.4GHz |
866Mbps |
b/g/n/ac |
支持 |
BT5.0 |
RTL8852BE |
PCIE |
5/2.4GHz |
1200Mbps |
b/g/n/ac/ax |
支持 |
BT5.2 |
Intel7265 |
PCIE |
5/2.4GHz |
866Mbps |
b/g/n/ac |
仅支持2.4GHz |
BT4.2 |
Intel8260 |
PCIE |
5/2.4GHz |
866Mbps |
b/g/n/ac |
仅支持2.4GHz |
BT4.2 |
BCM43225 |
PCIE |
2.4GHz |
300Mbps |
b/g/n |
不支持 |
BT3.0 |
AX210 |
PCIE |
5/2.4GHz |
2400Mbps |
b/g/n/ac/ax |
支持 |
BT5.3 |
如果需要适配其他型号的网卡,需要设置调整内核驱动或者移植网卡驱动,不是任意网卡插上就能用,也不要听某些商家说免驱,Linux下网卡没有免驱说法。
注意
野火不保证适配任意网卡,建议使用野火适配了的,或自行适配驱动。
23.1.1. MINI PCI-E#
购买链接(仅供参考):
23.1.2. USB#
USB无线网卡不能带flash,带flash的不能正常使用
购买链接(仅供参考):
23.1.3. iperf3测速#
下面为iperf3实测性能
型号 |
2.4G连接 |
5G连接 |
2.4G热点 |
5G热点 |
|---|---|---|---|---|
rtl8822ce |
发98/收102 Mbps |
发610/收726 Mbps |
发108/收71.9 Mbps |
发101/收106 Mbps |
rtl8188ce |
发44.6/收57.2 Mbps |
不支持 |
发20.8/18.6 Mbps |
不支持 |
rtl8188ee |
发84/收50 Mbps |
不支持 |
发26.1/21.3 Mbps |
不支持 |
intel7265 |
发80/收78 Mbps |
发404/收655 Mbps |
发56.9/收69.8 Mbps |
不支持 |
intel8260 |
发73.2/收81.3 Mbps |
发410/收681 Mbps |
发61/收55.9 Mbps |
不支持 |
23.2. pcie网卡连接图#
具体的连接方法可以前往 《MINI PCI-E接口》 查看
23.3. 桌面系统配置wifi#
桌面右上角点击,打开选项,找到WiFi的选择网络或者WiFi设置
在弹出的窗口中选择需要连接的WiFi,然后右下角选择连接,然后输入WiFi密码即可连接。
23.4. 命令行连接wifi路由器#
命令行配置wifi的方法有很多,下面介绍几种常用的wifi工具
nmtui 图形化的NetworkManager网络配置
nmcli(NetworkManager Command Line) 系统官方使用的工具 -- 桌面的wifi控制由该工具提供, 特点:简单好用
wpa_cli(开源社区的网络工具)比较多人使用的wifi工具 特点:资料多,配置后简单快捷
23.4.1. nmtui#
进入图形配置
1sudo nmtui
移动键盘方向键移动到
Active a connection按Enter键进入wifi设置
然后移动方向键到你要连接的wifi,按
Enter键如果是连接未连接的有密码的热点则进入输入密码界面
如果是没有密码或者已连接的热点则连接热点或者取消连接热点
备注
使用有些网卡(如rtl8821cu),系统会生成两个网络接入点p2p0和wlan0, wifi使用哪个节点连接都可以,使用p2p0会方便设置, 使用wlan0会比较符合广大网友们的习惯
第一次连接有密码的热点时,如图下
输入密码后,就可以看到wifi已连接
如果想要断开wifi,在已连接的状态按下 Enter键 就可以断开连接
23.4.2. nmcli#
1# 列出可用的wifi接入点, list可以省略
2sudo nmcli dev wifi list
3
4# 连接热点PPP, 连接成功后,就会自动生成配置文件,以后要再连接,可以使用nmcli connectio up mySSID命令了
5sudo nmcli dev wifi connect PPP password '00000000' ifname wlan0
6
7#如果连接成功后,下次想再连接,就可以使用
8sudo nmcli dev wifi connect PPP
9
10#更多nmcli的命令可以使用来查看
11nmcli help
12nmcli OBJECT help
nmcli命令组成
nmcli [OPTIONS] OBJECT { COMMAND | help }
1OPTIONS
2 -o[verview] overview mode (hide default values)
3 -t[erse] terse output
4 -p[retty] pretty output
5 -m[ode] tabular|multiline output mode
6 -c[olors] auto|yes|no whether to use colors in output
7 -f[ields] <field1,field2,...>|all|common specify fields to output
8 -g[et-values] <field1,field2,...>|all|common shortcut for -m tabular -t -f
9 -e[scape] yes|no escape columns separators in values
10 -a[sk] ask for missing parameters
11 -s[how-secrets] allow displaying passwords
12 -w[ait] <seconds> set timeout waiting for finishing operations
13 -v[ersion] show program version
14 -h[elp] print this help
15
16
17#OBJECT可以用缩写表示
18
19OBJECT
20 g[eneral] NetworkManager's general status and operations
21 n[etworking] overall networking control
22 r[adio] NetworkManager radio switches
23 c[onnection] NetworkManager's connections
24 d[evice] devices managed by NetworkManager
25 a[gent] NetworkManager secret agent or polkit agent
26 m[onitor] monitor NetworkManager changes
27
28
29Command 可以通过 nmcli OBJECT help 来获得
下列列举部分常用的命令
命令 |
作用 |
|---|---|
nmcli n |
显示 NetworkManager 是否接管网络设置 |
nmcli n on |
设定 NetworkManager 接管网络 |
nmcli n off |
取消 NetworkManager 接管网络 |
nmcli c status |
查看连接简略信息 |
nmcli c show |
查看连接详细信息 |
nmcli c up/down ifname |
启动/关闭指定连接(ifname 网卡) |
nmcli c show(s) ifname |
查看ifname网卡的连接详细信息 |
nmcli c delete(de) ens33 |
删除指定连接 |
nmcli d status |
查看设备简略信息 |
nmcli d show |
查看设备详细信息 |
nmcli d sh ens33 |
显示某一特定设备的详细信息 |
nmcli d connect(c) ens33 |
连接设备 |
nmcli d disconnect(c) ens33 |
断开设备 |
1#先列出连接的配置,eth0现在连接的是Wired connection 1
2
3root@lubancat:~# nmcli c s
4NAME UUID TYPE DEVICE
5Wired connection 1 35ecb023-3194-3edb-bf90-4198f82329a8 ethernet eth0
6Wired connection 2 45f86cca-f8df-376e-8aad-37e10d2a65ce ethernet --
7aEBF_Guest fb1d506e-6dc7-4c5b-a4ce-339f3349d26d wifi wlan0
然后对Wired connection 1进行修改
1#静态ip设置
2sudo nmcli c modify 'aEBF_Guest' [ + | - ]选项 选项值 # 或
3
4sudo nmcli c m 'aEBF_Guest' ipv4.address 192.168.103.172/24 # 修改 IP 地址和子网掩码
5sudo nmcli c m 'aEBF_Guest' ipv4.method manual # 修改为静态配置,默认是 auto
6sudo nmcli c m 'aEBF_Guest' ipv4.gateway 192.168.103.254 # 修改默认网关
7sudo nmcli c m 'aEBF_Guest' ipv4.dns 8.8.8.8 # 修改 DNS
8sudo nmcli c m 'aEBF_Guest' +ipv4.dns 114.114.114.114 # 添加一个 DNS
9sudo nmcli c m 'aEBF_Guest' ipv6.method disabled # 将 IPv6 禁用
10sudo nmcli c m 'aEBF_Guest' connection.autoconnect yes # 开机启动
11
12注意,必须先修改 ipv4.address,然后才能修改 ipv4.method!
13用空引号""代替选项的值,可将选项设回默认值(以 ipv4.method 为例):
详细的文档连接
23.4.3. wpa_cli#
1#使能wifi
2wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
3
4#进入专用控制台,默认选择wlan0
5wpa_cli
6
7#添加网络,获取网络id号
8add_network
9
10#假设id号为2
11#设置需要连接的wifi名称
12set_network 2 ssid "PPP"
13
14#设置wifi的安全性:wpa
15set_network 2 key_mgmt WPA-PSK
16
17#设置需要连接的密码
18set_network 2 psk "88888888"
19
20#使能wifi
21enable_network 2
22
23#保存wifi信息
24save_config
25
26#列出所有在列表里的wifi以及序号
27list_networks
28
29#根据序号选择你要连接的wifi
30select_network 2
31
32#查看连接的WiFi
33status
34
35#退出
36quit
37
38#自动获取IP
39dhclient wlan0
语句 |
功能 |
举例 |
|---|---|---|
quit |
退出模式 |
quit |
scan |
扫描wifi |
scan |
scan_results |
查看扫描结果 |
scan_results |
new_password |
更换新密码 |
new_password 1 "密码" |
disale_network |
禁止WiFi |
disale_network 2 |
list_networks |
列出所有在列表里的wifi以及序号 |
list_networks |
select_network |
根据序号选择你要连接的wifi |
select_network 2 |
remove_network |
移除你不想要的wifi |
remove_network 2 |
disconnect |
停止wifi的连接 |
disconnect |
reconnect |
重新连接wifi |
reconnect |
help |
查看更多的选项 |
help |
当然也可以直接修改配置文件 /etc/wpa_supplicant/wpa_supplicant.conf
可以按照格式添加,然后在使用wpa_cli工具进行配置
1ctrl_interface=/var/run/wpa_supplicant
2update_config=1
3
4network={
5 ssid="PPP"
6 psk="88888888"
7 key_mgmt=WPA-PSK
8}
23.4.4. 开启无线热点#
23.4.4.1. nmcli#
(NetworkManager Command Line)
1热点-72Mbps WIFI4
2#使用该方法只能创建出WIFI4的热点,理论速率可达72Mbps,实测速率在50Mbps,换算大约6MB/s
3
4#5g
5sudo nmcli device wifi hotspot ifname wlan0 con-name AP-5G ssid LubanCat-AP-5G band a channel 36 password 88888888
6
7#2.4g
8sudo nmcli device wifi hotspot ifname wlan0 con-name AP-2.4G ssid LubanCat-AP-2.4G band bg channel 6 password 88888888
9
10#band 无线协议 bg-2.4G a-5G
11#channel 信道 可百度科普修改使用,可以下载 “网速管家”wifi分析中查看
12#无线名字 - ssid
13#密码 - password
14#con-name 连接名,如果首次创建成功后可以直接使用
15
16sudo nmcli device wifi hotspot
17
18#查看热点信息以及密码
19sudo nmcli device wifi show-password
20#如果需要连接外网,即设备可以通过wifi连接到互联网上,就需要设置转发(假设网口能够连接互联网)
21echo 1 > /proc/sys/net/ipv4/ip_forward
22#如果eth1联网的话,可以把eth0换成eth1
23iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
23.4.4.2. hostapd#
使用该方法可能稳定性会比较差,有时可能会断连的情况 下面是两个频率的wifi热点理论速率 - 2.4G - 72Mbps - 5G - 150Mps(802.11.n)单天线最大-150Mps
实测速率
2.4G - 50Mbps 大约6MB/s
5G - 120Mbps 大约15MB/s
23.4.4.2.1. 安装依赖#
1#下载工具hostapd 和 dhcpd
2sudo apt install hostapd isc-dhcp-server
23.4.4.2.2. 创建配置文件#
2.4G详细的配置
2G.conf5G详细的配置
5G.confhostapd配置里每个详细数据的详解
hostapd.conf
修改 /etc/hostapd/hostapd.conf 文件
1sudo vi /etc/hostapd/hostapd.conf
2#简化版(5G)
3
4interface=wlan0
5ctrl_interface=/var/run/hostapd
6ssid=LuBanCat-5G
7channel=36
8wpa=2
9wpa_passphrase=password
10
11driver=nl80211
12beacon_int=100
13hw_mode=a
14ieee80211n=1
15wme_enabled=1
16ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
17wpa_key_mgmt=WPA-PSK
18wpa_pairwise=CCMP
19max_num_sta=8
20wpa_group_rekey=86400
21
22
23#简化版(2.4G)
24
25interface=wlan0
26ctrl_interface=/var/run/hostapd
27ssid=LuBanCat-2.4G
28channel=6
29wpa=2
30wpa_passphrase=password
31
32driver=nl80211
33beacon_int=100
34hw_mode=g
35ieee80211n=1
36wme_enabled=1
37ht_capab=[SHORT-GI-20][SHORT-GI-40][HT40+]
38wpa_key_mgmt=WPA-PSK
39wpa_pairwise=CCMP
40max_num_sta=8
41wpa_group_rekey=86400
修改 /etc/dhcp/dhcpd.conf
1#在末尾加入以下内容:
2
3subnet 192.168.0.0 netmask 255.255.255.0
4{
5range 192.168.0.2 192.168.0.10;
6option routers 192.168.0.1;
7option domain-name-servers 192.168.0.1,114.114.114.114,8.8.8.8;
8}
9
10其中114.114.114.114是全国通用DNS地址,8.8.8.8则是全球通用DNS地址
23.4.4.2.3. 设置脚本#
用于关闭sta模式,打开ap模式以及关闭ap模式,打开sta模式
关闭sta模式,打开ap模式
1#创建脚本
2vi ap-start.sh
3#给予权限
4sudo chmod +x ap-start.sh
5
6#!/bin/bash
7bash -c "echo 1 > /proc/sys/net/ipv4/ip_forward"
8# 开启防火墙NAT转发(如果本机使用eth1上网,则把eth0改为eth1)
9iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
10# 关闭NetworkManager对无线网卡的控制
11nmcli d disconnect wlan0
12# 设置并启动无线网卡
13ifconfig wlan0 192.168.0.1 netmask 255.255.255.0
14# 解锁无线设备,可以用rfkill list查看解锁结果.
15rfkill unblock wlan
16# 睡眠6秒,待rfkill解锁生效
17sleep 6s
18# 启动dhcpd和hostapd,如果hostapd无法启动请查看日志hostapd.log,查看这两个进程ps -ef|egrep "dhcpd|hostapd"
19nohup hostapd /etc/hostapd/hostapd.conf >/home/cat/hostapd.log 2>&1 &
20dhcpd wlan0 -pf /var/run/dhcpd.pid
21ps -ef|head -n1 && ps -ef|egrep "dhcpd|hostapd"
关闭ap模式,打开sta模式
1#创建脚本
2vi ap-stop.sh
3#给予权限
4sudo chmod +x ap-stop.sh
5
6#!/bin/bash
7killall hostapd dhcpd
8bash -c "echo 0 > /proc/sys/net/ipv4/ip_forward"
9nmcli d connect wlan0
10nmcli d disconnect wlan0
11nmcli d connect wlan0
当我们打开ap模式时,需要有3个进程,不然会开启失败
如果失败可以使用
1cat /home/cat/hostapd.log
2#查看失败的原因
可以根据失败原因到百度上找出问题