Ubuntu Server 配置无线网络

本文最后更新于:2023年11月13日 晚上

本文简单记录了在 Ubuntu Server 22.04 上通过 Netplan 工具配置网络,连接到 WLAN 的过程。

准备工作

安装无线网络相关配置工具:

  • network-manager - 网络管理工具
  • wpasupplicant - 提供对 WPA 加密的支持
  • wireless-tools - 提供 iwconfig、iwlist 等无线网络配置工具
1
sudo apt install network-manager wpasupplicant wireless-tools

查看网卡硬件:

1
2
3
ifconfig -a
# 或者使用
ip a

网卡设备列表示例,此图中已经通过无线网卡wlan0连接至无线局域网

根据上面的查询结果获得无线网卡名称,记住该名称。(无线网卡的名称一般以 wlanwlp 开头,详情参考本文附录a。)

如果没有看到列出无线网卡,除硬件故常或接触不良外,还可能是因为无线网卡未启动。可以尝试使用如下命令将其启动:

1
sudo ifconfig wlan0 up  # 启动名为 wlan0 的网络设备

扫描无线网络

在准备工作中已经安装了 wireless-tools,可以使用 iwlist 命令扫描当前环境中的 Wi-Fi 信号:

1
sudo iwlist wlan0 scan  # 注意将 wlan0 换成实际无线网卡的设备名

输出的结果非常详细,也非常长:

无线网络扫描结果

如果太多信息造成干扰,可以使用 Linux 的 grep 命令对输出信息进行筛选,例如:

1
2
sudo iwlist wlan0 scan | grep ESSID  # 仅查看 Wi-Fi 名称
sudo iwlist wlan0 scan | grep -E "Quality|ESSID" # 查看 Wi-Fi 名称和网络质量

仅列出所有Wi-Fi名称,可以看到中文名称都变成了编码,难以识别

编辑配置文件

进入 Netplan 配置目录,查看其中的默认配置文件:

1
2
3
$ cd /etc/netplan/
$ ls
50-cloud-init.yaml

此机器上的配置文件名为 50-cloud-init.yaml。由于安装方式、系统版本等差异,配置文件的名称可能有所不同,但都是 yaml 格式、位于 /etc/netplan/ 下,根据实际情况使用。使用管理员权限编辑该文件:

1
sudo vim /etc/netplan/50-cloud-init.yaml

添加如下内容:

1
2
3
4
5
6
wifis:
wlan0:
dhcp4: true
access-points:
"你的ssid":
password: "你的密码"

其中 wlan0 为无线网卡名称,dhcp4 表示开启自动IP地址分配,在 access-points 下可以设置多组 ssid(即通常所说的“Wi-Fi名称”)与密码。

更新后,配置文件内容大致如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
network:
version: 2
renderer: NetworkManager

ethernets:
eth0:
dhcp4: true
optional: true

wifis:
wlan0:
dhcp4: true
access-points:
"wifi_name1":
password: "mypassword"
"666":
password: "66666666"

连接网络

修改配置文件后,不要立即将其应用生效,而要先使用 netplan try 命令验证新的配置是否有效:

1
sudo netplan try  # 检查配置文件中是否有语法错误、尝试用新的配置

netplan try

如果新的网络配置没有问题,则会出现上面的界面,按下键盘 ENTER 确认即可。如果此时本来就是通过网络以 SSH 方式控制服务器,而新的网络配置出现问题导致连接断开,也不必惊慌,等待两分钟让 netplan 恢复之前的配置即可。

1
2
sudo netplan generate  # 生成 renderers 所需的配置文件
sudo netplan apply # 应用 netplan 新配置,将自动重启 network-manager 使修改生效

检查是否已连接至网络(以下任一条命令均可):

1
2
3
iwconfig
ifconfig
ip a

如仍未连接至网络,可以尝试手动重启 NetworkManager 或服务器:

1
2
sudo systemctl restart NetworkManager.service
sudo reboot

附录a:网卡设备名称简析

在使用 ifconfig -aip a 列出本机所有网卡设备名称时,可能看到若干名称,其含义简单分析如下:

  • lo 表示 local
  • en 表示 ethernet 以太网
  • wl 表示 wlan,即 Wireless Local Area Network 无线局域网
  • 后面的 p2s0 等表示 PCIe 接口的物理位置(bus, slot),总线与插槽

例如, wlp4s0 表示一张位于 PCIe 总线4 插槽0 的无线网卡。

附录b:树莓派连接无线网络

在使用新安装 Ubuntu Server 系统的树莓派时,可能遇到手头没有显示器、也没有有线网络连接的情况。这时本可以通过电脑 SSH 连接至树莓派进行远程开发,但前提是树莓派必须已经接入无线局域网络;而为了让树莓派接入网络,又需要用 SSH 连接后才能修改 Netplan 配置文件,陷入僵局。解决问题的办法是,在树莓派系统启动之前就完成对网络的配置:通过修改安装着树莓派的操作系统的存储卡中的特定文件即可实现。

将存储卡通过读卡器连接到电脑,可以看到 system-boot 和 writable 两个分区,打开 system-boot 分区,搜索名为 network-config 的文件:

system-boot/network-config

使用文本编辑工具打开该文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# This file contains a netplan-compatible configuration which cloud-init will
# apply on first-boot (note: it will *not* update the config after the first
# boot). Please refer to the cloud-init documentation and the netplan reference
# for full details:
#
# https://netplan.io/reference
# https://cloudinit.readthedocs.io/en/latest/topics/network-config.html
# https://cloudinit.readthedocs.io/en/latest/topics/network-config-format-v2.html
# ...

# Some additional examples are commented out below

network:
version: 2

ethernets:
eth0:
dhcp4: true
optional: true

# wifis:
# wlan0:
# dhcp4: true
# optional: true
# access-points:
# myhomewifi:
# password: "S3kr1t"
# myworkwifi:
# password: "correct battery horse staple"
# workssid:
# auth:
# key-management: eap
# method: peap
# identity: "me@example.com"
# password: "passw0rd"
# ca-certificate: /etc/my_ca.pem

可以看到,该文件的格式与语法正是 Netplan 形式,用于在首次启动系统时初始化 Netplan 配置。参考原本注释掉的示例和本文正文,编辑该配置文件,添加 Wi-Fi 信息并保存。

完成配置文件的编辑后,将存储卡插回到树莓派中,通电开机,即会自动连接至无线网络。进入路由器后台管理,即可看到设备名为 ubuntu 的设备,记住其局域网 IP 地址,在电脑上使用 ssh 连接即可:

1
ssh ubuntu@192.168.3.24

如果没有路由器的管理员权限,无法进入后台查看树莓派的 IP,可以在电脑上尝试使用 Angry IP Scanner 等 IP 扫描工具寻找。

附录c:Netplan原理简述

Netplan 本身只是一个用于网络配置的辅助小工具,它将读取 /etc/netplan/*.yaml 配置文件,然后据此生成 renderer 所需的配置文件,并重启 renderer 使修改生效。目前 Netplan 支持的 renderer 包括 NetworkManagerSystemd-networkd 两种。这样用户只需修改简洁清晰、YAML格式、统一的 Netplan 配置文件,而无需为每个 renderer 编辑其配置文件。

Netplan工作流程

参考


Ubuntu Server 配置无线网络
https://muzing.top/posts/9cbf7452/
作者
Muzing
发布于
2023年5月14日
更新于
2023年11月13日
许可协议