跳到主要内容

WIFI

快速使用

  1. 切换到超级用户模式:

    sudo su 
  2. 扫描WIFI:

    nmcli dev wifi
  3. 连接到WIFI网络(“wifi_name”和“wifi_password”需要替换为您的实际 WiFi 的 SSID 和密码。):

    nmcli dev wifi connect "wifi_name" password "wifi_password"
  4. 显示“ successfully”就成功连接无线网络了,主板下次开机会自动连接到您指定的 WiFi。

    root@linaro-alip:/home/linaro# nmcli dev wifi connect test password 123456789
    Device 'wlan0' successfully activated with 'bd88cdf5-2c04-406a-b4b6-1caaa0b1bf6c'.
    root@linaro-alip:/home/linaro#

1. Linux网络接口命名

在Linux发行版中,Debian采用的是"Predictable Network Interface Names"(可预测的网络接口命名)方案来命名网络接口。这种命名方案旨在提供一种一致和可预测的方式来标识和引用系统中的网络接口,以取代传统的非规则命名方式。它基于接口的属性、硬件位置和其他标识符来确定命名。根据"Predictable Network Interface Names"方案,网络接口的命名策略包括以下几种:

  1. 如果 Firmware 或者 BIOS 提供的板载设备的索引号可用就用此命名. 例如 eno1.
  2. 如果 Firmware 或者 BIOS 提供的 PCI-E 扩展插槽索引号可用就用此命名. 例如 ens1.
  3. 如果硬件接口的物理或者位置信息可用就用此命名. 例如 enp2s0.
  4. 如果网络接口的 MAC 地址可用就用此命名. 例如 enx525400d5e0fb
  5. 传统的内核原生命名方式. 例如 eth0.

Consistent Network Device Naming(一致的网络设备命名)是Linux中用于无线网络接口命名的规范。它旨在提供一致、可预测和稳定的命名方式,以减少系统重启或硬件更改时可能引起的接口命名变化。·在一致的网络设备命名规范中,无线网络接口的命名通常包含以下信息:

  1. 接口类型:命名以"wl"作为前缀表示无线网络接口。

  2. 设备物理位置或拓扑关系:使用一个数字作为标识符,例如"0",来表示无线网接口在系统中的位置或顺序。在默认情况下,第一个检测到的无线网接口将被命名为"wlan0",第二个为"wlan1",依此类推。

  3. 接口所在总线和设备的物理位置:使用一系列的字符和数字来表示接口所连接的总线和设备的物理位置。其中,以下字符和数字具有特定的含义:

    • w: 代表无线网络接口。
    • l: 代表内核中的网络设备(Linux)。
    • p: 代表PCI总线。
    • s: 代表槽口(slot)。
    • 数字: 代表总线和槽口的编号。

    例如,命名为"wlp3s0"的接口表示连接在PCI总线上第3个槽口的无线网络接口。

2. 使用 udev 规则分配用户定义的网络接口名称

  1. 显示所有网络接口及其 MAC 地址:

    linaro@linaro-alip:~$ sudo ip link list
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 1a:7a:d7:64:5d:56 brd ff:ff:ff:ff:ff:ff
    3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DORMANT group default qlen 1000
    link/ether b8:2d:28:43:ad:b0 brd ff:ff:ff:ff:ff:ff
  2. 使用以下内容创建文件 /etc/udev/rules.d/70-custom-ifnames.rules:

    SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="1a:7a:d7:64:5d:56",ATTR{type}=="1",NAME="eth0"
    SUBSYSTEM=="net",ACTION=="add",ATTR{address}=="b8:2d:28:43:ad:b0",ATTR{type}=="1",NAME="eth1"
  3. 重启设备:

    sudo reboot
  4. 验证每个 MAC 地址的接口名称是否与规则文件的 NAME 参数中设置的值相匹配:

    linaro@linaro-alip:~$ sudo ip link show
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    2: RJ-45: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    link/ether 1a:7a:d7:64:5d:56 brd ff:ff:ff:ff:ff:ff
    3: WIFI: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DORMANT group default qlen 1000
    link/ether b8:2d:28:43:ad:b0 brd ff:ff:ff:ff:ff:ff

3. Network Manager 简介

在上手教程中,我们学习了如何使用 nmcli 连接WiFi。本节我们将详细介绍 nmcli 的用法。

Network Manager Command-Line Interface(nmcli)是一个命令行工具,用于在 Linux 和 Unix 系统中管理网络连接。它是 Network Manager 的命令行前端,允许用户通过终端或 Shell 脚本进行网络配置和管理。nmcli可以用于创建、显示、编辑、删除、激活和停用网络连接,同时也可以控制和显示网络设备的状态。

  1. 使用 --help 查看nmcli命令组成:

    linaro@linaro-alip:~$ nmcli --help
    Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

    OPTIONS
    -o[verview] overview mode (hide default values)
    -t[erse] terse output
    -p[retty] pretty output
    -m[ode] tabular|multiline output mode
    -c[olors] auto|yes|no whether to use colors in output
    -f[ields] <field1,field2,...>|all|common specify fields to output
    -g[et-values] <field1,field2,...>|all|common shortcut for -m tabular -t -f
    -e[scape] yes|no escape columns separators in values
    -a[sk] ask for missing parameters
    -s[how-secrets] allow displaying passwords
    -w[ait] <seconds> set timeout waiting for finishing operations
    -v[ersion] show program version
    -h[elp] print this help

    OBJECT
    g[eneral] NetworkManager's general status and operations
    n[etworking] overall networking control
    r[adio] NetworkManager radio switches
    c[onnection] NetworkManager's connections
    d[evice] devices managed by NetworkManager
    a[gent] NetworkManager secret agent or polkit agent
    m[onitor] monitor NetworkManager changes
  2. 常用命令

    命令作用
    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) wlan0删除指定连接
    nmcli d status显示所有网络接口设备的状态
    nmcli d show查看设备详细信息
    nmcli d sh wlan0显示某一特定设备的详细信息
    nmcli d connect(c) wlan0连接设备
    nmcli d disconnect(c) wlan0断开设备
    • 其中 c 为 connection 的简写,d 为 device 的简写。

3.1 使用 nmcli 更改主机名

  1. 查看当前主机名:

    linaro@linaro-alip:~$ sudo nmcli general hostname
    linaro-alip
  2. 设置新主机名并重启开发板:

    linaro@linaro-alip:~$ sudo nmcli general hostname luckfox
    linaro@linaro-alip:~$ sudo rboot
  3. 如果出现 sudo: unable to resolve host luckfox: Name or service not known 只需修改/ect/hosts 中主机名即可。

    linaro@luckfox:~$ sudo vim /etc/hosts

    #将 127.0.1.1 后面的主机名修改成luckfox即可
    127.0.0.1 localhost
    ::1 localhost ip6-localhost ip6-loopback
    fe00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    127.0.1.1 luckfox

3.2 使用 hostnamectl 更改主机名

  1. 查看当前主机名:

    linaro@linaro-alip:~$ sudo hostnamectl status --static
    linaro-alip
  2. 设置新主机名并重启开发板:

    linaro@linaro-alip:~$ sudo nmcli hostnamectl set-hostname luckfox
    linaro@linaro-alip:~$ sudo rboot

3.3 配置无线网络静态 IP(nmcli)

  1. 查看设备的IP地址和默认网关等信息:

    linaro@linaro-alip:~$ sudo ip route list
    default via 192.168.11.1 dev eth0 proto dhcp metric 100
    default via 192.168.11.1 dev wlan0 proto dhcp metric 600
    192.168.8.0/22 dev eth0 proto kernel scope link src 192.168.10.63 metric 100
    192.168.8.0/22 dev wlan0 proto kernel scope link src 192.168.10.69 metric 600
  2. 列出所有已配置的网络连接及其相关属性。

    linaro@linaro-alip:~$ sudo nmcli c show
    NAME UUID TYPE DEVICE
    JSBPI-5G 2d54e176-7559-49c8-bc90-1e5e2058a523 wifi wlan0
    luckfox 2b38ada1-8c51-3b21-bdba-59f85ad1a14c ethernet eth0
  3. 设置静态 IPv4 地址、网络掩码、默认网关、DNS 服务器:

    sudo nmcli connection modify JSBPI-5G ipv4.address 192.168.10.79/24     #设置IP地址和子网掩码
    sudo nmcli connection modify JSBPI-5G ipv4.method manual #设置静态配置,默认是 auto
    sudo nmcli connection modify JSBPI-5G ipv4.gateway 192.168.11.1 #设置默认网关
    sudo nmcli connection modify JSBPI-5G ipv4.dns 114.114.114.114,8.8.8.8 #设置DNS
    sudo nmcli connection modify JSBPI-5G ipv6.method ignore #禁用IPv6
    sudo nmcli connection modify JSBPI-5G connection.autoconnect yes

3.4 配置无线网络静态 IP(nmtui)

您可以使用光标键进行导航,在选项上按Enter进行选择,按Esc键取消并返回,使用Space来选择定选项。

  1. 如果您不知道要在连接中使用的网络设备名称,显示可用的设备:

    linaro@linaro-alip:~$ sudo nmcli device status
    DEVICE TYPE STATE CONNECTION
    eth0 ethernet connected Wired connection 1
    wlan0 wifi disconnected --
    lo loopback unmanaged --
  2. 启动 nmtui:

    sudo nmtui
  3. 选择 Edit a connection ,并按Enter

  4. 按 Add 按钮。

  5. 从网络类型列表中选择 Wi-Fi,然后按 Enter

  6. 为要创建的 NetworkManager 配置文件输入一个名称,可以更容易识别配置集的用途。

  7. 在 Device 中输入网络设备名称。

  8. 在 SSID 中输入 Wi-Fi 网络的名称,即服务集标识符(SSID)。

  9. 将 Mode 设为默认值 Client。

  10. 选择 Security ,按 Enter,然后从列表中设置网络的验证类型。

  11. 填写无线网络的密码。

  12. 如果 Wi-Fi 网络需要静态 IP 地址:

    • 按协议旁边的 Automatic 按钮,然后从显示的列表中选择 Manual

    • 按您要配置的协议旁边的 Show 按钮,来显示其他字段并填写它们

    • 依次填入设置静态 IPv4 地址、网络掩码、默认网关、DNS 服务器

  13. OK 按钮来创建并自动激活新连接。

  14. 按 Back 按钮返回到主菜单。

  15. 选择 Quit,然后按 Enter 来关闭 nmtui 应用程序。