---
url: https://eoht.net/fe/linux/network.md
description: >-
  查看 Linux 地址、路由、主机名和 DNS，识别 NetworkManager、systemd-networkd 或
  Netplan，并区分网络服务与防火墙的运行和开机启用状态。
---

# Linux 网络排查：IP、路由、DNS 与服务状态 {#linux-network-operations}

适用于使用 iproute2 的 Linux；`systemctl` 示例要求系统使用 systemd。网络配置由发行版、云镜像和实际网络管理器共同决定，不存在一套适用于所有 Linux 的配置文件路径。

## Linux 常用网络操作 {#common-linux-network-commands}

### 主机名操作 {#linux-hostname-commands}

```bash
hostname
hostnamectl
```

在使用 systemd 的系统上，确认新名称后可永久设置：

```bash
sudo hostnamectl set-hostname server01
```

`hostname 新名称` 通常只修改当前运行时名称。云镜像还可能由 cloud-init 管理主机名，应检查其配置，避免重启后被覆盖。

### 查询系统完整信息 {#query-linux-system-information}

```bash
uname -a
cat /etc/os-release
```

前者查看内核与架构，后者查看发行版信息。

### IP 地址与路由 {#linux-ip-address-commands}

```bash
ip -br addr
ip route
ip -6 route
ip route get 1.1.1.1
```

分别查看接口地址、IPv4 / IPv6 路由和到指定地址将采用的路由。存在 IP 地址并不意味着默认路由、DNS 或公网连接正常。

需要修改 IP 前先识别管理器：

```bash
systemctl is-active NetworkManager
systemctl is-active systemd-networkd
command -v nmcli
command -v networkctl
command -v netplan
```

`inactive` 或工具不存在不是必然故障，可能表示该系统使用另一套管理方式。按实际情况选择：

| 环境 | 查看现状 | 持久配置入口 |
| --- | --- | --- |
| NetworkManager | `nmcli connection show`、`nmcli device status` | 对应连接配置，可用 `nmcli connection edit` |
| systemd-networkd | `networkctl status` | `/etc/systemd/network/` 中的 `.network` 文件 |
| Netplan | `sudo netplan get` | `/etc/netplan/` 中的 YAML，后端可能是上述任一管理器 |
| ifupdown | 检查接口文件与服务 | `/etc/network/interfaces` 及其 include 文件 |

`/etc/sysconfig/network-scripts/` 与 `network` 服务只适用于使用旧式 network-scripts 的系统，不应作为通用 Linux 步骤。

### 域名映射与 DNS {#linux-hostname-mapping}

本机静态映射由 `/etc/hosts` 提供，可使用 `sudoedit /etc/hosts` 编辑。示例：

```text
192.0.2.10 example.test
```

`192.0.2.10` 是文档示例地址，应替换成实际目标。检查系统名称解析：

```bash
getent hosts example.test
cat /etc/resolv.conf
```

使用 systemd-resolved 时，可额外运行 `resolvectl status`。`/etc/resolv.conf` 可能由网络管理器自动生成，不应未经确认直接覆盖。

### 网络服务管理 {#linux-network-service-management}

查看与当前环境对应的一项：

```bash
systemctl status NetworkManager --no-pager
systemctl status systemd-networkd --no-pager
```

修改网络配置可能中断 SSH，应预先准备云控制台或串口访问，并保留当前会话。Netplan 环境可先用 `sudo netplan generate` 检查生成过程，再使用 `sudo netplan try` 临时应用并按提示确认；超时回退后仍应核对磁盘配置与实际连接状态。其他环境遵循所属管理器的应用方法，不要盲目执行 `service network restart`。

变更后分别验证接口地址、默认路由、DNS、目标服务连接；确认配置已持久化后再安排重启验证。

### 防火墙设置 {#linux-firewall-configuration}

以下只适用于实际安装并使用 firewalld 的系统：

```bash
systemctl status firewalld --no-pager
systemctl is-enabled firewalld
sudo firewall-cmd --list-all
```

`status` 查看当前运行状态，`is-enabled` 查看是否配置为随启动启用，两者不能互相替代。服务启停和开机配置也需区分：

| 命令 | 作用 |
| --- | --- |
| `sudo systemctl start firewalld` | 现在启动服务 |
| `sudo systemctl stop firewalld` | 现在停止服务 |
| `sudo systemctl enable firewalld` | 设置开机启用，不立即启动 |
| `sudo systemctl disable firewalld` | 取消开机启用，不立即停止 |

排查服务状态还可使用：

```bash
systemctl list-unit-files --state=enabled
systemctl --failed
```

第一项列出开机启用的 unit，不代表它们此刻都在运行。端口不可达时应同时核对监听程序、主机防火墙和云安全组，而不是默认关闭防火墙。

## Linux 学习路径 {#linux-learning-path}

网络服务或端口异常时，可结合 [Linux 进程管理](/fe/linux/process) 查找监听程序；需要回顾路径时，可返回 [Linux 目录结构](/fe/linux/directory)。

参考：[systemctl](https://www.freedesktop.org/software/systemd/man/latest/systemctl.html)、[NetworkManager nmcli](https://networkmanager.dev/docs/api/latest/nmcli.html)、[Netplan try](https://netplan.readthedocs.io/en/stable/netplan-try/)。
