# 网络基础配置

URL: https://caijiao.org/rockylinux/network-basics
Source: docs/rockylinux/network-basics.md
Description: 详细介绍 Rocky Linux 中的网络配置基础知识，包括网络接口管理、IP 配置、网络服务控制等内容

网络配置是 Rocky Linux 系统管理中的重要组成部分。正确配置网络接口、IP 地址、路由表和网络服务对于确保系统的网络连接和通信至关重要。本教程将详细介绍 Rocky Linux 中的网络基础配置知识和常用工具。

## 网络接口基础

### 网络接口概述

网络接口是系统与网络通信的物理或逻辑连接点。在 Rocky Linux 中，网络接口可以是：

- **物理接口**：如以太网（eth0、enp0s3）、Wi-Fi（wlan0、wlp3s0）、光纤等
- **虚拟接口**：如回环接口（lo）、VLAN 接口、桥接接口等
- **逻辑接口**：如隧道接口、虚拟网卡等

Rocky Linux 使用可预测的网络接口命名规则，常见的命名格式包括：

- `en` - 以太网接口
- `wl` - 无线局域网接口
- `ww` - 无线广域网接口
- `lo` - 回环接口

命名规则通常包含设备类型、总线信息和设备序号，例如 `enp0s3` 表示：

- `en` - 以太网
- `p0` - PCI 总线 0
- `s3` - 插槽 3

### 查看网络接口信息

#### 使用 ip 命令

`ip` 命令是现代 Linux 系统中用于网络配置的主要工具，它替代了传统的 `ifconfig` 命令。

```bash
# 查看所有网络接口及其状态
ip addr show

# 或简写形式
ip a

# 查看特定接口
ip addr show eth0

# 查看网络接口的链接状态
ip link show

# 或简写形式
ip l
```

#### 使用 nmcli 命令

NetworkManager 是 Rocky Linux 中默认的网络管理工具，`nmcli` 是其命令行接口。

```bash
# 查看所有网络接口
nmcli device

# 查看所有连接配置
nmcli connection

# 查看特定设备的详细信息
nmcli device show eth0
```

#### 使用 NetworkManager 文本界面

```bash
# 启动 nmtui 文本界面
nmtui
```

## IP 地址配置

### 静态 IP 地址配置

在服务器环境中，通常需要为网络接口配置静态 IP 地址。有多种方法可以实现这一点。

#### 方法 1：使用 nmcli 命令

```bash
# 创建新的网络连接配置
nmcli connection add con-name "static-eth0" ifname eth0 type ethernet ip4 192.168.1.100/24 gw4 192.168.1.1

# 设置 DNS 服务器
nmcli connection modify "static-eth0" ipv4.dns "8.8.8.8,8.8.4.4"

# 启用自动连接
nmcli connection modify "static-eth0" connection.autoconnect yes

# 激活连接
nmcli connection up "static-eth0"
```

#### 方法 2：编辑网络配置文件

在 Rocky Linux 中，NetworkManager 的配置文件位于 `/etc/NetworkManager/system-connections/` 目录下。

```bash
# 列出所有连接配置文件
sudo ls -la /etc/NetworkManager/system-connections/

# 编辑特定连接配置
sudo vim /etc/NetworkManager/system-connections/static-eth0.nmconnection
```

示例配置文件内容：

```ini
[connection]
type=ethernet
interface-name=eth0
autoconnect=yes

[ethernet]

[ipv4]
method=manual
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;8.8.4.4;

[ipv6]
method=disabled
```

修改配置后重新加载：

```bash
# 重载网络连接
sudo nmcli connection reload

# 激活连接
sudo nmcli connection up static-eth0
```

### 动态 IP 地址配置

对于客户端机器或开发环境，可以使用 DHCP 自动获取 IP 地址。

```bash
# 创建 DHCP 连接
nmcli connection add con-name "dhcp-eth0" ifname eth0 type ethernet

# 激活连接
nmcli connection up "dhcp-eth0"
```

或编辑配置文件：

```ini
[connection]
type=ethernet
interface-name=eth0
autoconnect=yes

[ethernet]

[ipv4]
method=auto

[ipv6]
method=disabled
```

### 临时配置 IP 地址

如果需要临时配置 IP 地址，可以使用 `ip` 命令：

```bash
# 设置临时 IP 地址
ip addr add 192.168.1.100/24 dev eth0

# 添加默认网关
ip route add default via 192.168.1.1 dev eth0

# 临时添加 DNS 服务器（编辑 /etc/resolv.conf）
sudo vim /etc/resolv.conf
```

注意：使用 `ip` 命令进行的临时配置在系统重启后会丢失。

## 路由配置

### 查看路由表

```bash
# 查看路由表
ip route show

# 或简写形式
ip r

# 查看详细的路由信息，包括策略路由
ip route show table all
```

### 添加和删除路由

#### 临时路由

```bash
# 添加默认网关
ip route add default via 192.168.1.1 dev eth0

# 添加网络路由
ip route add 10.0.0.0/8 via 192.168.1.254 dev eth0

# 删除路由
ip route del 10.0.0.0/8
```

#### 持久化路由

要使路由配置在系统重启后保留，可以通过以下方法：

1. **使用 nmcli**：

```bash
# 添加持久化路由
nmcli connection modify "static-eth0" +ipv4.routes "10.0.0.0/8 192.168.1.254"

# 重新激活连接
nmcli connection up "static-eth0"
```

2. **使用路由配置文件**：

创建 `/etc/sysconfig/network-scripts/route-eth0` 文件：

```bash
sudo vim /etc/sysconfig/network-scripts/route-eth0
```

添加路由信息：

```
10.0.0.0/8 via 192.168.1.254 dev eth0
```

## DNS 配置

### DNS 解析基础

DNS（域名系统）将域名解析为 IP 地址，是网络通信的重要组成部分。在 Rocky Linux 中，DNS 配置主要通过以下文件管理：

- `/etc/resolv.conf` - DNS 解析器配置文件
- `/etc/hosts` - 本地主机名解析文件

### 配置 DNS 服务器

#### 使用 nmcli 配置 DNS

```bash
# 设置 DNS 服务器
nmcli connection modify "static-eth0" ipv4.dns "8.8.8.8,8.8.4.4"

# 应用设置
nmcli connection up "static-eth0"
```

#### 直接修改 resolv.conf

注意：在使用 NetworkManager 的系统中，`/etc/resolv.conf` 通常是符号链接或由 NetworkManager 动态生成的。建议通过 NetworkManager 配置 DNS。

如果需要直接修改：

```bash
# 备份原始文件
sudo cp /etc/resolv.conf /etc/resolv.conf.bak

# 编辑 resolv.conf
sudo vim /etc/resolv.conf
```

添加 DNS 服务器：

```
nameserver 8.8.8.8
nameserver 8.8.4.4
```

### 本地主机名解析

`/etc/hosts` 文件允许你在本地将主机名映射到 IP 地址，而不需要 DNS 服务器。

```bash
sudo vim /etc/hosts
```

添加本地解析条目：

```
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.100 server.example.com server
```

## 网络服务管理

### NetworkManager 服务

NetworkManager 是 Rocky Linux 中默认的网络管理服务。

```bash
# 查看 NetworkManager 服务状态
systemctl status NetworkManager

# 启动 NetworkManager
systemctl start NetworkManager

# 停止 NetworkManager
systemctl stop NetworkManager

# 重启 NetworkManager
systemctl restart NetworkManager

# 设置开机自启
systemctl enable NetworkManager

# 禁用开机自启
systemctl disable NetworkManager
```

### 网络接口控制

```bash
# 启用网络接口
nmcli device set eth0 managed yes

# 禁用网络接口
nmcli device set eth0 managed no

# 关闭网络接口
ip link set eth0 down

# 开启网络接口
ip link set eth0 up
```

### 网络连接管理

```bash
# 列出所有网络连接
nmcli connection show

# 激活网络连接
nmcli connection up "static-eth0"

# 断开网络连接
nmcli connection down "static-eth0"

# 删除网络连接
nmcli connection delete "static-eth0"

# 重新加载所有连接配置
nmcli connection reload
```

## 高级网络配置

### 配置多个 IP 地址

可以为单个网络接口配置多个 IP 地址。

```bash
# 使用 nmcli 添加额外的 IP 地址
nmcli connection modify "static-eth0" +ipv4.addresses "192.168.1.101/24"

# 激活连接
nmcli connection up "static-eth0"

# 临时添加 IP 地址
ip addr add 192.168.1.102/24 dev eth0
```

### 配置 VLAN 接口

虚拟局域网（VLAN）允许在物理网络上创建多个逻辑网络。

```bash
# 安装 VLAN 工具
sudo dnf install vconfig -y

# 加载 8021q 模块
sudo modprobe 8021q

# 创建 VLAN 接口
nmcli connection add type vlan con-name eth0.100 ifname eth0.100 dev eth0 id 100

# 配置 IP 地址
nmcli connection modify eth0.100 ipv4.addresses "192.168.100.10/24"

# 激活 VLAN 接口
nmcli connection up eth0.100
```

### 配置网络桥接

网络桥接允许将多个网络接口连接在一起，形成一个单一的网络段。这在虚拟化环境中特别有用。

```bash
# 安装桥接工具
sudo dnf install bridge-utils -y

# 创建桥接接口
nmcli connection add type bridge con-name br0 ifname br0

# 配置桥接接口 IP 地址
nmcli connection modify br0 ipv4.addresses "192.168.1.100/24"
mcli connection modify br0 ipv4.gateway "192.168.1.1"
mcli connection modify br0 ipv4.dns "8.8.8.8,8.8.4.4"
mcli connection modify br0 ipv4.method manual

# 将物理接口添加到桥接
nmcli connection add type bridge-slave con-name eth0-br0 ifname eth0 master br0

# 激活连接
nmcli connection up br0
nmcli connection up eth0-br0
```

### 配置网络绑定（Bonding）

网络绑定允许将多个网络接口组合成一个逻辑接口，提供冗余或增加带宽。

```bash
# 创建绑定接口
nmcli connection add type bond con-name bond0 ifname bond0 bond.options "mode=active-backup,miimon=100"

# 配置 IP 地址
nmcli connection modify bond0 ipv4.addresses "192.168.1.100/24"
mcli connection modify bond0 ipv4.gateway "192.168.1.1"
mcli connection modify bond0 ipv4.dns "8.8.8.8,8.8.4.4"
mcli connection modify bond0 ipv4.method manual

# 添加从接口
sudo nmcli connection add type bond-slave con-name eth0-bond0 ifname eth0 master bond0
sudo nmcli connection add type bond-slave con-name eth1-bond0 ifname eth1 master bond0

# 激活连接
sudo nmcli connection up bond0
sudo nmcli connection up eth0-bond0
sudo nmcli connection up eth1-bond0
```

## 网络连接测试

### 基本连接测试

```bash
# 测试网络连接
ping -c 4 8.8.8.8

# 测试 DNS 解析
nslookup www.example.com

# 或使用 dig
dig www.example.com

# 跟踪路由
traceroute www.example.com

# 或使用 mtr（更详细）
mtr www.example.com
```

### 端口和服务测试

```bash
# 检查特定端口是否开放
nc -zv 192.168.1.1 22

# 或使用 telnet
telnet 192.168.1.1 22

# 扫描多个端口
nmap 192.168.1.1-100
```

### 网络接口性能测试

```bash
# 安装性能测试工具
sudo dnf install iperf3 -y

# 在一台服务器上启动 iperf3 服务
iperf3 -s

# 在另一台客户端上测试连接速度
iperf3 -c server_ip
```

## 网络故障排除

### 常见网络问题及解决方案

1. **无法连接到网络**

   - 检查网络接口状态
   - 验证 IP 地址配置
   - 确认物理连接（网线、Wi-Fi）

2. **无法解析域名**

   - 检查 DNS 配置
   - 测试直接使用 IP 地址连接
   - 查看防火墙规则

3. **网络连接速度慢**
   - 检查网络接口统计信息
   - 测试带宽
   - 检查路由配置

### 网络诊断工具

#### 网络接口诊断

```bash
# 查看网络接口统计信息
ip -s link

# 检查网络接口错误
ethtool -S eth0

# 查看网络接口配置
ethtool eth0
```

#### 连接诊断

```bash
# 检查活动连接
ss -tuln

# 查看详细的网络连接
netstat -tulpn

# 监控网络流量
tcpdump -i eth0
```

#### 系统日志检查

```bash
# 查看网络相关日志
sudo journalctl -u NetworkManager

# 查看内核网络日志
dmesg | grep -i network
dmesg | grep -i eth0
```

## 网络配置最佳实践

1. **使用一致的命名约定**：为网络连接和配置文件使用清晰、一致的命名

2. **使用 UUID 或 MAC 地址**：在网络配置中使用 UUID 或 MAC 地址来标识网络接口，避免设备名称变化

3. **备份网络配置**：在修改网络配置前备份当前配置

4. **使用静态 IP 地址**：对于服务器和关键设备，使用静态 IP 地址

5. **配置多个 DNS 服务器**：配置至少两个 DNS 服务器以提高可用性

6. **启用网络服务自动启动**：确保网络服务在系统启动时自动启动

7. **定期检查网络配置**：定期检查和更新网络配置，确保其安全性和有效性

8. **使用网络监控**：设置网络监控工具，及时发现和解决网络问题

## 总结

网络配置是 Rocky Linux 系统管理中的基础且重要的部分。本教程详细介绍了网络接口管理、IP 地址配置、路由设置、DNS 配置和网络服务控制等内容，以及各种高级网络配置选项和故障排除方法。

在实际应用中，建议使用 NetworkManager 和其命令行工具 `nmcli` 进行网络配置，这是 Rocky Linux 中推荐的方法。对于高级配置，如 VLAN、桥接和绑定，可以使用相应的专用工具和配置选项。

良好的网络配置不仅可以确保系统的网络连接正常工作，还可以提高网络性能、安全性和可靠性。通过遵循最佳实践并定期监控网络状态，可以有效避免和解决常见的网络问题。
