Linux网络管理
关于网卡
目前的主流网卡为使用以太网络协定所开发出来的以太网卡 (Ethernet),因此 Linux 就称呼这种网络接口为 ethN (N 为数字)。 举例来说,主机上面有一张以太网卡,那么主机的网络接口命名就是 eth0 (从第一张为 0 号开始)。
然而,从 systemd v197 开始,对于网卡的编号有另一套规则 (Predictable Network Interface Names,可预测网络接口命名规则) ,网卡的界面代号与网卡的来源有关,网卡名称是这样分类的:
en:表示以太网Ethernet
wl:表示无线局域网WLAN
ww:表示无线广域网WWAN
o:主板板载网卡,集成设备的设备索引号
p:独立网卡,PCI网卡
s:热插拔网卡,USB之类的扩展槽索引号
nnn(数字):MAC地址+主板信息计算得出的唯一序列
eno1:代表由主板内置的网卡
ens1:代表由主板内置的 PCI-E 接口的网卡
enp2s0:代表 PCI-E 接口的独立网卡,可能有多个插槽,因此会有 s0, s1… 的编号
eth0:如果上述的名称都不适用,就回到原本的默认网卡编号
wlp3s0:PCI无线网卡
wlp0s2f1u4u1:连接在USB上的无线网卡
命名流程
- 如果从BIOS中能够获取到可用的板载网卡的索引号,则使用这个索引号命名。例如: eno1。然后进行下一步。
- 如果从BIOS中能够获取到可以用的,网卡所在的PCI-E热插拔插槽(PCI槽位号)的索引号,则使用这个索引号命名。例如:ens1。然后进行下一步。
- 如果能拿到设备所连接的物理位置(PCI总线号+槽位号)信息,则使用这个信息命名。例如:enp2s0。然后进行下一步。
- 前面三个都获取不到,回退到传统的Kernel命名方法,例如:eth0。
- 使用网卡的MAC地址来命名,一般不会这么做。
systemd的对应行为流程
按照如下顺序执行udev的rule
/usr/lib/udev/rules.d/60-net.rules
,使用/lib/udev/rename_device这个程序对网卡进行重命名。/usr/lib/udev/rules.d/71-biosdevname.rules
,如果系统中安装了biosdevname,且内核参数指定biosdevname=1,且上一步没有重命名网卡,则按照biosdevname的命名规范,从BIOS中取相关信息来命名网卡。要求SMBIOS的版本要高于2.6,且系统中要安装biosdevname程序。/lib/udev/rules.d/75-net-description.rules
,检查网卡信息,填写这些udev属性值:ID_NET_NAME_ONBOARD,ID_NET_NAME_SLOT,ID_NET_NAME_PATH,ID_NET_NAME_MAC/usr/lib/udev/rules.d/80-net-name-slot.rules
,如果在60-net.rules ,71-biosdevname.rules这两条规则中没有重命名网卡,且内核指定net.ifnames=1参数,则udev依次尝试使用以下属性值来命名网卡:ID_NET_NAME_ONBOARD,ID_NET_NAME_SLOT,ID_NET_NAME_PATH,如果这些属性值都没有,则放弃网卡重命名。
可见网卡命名受 biosdevname和net.ifnames这两个内核参数影响。这两个参数都可以在grub配置中提供,biosdevname=0是系统默认值(Dell服务器默认是1),net.ifnames=1是系统默认值。
修改命名方式
- 修改
/etc/default/grub
,在GRUB_CMDLINE_LINUX=
后添加net.ifnames=0[或1] biosdevname=1[或0]
- 执行
grub-mkconfig -o /boot/grub/grub.cfg
或update-grub
,两者等效
- 内核参数组合使用的时候,其结果如下:
biosdevname=0,net.ifnames=1:网卡名 “enp5s2”
biosdevname=1,net.ifnames=0:网卡名 “em1”
biosdevname=0,net.ifnames=0:网卡名 “eth0” (最传统的方式,eth0 eth1)
要点
- 如系统BIOS符合要求,且系统中安装了biosdevname,且biosdevname=1启用,则biosdevname命名优先。
- 如果BIOS不符合biosdevname要求或biosdevname=0,则仍然是ifnames优先。
- 如果用户自己定义了udev rule来修改内核设备名字,则用户规则最优先。
不同网络管理工具的比较
目前的主流网络管理工具有以下几种:
ifupdown(Debian预装),netconfig(SUSE和旧版本RHEL预装),NetworkManager(新版本RHEL预装),Netplan(Ubuntu预装),Netctl(Arch预装),systemd-networkd(任何一个systemd发行版都有预装,但是默认不启用),ConnMan(一些轻量级发行版和嵌入式系统使用)
ifupdown
ifupdown是由Debian开发的简化网络配置的高级工具,最早可追溯到早期的netscript
配置工具,它由ifup
,ifdown
,ifquery
命令,/etc/network/interfaces
(/etc/network/interfaces.d/*
)配置文件和network.service
(或networking.service
)服务,搭配resolvconf
(自动获取DNS服务器),isc-dhcp-client
或dhcpcd5
(在interfaces
中配置DHCP时自动调用),bridge-utils
(配置网桥时调用),ppp
(配置PPPoE时调用)和wpasupplicant
/wirless-tools
(配置无线网络时自动调用)进行自动化网络配置,interfaces
文件有一套独特但不难理解的语法。这是一种很传统的方法,对有线网和服务器很有效,但对于无线网则略显麻烦。ifup
命令用于启动网络接口,ifdown
命令用于关闭网络接口,它们的选项如下:
1 | -n 伪执行 |
ifquery
命令用于查询网络接口状况,它的选项如下:
1 | 空 查询是否存在指定的网络接口 |
ifupdown2
ifupdown2是古老的ifupdown的完全升级,它由Cumulus Networks使用Python语言开发。
ifupdown2仍然由ifup
,ifdown
,ifquery
命令,/etc/network/interfaces
(/etc/network/interfaces.d/*
)配置文件和network.service
(或networking.service
)服务组成,需要搭配独立的DHCP客户端,无线网络后端等等使用。ifup
命令用于启动网络接口,ifdown
命令用于关闭网络接口,它们的选项如下:
1 | -n 伪执行 |
ifquery
命令用于查询网络接口状况,它的选项如下:
1 | -a 显示所有配置内容 |
netconfig
netconfig是一个模块化的管理网络配置的工具,它被旧版本的RHEL和CentOS,以及SUSE采用。它由netconfig
命令,存储在/etc/sysconfig/network/config
(RHEL中为/etc/sysconfig/network
和/etc/sysconfig/network-scripts/ifcfg-网络接口名
)的网络脚本,和network.service
服务组成。网络可以配置的参数都在脚本中有明显显示,只需要按需要修改后重启服务即可完成网络配置。netconfig
命令有以下操作选项:
1 | --bootproto=dhcp|bootp|none 使用的协议 |
/etc/sysconfig/network
内容如下:
1 | NETWORKING=yes/no # 网络是否被配置 |
/etc/sysconfig/network-scripts/ifcfg-网络接口名
内容如下:
1 | DEVICE=name # 网络接口设备名 |
NetworkManager
Networkmanager由红帽开发,是一个为系统提供检测和配置功能以便自动连接到网络的程序,它对无线和有线网络都很好用。Networkmanager提供了NetworkManager.service
服务,nmcli
管理工具和基于curses的nmtui
终端图形化管理工具,配置文件在/etc/NetworkManger/NetworkManager.conf
。NetworkManager守护进程启动后,会自动连接到已配置且可用的“系统连接”和“用户连接”,未配置的连接则需要通过nmcli进行配置才能连接。
NetworkManager还有network-manager-gnome
和network-manager-kde
的GUI前端,以及cockpit-networkmanager
的WebUI前端。
在配置文件中,plugins=ifupdown,...
可以配置NetworkManager的插件。dns=
可以选择NetworkManager使用的DNS客户端(一般为dnsmasq,设置为none可以禁用)。dhcp=
可以选择NetworkManager使用的DHCP客户端(dhclient、dhcpcd、internal),默认为internal,即NetworkManager内置的DHCP客户端。managed=
可以配置网络管理工具兼容,如果managed设置为true,NetworkManager将不会配置在interfaces文件中列出的有线/无线网卡,在interfaces中列出有线/无线网卡的配置将会生效;如果managed设置为false,NetworkManager将会管理配置所有的有线/无线网卡,interfaces中的配置无效。
如果dbus中存在wpa_supplicant.service服务,那么NetworkManager会自动使用wpa_supplicant作为无线网络后端,而不是内置的无线网络后端。
桌面端的Linux发行版基本都使用NetworkManager(也可能是ConnMan),因为它有对无线网络的良好支持和优秀的图形界面管理工具,不建议更换,否则会导致各种不可预料的问题,轻则有网络但图形界面下始终显示断网,重则损坏图形界面组件,无法进入图形界面。
从ifupdown迁移到NetworkManager
虽然NetworkManager可以和ifupdown兼容并自动配置,但NetworkManager本身的功能就已经足够强大了,没有保留ifupdown的必要。
- 安装NetworkManager
apt install network-manager
apt install network-manager-gnome
GUI界面 - 卸载ifupdown
apt purge ifupdown
建议一并移除其他的DHCP客户端(并非必要)apt purge isc-dhcp-client isc-dhcp-common dhcpcd5
- 删除配置文件
rm -rf /etc/network
rm -rf /etc/dhcp
rm -f /etc/NetworkManager/01-ifupdown
- 修改NetworkManager配置
编辑/etc/NetworkManager/NetworkManager.conf
,删除ifupdown
相关内容,添加dhcp=internal
Netplan
Netplan实际上是一个网络配置生成器,它需要搭配NetworkManager
或systemd-networkd
工作(在Ubuntu服务器版为systemd-networkd,桌面版则为NetworkManager),通过Netplan可以让一个配置文件适用于多种管理工具,只需要写一个yaml
文件,而且语法相对简单。如图所示:
![[netplan.png]]
systemd-networkd
systemd-networkd 是systemd套件的一部分,一个管理网络配置的系统守护进程。它会在网络设备出现时检测和配置;还可以创建虚拟网络设备。它由networkctl
命令,systemd-networkd
服务和按优先级从低到高排列的 /usr/lib/systemd/network
目录、 /run/systemd/network
目录、 /etc/systemd/network
目录中的网络配置文件构成。
它的配置文件在/etc/systemd/networkd.conf
,/etc/systemd/networkd.conf.d/*.conf
和/usr/lib/systemd/networkd.conf.d/*.conf
。
这个服务适用于简单的网络配置,对被 systemd-nspawn 管理的容器或者虚拟机的复杂网络配置尤其有用。它有内置的DHCP客户端支持,而对无线网络的支持则可以通过搭配其他应用,比如 wpa_supplicant 或 iwd,对配置好的无线适配器进行WiFi请求。
注意,systemd-networkd没有原生支持PPPoE。
它的网络配置文件名一般为*.network
,内容格式基本如下:
1 | [Match] |
对于无线网络,在此处配置好后,无线网卡就进入了等待发送请求的状态,之后可以通过修改wpa_supplicant的配置文件wpa_supplicant-wlp?s?.conf
添加WiFi网络,然后systemctl start wpa_supplicant@wlp?s?.service
进行无线网络请求连接了。也可以直接启用wpa_supplicant.service
的主服务,让systemd-networkd通过dbus与wpa_supplicant交互。
从NetworkManager(或ifupdown)切换到systemd-networkd
首先请确定systemd版本中有networkd功能,否则请安装systemd-networkd
包
禁用或移除NetworkManager(ifupdown)
systemctl disable NetworkManager
apt|yum remove NetworkManager
apt remove ifupdown
删除配置文件rm -rf /etc/NetworkManager
rm -rf /etc/network
如果安装了其他的DHCP客户端(ifupdown情况下常见),也要一并移除,否则会冲突导致无法获取IP,包括:isc-dhcp-client isc-dhcp-common dhcpcd5
Debiandhcp-client dhcp-common
RHELdhclient dhcpcd
Arch
删除配置文件rm -rf /etc/dhcp
使用.network文件配置网络
/etc/systemd/network
目录存放自定义配置文件,如果不存在的话请自行创建
创建/usr/lib/systemd/network/20-dhcp.network
并写入以下通用配置内容1
2
3
4
5[Match]
Name=en*[,wl*] # 方括号内为无线网卡
[Network]
DHCP=yes启用networkd和resolved服务
systemctl enable --now systemd-networkd.service
systemctl enable --now systemd-resolved.service
systemctl enable --now systemd-networkd-wait-online.service
可选:等待网络配置完成,类似于ifupdown-wait-online.service
。”完成“意味着systemd-networkd配置的网络接口至少有一个进入”degraded(failed)”或以上状态systemctl enable --now systemd-network-generator.service
可选:将内核中的网络配置转换为.network文件并存储在/run/systemd/network/重写resolv.conf,使用systemd-resolved的方案一,这一步并非必要,但强烈推荐这么做
rm /etc/resolv.conf
ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
systemctl restart systemd-resolved.service
配置静态IP
或许你想给某个接口配置静态IP,以enp3s0
为例,在/etc/systemd/network
创建10-enp3s0.network
文件,输入以下内容1
2
3
4
5
6
7[Match]
Name=enp3s0
[Network]
Address=192.168.10.50/24 # 注意CIDR格式
Gateway=192.168.10.1
DNS=8.8.8.8配置完后别忘了重启服务。
网桥
如果要创建网桥,那么需要创建相对应的netdev设备并把网络接口接入。
首先在/etc/systemd/network
创建bridge0.netdev
,写入以下内容1
2
3[NetDev]
Name=br0
Kind=bridge然后在enp3s0的网络设置下加入以下内容
1
2[Network]
Bridge=br0接着,创建网桥的网络配置
/etc/systemd/network/bridge0.network
1
2
3
4
5
6
7[Match]
Name=br0
[Network]
Address=192.168.10.100/24
Gateway=192.168.10.1
DNS=8.8.8.8最后重启服务,你可以用 brctl 工具 来验证是否创建好了网桥 br0。网卡聚合的流程也类似。
无线网络
systemd-networkd的无线网络请求需要搭配wpa_supplicant
实现,在systemd-networkd处配置完无线网卡后,对wpa_supplicant进行配置(启动dbus服务或由模板创建的独立服务),systemd-networkd会自动转交给它进行认证连接。
ConnMan
ConnMan 是一个命令行网络管理器,内置 DNS,DHCP 与 NTP 支持,可以通过wpa_supplicant、bluez 与 openvpn 分别实现 Wi-Fi、蓝牙与 VPN 功能,专门为嵌入式设备和轻量级系统设计。它由connmanctl
管理工具,cmst
GUI管理工具,connman.service
服务构成,/etc/connman/main.conf
是它的配置文件,网络接口自动生成的配置文件保存在/var/lib/connman/
下的对应子目录中。
ConnMan与其他网络管理工具冲突,启用ConnMan服务前应禁用其他网络管理服务。
对有线连接,ConnMan有内置的DHCP客户端,采取自动处理的方式。
对于无线连接,ConnMan会通过dbus总线与wpa_supplicant通讯,如果没有开启wpa_supplicant.service服务,连接无线网络会报错Input/Output Error。connmanctl
可以直接在后面调用子命令,也可以进入交互模式后使用子命令。connmanctl technologies
可以查看设备支持的网络接口,connmanctl enable|disable wifi|ethernet
可以启用|禁用相关网络接口。connmanctl scan wifi
可以扫描附近的wifi,connmanctl services
可以列出可用网络及其对应的Hash网络名,然后便可以通过connmanctl connect name
连接网络,可能会要求密码。
通过connmanctl config ethernet_xxxxx --ipv4 manual IP 子网掩码 网关IP
设置静态IP
其他子命令一览如下:
1 | help: 帮助菜单 |
main.conf中有一些配置项:
1 | [General] |
如果手动创建网络配置文件,应当保存在/var/lib/connman/文件名.config
内容如下
1 | # 使用DHCP的有线网络 |
1 | # 使用静态IP的无线网络 |
Netctl
Netctl是由Arch开发组开发的网络管理工具,它使用wpa_supplicant
连接WiFi,使用dhcpclient
或dhcpcd
作为DHCP客户端,使用wifu-menu
作为前端,使用ppp
作为PPPoE拨号客户端,使用resolvconf
作为DNS管理工具。
它由/etc/netctl/
中的配置文件,netctl-*.service
服务和netctl
管理工具组成。
配置文件
一个最基本的DHCP配置文件/etc/netctl/dhcp
:
1 | Description='描述' |
一个静态IP配置文件/etc/netctl/static-ip
:
1 | Description='描述' |
一个无线网络配置文件/etc/netctl/wlan
:
1 | Description='描述' |
你也可以使用wpa_supplicant管理WiFi密码
一个bond配置文件/etc/netctl/bond
:
1 | Description='描述' |
修改/etc/netctl/hooks/dhcp
以修改使用的DHCP客户端:
1 | #!/bin/sh |
命令
启动netctl-auto.service
开始自动配置过程netctl start 配置文件
启用一个配置文件netctl enable 配置文件
开机时自动启用配置文件netctl disable 配置文件
禁用配置文件netctl reenable 配置文件
重载配置文件
其他
ifupdown(networking.service)与NetworkManager是可以共存的,当配置了/etc/network或interfaces时,NetworkManager自动停止管理网络,由配置文件interfaces内的参数对网络进行管理,并自动会将managed参数改为true。
当ifupdown与ConnMan并用时,ifupdown的配置优先级在前。
systemd-networkd可以与NetworkManager并存,NetworkManager会自动解析关系。
systemd-networkd和ConnMan并用时,ConnMan会覆盖网络配置。
更早期的网络管理工具还有linuxconf 、redhat-config-network、 system-config-network-tui、system-config-network等,在这里不谈。
RHEL系配置静态IP
直接使用nmtui
Debian系配置静态IP
在/etc/interfaces中配置相应网络接口
systemd-networkd配置静态IP
在/etc/systemd/network中编写自定义.network文件
Netplan配置静态IP
修改/etc/netplan/00-installer-config.yaml,在使用的网卡下添加以下内容
1 | network: |
然后执行netplan apply
使其生效
DHCP客户端
DHCP客户端用于在使用DHCP配置IP的情况下发送DHCP请求并获取主机IP。
isc-dhcp-client
有时候包名也会叫做dhclient
,是ISC的标准DHCP客户端,它可以搭配脚本型网络管理程序(如ifupdown, netconfig)实现初始化DHCP注册。它是单次程序,没有守护进程。
dhcpcd
较新的DHCP客户端实现。它使用守护进程的方式,会在后台监测DHCP情况,在租用时间到期后自动进行重新请求。
网络管理工具内置的DHCP客户端
NetworkManager,systemd-networkd,ConnMan等大多数现代网络管理工具都有内置的DHCP客户端,但是如果检测到系统中安装了其它的DHCP客户端(例如以上两种),它们会被自动禁用。
无线网络后端
以上大部分网络管理工具要接入无线网,都需要引入一个无线网络请求者程序,主要有iw和wpa_supplicant这两种。
iw
是iwconfig的继位者,可用于open,WEP两种认证模式的使用。由iw
主干命令和其子命令组成。
修改网卡模式iw dev 网卡设备名 set type ibss
一般为ibss,设置前可能需要关闭网卡,使用ip命令设为down即可。
搜索接入点iw dev 网卡设备名 scan
接入接入点iw dev 网卡设备名 connect "网络ID"
无认证iw dev 网卡设备名 connect "网络ID" key 0:密码
WEP认证
iw只支持到WEP认证。
wpa_supplicant
功能比iw更为强大,支持的网卡功能更多,支持 WEP、WPA 和 WPA2认证,可以在桌面、笔记本甚至嵌入式系统中使用。由主程序wpa_supplicant
,密码工具 wpa_passphrase
和文字界面前端 wpa_cli
三个命令,/etc/wpa_supplicant/
中的脚本和配置文件wpa_supplicant[-wlxxx].conf
与wpa_supplicant.service
服务组成。可以进行手动接入和服务化配置。
配置文件
主配置文件为wpa_supplicant.conf
,设备配置文件为wpa_supplicant[-wlxxx].conf
,但如果要使用5G频段,还需要创建/etc/default/crda
文件并写入REGDOMAIN=CN|US|...
地区,因为不同地区的5G频段是不同的。
手动接入
在主配置文件wpa_supplicant.conf
中写入
1 | ctrl_interface=/run/wpa_supplicant |
使用wpa_supplicant命令wpa_supplicant -B -i 网卡名 -c /etc/wpa_supplicant/wpa_supplicant.conf
1 | -B 在后台运行。 |
然后启动wpa_cli
,你会看到网络扫描的命令行。输入scan
进行扫描后输入scan_results
查看扫描结果,然后根据网络的SSID,运行add_network 编号
,set_network 编号 ssid "SSID"
,set_network 编号 key_mgmt 识别模式,没有为NONE,不设定为PSK
,set_network 编号 psk "密码"
,enable_network 编号
,即可连接。若要更新设置并保存,输入save_config
。
快速生成配置wpa_passphrase 网络名 密码 >> /etc/wpa_supplicant/wpa_supplicant.conf
按设备自动配置
在网络管理工具处配置好无线网卡后,创建/etc/wpa_supplicant/wpa_supplicant-网卡设备名.conf
,写入或导入以下内容:
1 | ctrl_interface=/run/wpa_supplicant |
与systemd-networkd一起使用
首先创建systemd-networkd配置文件/etc/systemd/networkd/20-dhcp.network
,内容如下:
1 | [Match] |
然后创建/etc/wpa_supplicant/wpa_supplicant-网卡设备名.conf
,内容如下:
1 | ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev |
然后使用systemd启动wpa_supplicant@网卡设备名.service
即可。
也可以启动wpa_supplicant.service
服务,然后手动连接。
iwd
iwd是Intel开发的无线网络守护程序。该项目的核心目标是不依赖任何外部库,而是最大程度地利用Linux内核提供的功能来优化资源利用。
它由/etc/iwd/
中的配置文件,/var/lib/iwd
中的密码文件,守护进程iwd.service
,管理工具iwctl
,监控工具iwmon
和GUI管理工具iwgtk
组成。可以独立工作,也可以和ConnMan、systemd-networkd和NetworkManager这样更完善的网络管理器结合使用。
启动iwd.service
服务,然后就可以使用iwctl
工具进行管理,注意,用户必须在netdev
组中,或者有管理员权限。
配置文件
配置文件/etc/iwd/main.conf
内容如下,有需要时只需要将想要调整的选项写入即可:
1 | [General] # 总配置 |
手动接入
进入iwctl
交互式控制台
输入device list
列出无线设备station 设备名 scan
扫描网络station 设备名 get-networks
获取可用网络station 设备名 connect SSID
连接网络,如果要求输入网络密码,将会提示用户输入iwctl --passphrase 密码 station 设备名 connect SSID
连接时给出密码wsc list
查看支持WPS/WSC的设备wsc 设备名 push-button
开始进行WSC连接station 设备名 disconnect
断开WiFidevice|station 设备名 show
查看设备信息known-networks list
查看记住的网络known-networks SSID forget
忘记网络
使用密码文件
密码文件保存在/var/lib/iwd
中,文件名格式为SSID.加密协议
,内容格式如下:
WPA-PSK:/var/lib/iwd/SSID.psk
1 | [Security] |
EAP-PWD:/var/lib/iwd/SSID.8021x
1 | [Security] |
EAP-PEAP:/var/lib/iwd/SSID.8021x
1 | [Security] |
TTLS-PAP:/var/lib/iwd/SSID.8021x
1 | [Security] |
与systemd-networkd一起使用
首先创建/etc/iwd/main.conf
,写入以下内容:
1 | [General] |
创建systemd-networkd配置文件/etc/systemd/networkd/20-dhcp.network
,内容如下:
1 | [Match] |
创建密码文件/var/lib/iwd/SSID.psk
,内容如下:
1 | [Security] |
然后重启systemd-networkd.service
和iwd.service
即可。
也可以通过iwctl
进行手动连接。
蓝牙
bluez
(bluetooth
包)是Linux蓝牙管理套件,由/etc/bluetooth
和/etc/default/bluetooth
配置文件,bluetooth.service
服务和bluetoothctl
管理命令组成。
如果蓝牙服务状态未激活,则必须先启用它,才能使用蓝牙控制命令。
修改/etc/default/bluetooth
,设置BLUETOOTH_ENABLED=1
。
启动蓝牙bluetoothctl power on
启用代理(生成配对码)bluetoothctl agent on
检查默认代理bluetooth default-agent
扫描蓝牙设备bluetoothctl scan on
停止扫描bluetoothctl scan off
扫描时会显示类似以下内容的输出信息
1 | Discovery started |
所有蓝牙设备都标记为Device,后跟它们各自的MAC地址。
Bluetoothctl还会在输出中尝试显示设备的名称,例如ruwido BLE。
配对蓝牙设备bluetoothctl pair FC:69:47:7C:9D:A3
这会与指定MAC地址的设备尝试进行蓝牙配对。
列出已配对设备bluetoothctl paired-devices
列出配对过的所有设备bluetoothctl devices
连接蓝牙设备bluetoothctl connect FC:69:47:7C:9D:A3
对于已经配对过的设备,可以使用connect命令简单地连接到它们
信任|取消信任蓝牙设备bluetoothctl trust|untrust FC:69:47:7C:9D:A3
信任的蓝牙设备在可用时会自动连接
断开蓝牙设备的连接bluetoothctl disconnect FC:69:47:7C:9D:A3
取消蓝牙设备的配对bluetoothctl remove FC:69:47:7C:9D:A3
开启可被发现bluetoothctl discoverable on
开启可被配对bluetoothctl pairable on
阻止蓝牙设备(禁止对方申请配对)bluetoothctl block FC:69:47:7C:9D:A3
进入交互式命令行bluetoothctl
进入后可以省去bluetoothctl父命令直接进行操作