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 架构图
刚好迷你主机带的 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 效果截图:
能看到网卡名、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 系统是自动保存在配置文件中的,开机启动会自动连接,断线的概率很低。
板载的无线网卡,在夏天散热条件不佳的情况下,可能会遇到。
版权申明:
- 未标注来源的内容全部为原创,未经授权请勿转载(因转载后排版往往错乱、内容不可控、无法持续更新等);
- 非营利为目的,演绎本博客任何内容,请以'原文出处'或者'参考链接'等方式给出本站相关网页地址(方便读者)。
相关文章:
- 窗口管理器labwc使用记
- Rime添加dota2词库
- 剪切板管理工具clipcat推荐
- 微信小程序开发记
- 解决Arch下VSCode无法输入中文的问题
- 迷你主机组装记
- Labwc更换定制皮肤
- greetd和regreet使用教程
- 我的工具箱
- Labwc 便捷配置