Ubuntu Server 配置无线网络
本文最后更新于 2023年11月14日 凌晨
本文简单记录了在 Ubuntu Server 22.04 上通过 Netplan 工具配置网络,连接到 WLAN 的过程。
准备工作
安装无线网络相关配置工具:
- network-manager - 网络管理工具
- wpasupplicant - 提供对 WPA 加密的支持
- wireless-tools - 提供 iwconfig、iwlist 等无线网络配置工具
1 |
|
查看网卡硬件:
1 |
|
根据上面的查询结果获得无线网卡名称,记住该名称。(无线网卡的名称一般以 wlan
或 wlp
开头,详情参考本文附录a。)
如果没有看到列出无线网卡,除硬件故常或接触不良外,还可能是因为无线网卡未启动。可以尝试使用如下命令将其启动:
1 |
|
扫描无线网络
在准备工作中已经安装了 wireless-tools,可以使用 iwlist 命令扫描当前环境中的 Wi-Fi 信号:
1 |
|
输出的结果非常详细,也非常长:
如果太多信息造成干扰,可以使用 Linux 的 grep 命令对输出信息进行筛选,例如:
1 |
|
编辑配置文件
进入 Netplan 配置目录,查看其中的默认配置文件:
1 |
|
此机器上的配置文件名为 50-cloud-init.yaml
。由于安装方式、系统版本等差异,配置文件的名称可能有所不同,但都是 yaml 格式、位于 /etc/netplan/
下,根据实际情况使用。使用管理员权限编辑该文件:
1 |
|
添加如下内容:
1 |
|
其中 wlan0
为无线网卡名称,dhcp4
表示开启自动IP地址分配,在 access-points 下可以设置多组 ssid(即通常所说的“Wi-Fi名称”)与密码。
更新后,配置文件内容大致如下:
1 |
|
连接网络
修改配置文件后,不要立即将其应用生效,而要先使用 netplan try 命令验证新的配置是否有效:
1 |
|
如果新的网络配置没有问题,则会出现上面的界面,按下键盘 ENTER 确认即可。如果此时本来就是通过网络以 SSH 方式控制服务器,而新的网络配置出现问题导致连接断开,也不必惊慌,等待两分钟让 netplan 恢复之前的配置即可。
1 |
|
检查是否已连接至网络(以下任一条命令均可):
1 |
|
如仍未连接至网络,可以尝试手动重启 NetworkManager 或服务器:
1 |
|
附录a:网卡设备名称简析
在使用 ifconfig -a
或 ip 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
的文件:
使用文本编辑工具打开该文件:
1 |
|
可以看到,该文件的格式与语法正是 Netplan 形式,用于在首次启动系统时初始化 Netplan 配置。参考原本注释掉的示例和本文正文,编辑该配置文件,添加 Wi-Fi 信息并保存。
完成配置文件的编辑后,将存储卡插回到树莓派中,通电开机,即会自动连接至无线网络。进入路由器后台管理,即可看到设备名为 ubuntu 的设备,记住其局域网 IP 地址,在电脑上使用 ssh 连接即可:
1 |
|
如果没有路由器的管理员权限,无法进入后台查看树莓派的 IP,可以在电脑上尝试使用 Angry IP Scanner 等 IP 扫描工具寻找。
附录c:Netplan原理简述
Netplan 本身只是一个用于网络配置的辅助小工具,它将读取 /etc/netplan/*.yaml
配置文件,然后据此生成 renderer 所需的配置文件,并重启 renderer 使修改生效。目前 Netplan 支持的 renderer 包括 NetworkManager 与 Systemd-networkd 两种。这样用户只需修改简洁清晰、YAML格式、统一的 Netplan 配置文件,而无需为每个 renderer 编辑其配置文件。