网络设备操作手册
本页目录
沿接口、地址、路由、邻居、DNS、服务逐层缩小范围。先记录状态,再改负责该接口的管理器配置;远程维护时,地址与默认路由变更需要可用的恢复连接。
| 当前任务 | 入口 |
|---|---|
| 完全不通 | 分层定位 |
| 选错出口或 DNS | 路由与策略 |
| 配置接口 / Wi-Fi | 临时与持久配置 |
先看链路,再看地址
找接口,再判断链路
# 用简洁格式列出接口与链路标志
后文 enp1s0 替换为实际接口名;UP 是管理状态,LOWER_UP 是下层信号。
# 核对各接口的 IPv4/IPv6 地址与前缀
需要地址来源、scope、有效期时用 ip address show dev enp1s0 展开;缺地址与没有路由是不同故障。
# 读取同一接口的收发错误和丢包累计值
在同一负载下隔一段时间重查,比较增量;不要把开机以来累计值当成本次请求损失。
# 检查物理接口速率、双工和载波
虚拟接口可能不支持;驱动详细统计另用 ethtool -S enp1s0。字段含义依驱动,结合 journalctl -k -b --no-pager 的链路重置记录。
| 看到什么 | 能判断什么 | 下一步 |
|---|---|---|
| UP / LOWER_UP | 管理启用 / 下层载波是不同标志 | 无载波查线缆、交换端口、协商;虚拟接口按类型解释 |
| IP address | 有地址不代表有正确出口 | 查掩码、地址来源、有效期和 route get |
| RX/TX errors, drops | 累计值不是当前故障率 | 同一负载下比较增量,结合驱动具体计数 |
问内核:这个目标实际走哪里
向内核查询实际选路
# 查询本机到一个 IPv4 目标的实际路由选择
查看 dev、via、src;地址换成真实业务目标。测试 IPv6 时另用 ip -6 route get 2606:4700:4700::1111,IPv4 通不代表 IPv6 通。
# 查看哪些策略决定选择哪张路由表
按优先级读匹配条件;VPN、源地址和 mark 都可能影响选择。表内容下一步单独查看。
# 对照策略查询实际安装的所有路由
有 default 不代表业务使用这张表;优先复核 route get 的结果。
# 检查下一跳的 ARP/NDP 邻居状态
FAILED / INCOMPLETE 才指向解析未完成;STALE 通常无需清空,先重新发起业务观察。
解析与服务监听分别确认
# 按系统 NSS 路径解析目标名称
使用 systemd-resolved 时再查 resolvectl status 的每链路 DNS 和路由域。getent 可能包含 hosts,不等同 dig。
# 在服务所在主机检查 TCP/UDP 监听
-l 只看监听,-n 保留数字地址,-t/-u 选协议,-p 显示有权限读取的进程。127.0.0.1 监听不会直接接收远程地址请求。
route get 看 dev、via、src;策略规则、源地址和 mark 可先选路由表,表内再按最长前缀匹配,不能只看 main 的 default。邻居 STALE 通常只是尚未重新确认可达性,不应例行 flush。DNS 返回地址也不代表目标端口有监听,ping 失败也可能只是 ICMP 被过滤。
选择能区分故障层的测试
# 测试已核对的下一跳是否回应 ICMP
192.0.2.1 替换为现场网关;无回应可能是过滤,继续使用实际业务协议测试。
# 观察探测路径与发现的路径 MTU
探测报文与业务流量可能走不同策略,某跳不答不必然是该跳丢业务包。
# 一次观察 DNS、TCP、TLS 与 HTTP 到了哪一步
连接超时只限制连接阶段;需要限制整个请求可加 --max-time。读最后成功阶段,不把证书错误归因于路由。
# 仅抓取目标主机的 HTTPS TCP 流量
-n 不反查名称,-i 固定接口;替换目标地址后复现一次,观察 SYN、响应与重传,Ctrl-C 停止。若需保存,用 -w 写入本次专用文件;抓包内容可能含业务数据。
网关与目标地址替换为现场值。抓包关注 SYN 是否发出、是否收到响应、重传和接口方向;别把所有超时都归因于 DNS。/proc/net/dev 是接口统计,软中断计数在 /proc/softirqs;两者不是同一个指标。
如果只需在测试接口临时加一个地址,使用 ip address add 192.0.2.10/24 dev enp1s0;撤销这一个地址用对应 ip address del,不 flush 整个接口。192.0.2.0/24 是文档示例网段,必须替换,并先确认没有地址冲突。持久配置见下一节。
只让一个管理器负责接口
先识别接口管理器
# 查看 NetworkManager 管理状态与连接名
若接口由 systemd-networkd 管理,改用 networkctl status enp1s0 查其 Network File;不要用两个管理器同时修改一个接口。
# 把活动接口与 profile 名称/UUID 对照
后文 YOUR_PROFILE 从这里取得;名称有空格需引号,重名时改用 uuid。
# 审阅保存的 profile 与当前生效参数
记录 IPv4/IPv6 method、地址、网关、DNS 和路由,修改前保存该 profile 文件的受限备份。配置文件路径可通过 nmcli -f NAME,UUID,FILENAME connection show 查询。
只在测试接口添加临时地址
# 向已确认无冲突的测试接口添加一个地址
这是临时内核状态;用 ip address show 验证,再测同网段目标。管理器或 DHCP 可能覆盖它。
# 测试结束后仅移除本次添加的地址
这是恢复步骤,不与 add 连续执行;不要 flush 整个接口。
持久修改 NetworkManager 的 DNS
# 将已核对的 DNS 服务器保存到该 profile
示例 DNS 必须替换为可达且符合分域策略的服务器;这会替换 ipv4.dns 列表并忽略自动 IPv4 DNS。IPv6 DNS 是另一组设置,需要一起评估。
# 尝试把活动 profile 的可重应用变化加载到接口
失败不代表需要重启整机;需重新激活时在有恢复连接的窗口 nmcli connection up YOUR_PROFILE。核对 resolvectl/nmcli device show 和实际解析;回退恢复原值并重新应用。
Wi-Fi 扫描与连接分阶段
# 查看可见 SSID、信号与安全类型
隐藏 SSID、企业认证或多无线网卡时先明确配置和目标接口。
# 交互输入认证信息并连接选定网络
--ask 避免密码进入参数;连接成功后再检查 IP、route get 与业务。
VLAN:父接口与交换机必须一致
以下是在无人管理的测试接口上创建临时 VLAN 的独立示例,不能直接套到当前 SSH 接口。父接口需已有链路,交换机需允许 VLAN 100;地址按现场子网规划替换。
# 创建附着到父接口的 VLAN 100 子接口
用 ip -d link show enp1s0.100 确认父接口和 id,失败先处理再赋地址。
# 把 VLAN 子网地址放到子接口
# 启用子接口后测试该 VLAN 的邻居和业务
测试结束用 sudo ip link delete enp1s0.100 删除本次子接口;持久化时转为所选管理器的 VLAN profile,不依赖启动脚本反复 add。
Bridge:把三层地址留在桥上
仅在无业务地址的备用端口 enp2s0 上演示,br-test 应不存在;现有接口搬迁 IP/默认路由需另有控制台和完整迁移方案。
# 创建一个临时二层桥
# 将备用端口加入桥,端口本身不配业务 IP
先核对 bridge link show 的 master,再分别启用端口和桥。
# 启用桥端口链路
# 端口就绪后启用桥
无 IP 的桥只能演示二层连通;主机需要三层访问时把规划地址配置到 br-test。结束时先 ip link set dev enp2s0 nomaster,再 ip link delete br-test,并恢复端口原状态。
上面用于识别 NetworkManager/systemd-networkd,不表示两者应同时管理接口。nmcli --ask 避免把密码写进命令历史。profile 名不一定等于接口名。先备份和审阅 profile,再 modify/reapply 或重新激活;重连会影响当前 SSH。临时 ip address/route 改动可能被 DHCP 或管理器覆盖,重启也不保留。
| 变更 | 必须先确认 |
|---|---|
| 临时启停接口 | ip link set dev enp1s0 up;down 单独执行,不能写成 up / down |
| Linux bridge | 主机 IP 通常放到 bridge,端口只做二层;搬 IP 会断开旧链路 |
| VLAN | 父接口、VLAN ID、交换机 trunk 与子网同时匹配 |
| Wi-Fi 不稳定 | 查信号、频段、拥塞和监管域;DFS/信道可用性按国家与设备,不硬套信道 149 |
应用修复后重复原目标测试,并确认预期配置在重连后仍生效。规则与 NAT 见 nftables,解析分歧见 DNS,虚拟专网见 Tailscale。