Arch/labwc 环境网络相关设置

Arch 安装的时候,没插网线的话,archinstall 会提示你使用 iwd 相关套件连接无线网络,能满足最基本的网络需求。

本文记录我的常用网络设置,主要包含 NetworkManager、iwd、Dnsmasq、waybar 相关配置。

1. 安装 NetworkManager、dnsmasq、iwd

1sudo pacman -S networkmanager dnsmasq iwd

选择 NetworkManager 功能强大,你能遇到的网络相关需求都能满足,毕竟大部分桌面环境预装,自带的 nmcli、nmtui 等工具也很好用。

Dnsmasq 在小型网络中很实用,比如家庭网络。

iwd 依赖轻,值得信赖。

2. 配置文件

在 NetworkManager 中启用 dnsmasq

1➜  ~ cat /etc/NetworkManager/conf.d/dns.conf
2[main]
3dns=dnsmasq

设置 dnsmasq 缓存

1➜  ~ cat /etc/NetworkManager/dnsmasq.d/custom-cache.conf
2cache-size=4096

cach-size 的意思是它在内存中缓存 DNS 查询结果的最大条目数量。

-c, --cache-size= Set the size of dnsmasq's cache. The default is 150 names. Setting the cache size to zero disables caching. Note: huge cache size impacts performance.

虽然 systemd-resolved 也提供类似功能,但 Dnsmasq 还能自定义域名、屏蔽广告等。另外 systemd 太庞杂了,什么都要接管的感觉。

自定义域名

示例展示自动代理、路由器各定义了一个域名,比较容易记住。

1➜  ~ cat /etc/NetworkManager/dnsmasq.d/custom-domain.conf
2address=/proxy.local/192.168.1.5
3address=/route.local/192.168.124.1

上游 DNS 设置

实测上海电信 dns 部分时候丢包,腾讯 dns 部分时候延时高。最后,选了阿里云的。

每个人网络状况不一,多测试使用选个适合自己的。

 1➜  ~ cat /etc/NetworkManager/dnsmasq.d/upstream-dns.conf
 2# aliyun
 3server=223.5.5.5
 4server=223.6.6.6
 5
 6# cf
 7server=1.1.1.1
 8
 9# 优化参数(可选,提升解析效率)
10strict-order       # 严格按配置顺序使用上游DNS(先试第一个,失败再试第二个)
11no-poll            # 禁用DNS轮询,减少资源占用
12proxy-dnssec       # 转发DNSSEC请求(提升解析安全性)

当然还可设置广告屏蔽等,常访问的网站基本没什么广告,也表示理解。

设置启用 iwd 为 WiFi 后端

1➜  ~ cat /etc/NetworkManager/conf.d/wifi_backend.conf
2[device]
3wifi.backend=iwd
4wifi.iwd.autoconnect=yes

iwd 依赖很少(请看下面👇Depends On 那一栏),只依赖内核和 C 库。

 1➜  ~ sudo pacman -Qi iwd
 2Name            : iwd
 3Version         : 3.10-1
 4Description     : Internet Wireless Daemon
 5Architecture    : x86_64
 6URL             : https://git.kernel.org/cgit/network/wireless/iwd.git/
 7Licenses        : LGPL-2.1-or-later
 8Groups          : None
 9Provides        : None
10Depends On      : glibc  readline  libreadline.so=8-64  ell  gcc-libs
11Optional Deps   : qrencode: for displaying QR code after DPP is started [installed]
12Required By     : None
13Optional For    : networkmanager
14Conflicts With  : None
15Replaces        : None
16Installed Size  : 2.18 MiB
17Packager        : Andreas Radke <andyrtr@archlinux.org>
18Build Date      : Fri 26 Sep 2025 01:46:26 PM CST
19Install Date    : Tue 09 Dec 2025 05:06:33 PM CST
20Install Reason  : Explicitly installed
21Install Script  : No
22Validated By    : Signature

不信可以看看官方 wiki

The result is a self-contained environment that only depends on the Linux Kernel and the runtime C library.

iwd 架构图

iwd architecture

刚好迷你主机带的 Intel 网卡,iwd 是 Intel 为 Linux 编写的,我还买了 Intel 的股票,赌美国会拯救牙膏厂。

1➜  ~ lspci | grep -i network
202:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)

这样一通配置,已经能满足日常网络需求。

3. waybar 网络相关配置

如果你看得上老朽的配置,建议参考仓库:https://github.com/kmephistoh/dotfiles

配置在 config/waybar 目录下可直接复用。

1"network": {
2	"format": "{icon} {essid} {signalStrength}%",
3	"format-wifi": "  {ifname} {ipaddr}/{cidr} {signalStrength}%",
4	"format-ethernet": "󰈀 {ipaddr}",
5	"format-disconnected": "󰖪 disconnected",
6	"tooltip-format": "{ifname}: {ipaddr}/{cidr} via {gwaddr}",
7	"interval": 5
8},

记得安装 nerd 字体,不然图标部分会显示方块:

1sudo pacman -S ttf-jetbrains-mono-nerd

waybar 效果截图:

waybar-network

能看到网卡名、ip 信息、无线网络信号强度等,当然显示 ssid 也是可以的,改下配置即可。

4. 其它

按照上述配置,如果足够细心,你可能会有点疑惑🤔:

1➜  ~ ps aux |grep dnsmasq
2nobody       786  0.0  0.0  14900  7680 ?        S    19:05   0:00 /usr/bin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/run/NetworkManager/dnsmasq.pid --listen-address=127.0.0.1 --cache-size=400 --clear-on-reload --conf-file=/dev/null --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d

明明我写的 cache-size=4096,为什么上面启动项参数里面还是--cache-size=400? 如何确定当前 cache-size 是生效的?

其实是生效的,验证方法是给 dnsmasq 的进程发送 SIGUSR1 信号,当 dnsmasq 收到 SIGUSR1 信号时,它会将统计信息写入系统日志。

示例如下,先使用 pgrep 命令找到 pid,再用 kill 命令发送信号(注意同时打开日志查看 journalctl -u NetworkManager -f)

1➜  ~ pgrep dnsmasq
2786
3➜  ~ sudo kill -USR1 786

同时查看日志输出

 1➜ ~ journalctl -u NetworkManager -f
 2Dec 23 19:29:54 minipc dnsmasq[786]: time 1766488194
 3Dec 23 19:29:54 minipc dnsmasq[786]: cache size 4096, 0/298 cache insertions re-used unexpired cache entries.
 4Dec 23 19:29:54 minipc dnsmasq[786]: queries forwarded 126, queries answered locally 81
 5Dec 23 19:29:54 minipc dnsmasq[786]: queries for authoritative zones 0
 6Dec 23 19:29:54 minipc dnsmasq[786]: DNSSEC per-query subqueries HWM 0
 7Dec 23 19:29:54 minipc dnsmasq[786]: DNSSEC per-query crypto work HWM 0
 8Dec 23 19:29:54 minipc dnsmasq[786]: DNSSEC per-RRSet signature fails HWM 0
 9Dec 23 19:29:54 minipc dnsmasq[786]: pool memory in use 720, max 1776, allocated 2400
10Dec 23 19:29:54 minipc dnsmasq[786]: child processes for TCP requests: in use 0, highest since last SIGUSR1 0, max allowed 20.
11Dec 23 19:29:54 minipc dnsmasq[786]: server 223.5.5.5#53: queries sent 126, retried 0, failed 0, nxdomain replies 0, avg. latency 21ms
12Dec 23 19:29:54 minipc dnsmasq[786]: server 223.6.6.6#53: queries sent 0, retried 0, failed 0, nxdomain replies 0, avg. latency 0ms
13Dec 23 19:29:54 minipc dnsmasq[786]: server 1.1.1.1#53: queries sent 0, retried 0, failed 0, nxdomain replies 0, avg. latency 0ms
14Dec 23 19:29:54 minipc dnsmasq[786]: server 192.168.124.1#53: queries sent 0, retried 0, failed 0, nxdomain replies 0, avg. latency 0ms

上面日志的输出中,包含 cache size 4096, 0/298 cache insertions re-used unexpired cache entries.,表明当前生效的的确是 4096

如果长期不关电脑、或者是路由器等,dns 缓存还是能加快网络访问速度的。

最后,万一网络掉线了,如何重连网络呢?

首先,在家里我一年到头都遇不到几次掉线。如果真的掉线,labwc 环境下,我偏向命令行操作。

  • 命令行:nmcli device wifi connect ssid password your_wifi_password
  • tui:nmtui-connect 按界面指示操作,很简单的。

还可以用 iwctl, iwd 自动的命令行工具。

1iwctl # 进入无线工具
2device list # 查无线网卡名(如 wlan0)
3station wlan0 scan # 扫描WiFi
4station wlan0 get-networks # 列WiFi列表
5station wlan0 connect "WiFi名" # 输入密码连接
6exit # 退出工具
7ping archlinux.org # 验证联网

推荐使用 nmtui-connect,毕竟谁也不想记住那么长的命令,当然还有 NetworkManager 的 各种 GUI 可供选择。

都用窗口管理器了,我看没有那个必要。

一般来说,WiFi 网络连接信息,Linux 系统是自动保存在配置文件中的,开机启动会自动连接,断线的概率很低。

板载的无线网卡,在夏天散热条件不佳的情况下,可能会遇到。

最后修改于: Tuesday, December 23, 2025
欢迎关注微信公众号,留言交流;也欢迎使用微信小程序。

相关文章:

翻译: