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-managerapt install network-manager-gnomeGUI界面 - 卸载ifupdown
apt purge ifupdown
建议一并移除其他的DHCP客户端(并非必要)apt purge isc-dhcp-client isc-dhcp-common dhcpcd5 - 删除配置文件
rm -rf /etc/networkrm -rf /etc/dhcprm -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 NetworkManagerapt|yum remove NetworkManagerapt remove ifupdown
删除配置文件rm -rf /etc/NetworkManagerrm -rf /etc/network
如果安装了其他的DHCP客户端(ifupdown情况下常见),也要一并移除,否则会冲突导致无法获取IP,包括:isc-dhcp-client isc-dhcp-common dhcpcd5Debiandhcp-client dhcp-commonRHELdhclient dhcpcdArch
删除配置文件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.servicesystemctl enable --now systemd-resolved.servicesystemctl 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.confln -s /run/systemd/resolve/resolv.conf /etc/resolv.confsystemctl 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.network1
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管理工具,cmstGUI管理工具,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父命令直接进行操作