活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

Rocky Linux网络设置入门到精通 全面解析网络配置常见问题与解决方案助你轻松掌握系统网络管理

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-17 14:30:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Rocky Linux是一个社区支持的企业级操作系统,作为CentOS的替代方案,它旨在为用户提供稳定、可靠且免费的操作系统。在服务器管理中,网络配置是至关重要的一环,无论是搭建Web服务器、数据库服务器还是实现服务器集群,都离不开稳定、高效的网络连接。本文将全面介绍Rocky Linux的网络设置,从基础配置到高级应用,帮助读者系统掌握Rocky Linux的网络管理技能,并能够独立解决常见的网络问题。

Rocky Linux网络基础

网络配置文件结构

Rocky Linux作为RHEL的下游分支,继承了其网络配置的基本结构。在Rocky Linux中,网络配置文件主要位于以下目录:

• /etc/sysconfig/network-scripts/:包含传统的网络接口配置文件,如ifcfg-eth0
• /etc/NetworkManager/:NetworkManager的配置目录
• /etc/hosts:主机名解析文件
• /etc/resolv.conf:DNS配置文件
• /etc/sysconfig/network:全局网络配置文件

在Rocky Linux 8及以后的版本中,NetworkManager成为默认的网络管理工具,但仍然支持传统的网络配置方式。

网络管理工具介绍

Rocky Linux提供了多种网络管理工具,适应不同用户的需求:

1. NetworkManager:系统默认的网络管理守护进程,负责监控和管理网络连接。nmcli:NetworkManager的命令行工具,功能强大,适合脚本化操作。nmtui:NetworkManager的文本用户界面,适合在终端中进行交互式配置。nm-connection-editor:NetworkManager的图形用户界面,适合桌面环境使用。
2. nmcli:NetworkManager的命令行工具,功能强大,适合脚本化操作。
3. nmtui:NetworkManager的文本用户界面,适合在终端中进行交互式配置。
4. nm-connection-editor:NetworkManager的图形用户界面,适合桌面环境使用。
5. 传统网络脚本:通过/etc/sysconfig/network-scripts/目录下的配置文件进行网络配置。ifup/ifdown:用于启动和停止网络接口的脚本。systemctl:用于管理网络服务的命令。
6. ifup/ifdown:用于启动和停止网络接口的脚本。
7. systemctl:用于管理网络服务的命令。
8. 网络诊断工具:ping:测试网络连通性。traceroute/tracepath:跟踪网络路由。netstat/ss:显示网络连接、路由表等信息。ip:显示和操作路由、网络设备、策略路由和隧道。nm-tool:显示NetworkManager的状态和信息。
9. ping:测试网络连通性。
10. traceroute/tracepath:跟踪网络路由。
11. netstat/ss:显示网络连接、路由表等信息。
12. ip:显示和操作路由、网络设备、策略路由和隧道。
13. nm-tool:显示NetworkManager的状态和信息。

NetworkManager:系统默认的网络管理守护进程,负责监控和管理网络连接。

• nmcli:NetworkManager的命令行工具,功能强大,适合脚本化操作。
• nmtui:NetworkManager的文本用户界面,适合在终端中进行交互式配置。
• nm-connection-editor:NetworkManager的图形用户界面,适合桌面环境使用。

传统网络脚本:通过/etc/sysconfig/network-scripts/目录下的配置文件进行网络配置。

• ifup/ifdown:用于启动和停止网络接口的脚本。
• systemctl:用于管理网络服务的命令。

网络诊断工具:

• ping:测试网络连通性。
• traceroute/tracepath:跟踪网络路由。
• netstat/ss:显示网络连接、路由表等信息。
• ip:显示和操作路由、网络设备、策略路由和隧道。
• nm-tool:显示NetworkManager的状态和信息。

基本网络配置

静态IP配置

静态IP配置是指为网络接口分配固定的IP地址,适用于服务器环境。下面介绍两种配置静态IP的方法。

使用nmcli命令配置静态IP:
  1. # 查看可用的网络连接
  2. nmcli connection show
  3. # 添加一个新的以太网连接(假设连接名为eth0)
  4. nmcli connection add type ethernet ifname eth0 con-name static-eth0
  5. # 配置静态IP地址、子网掩码和网关
  6. nmcli connection modify static-eth0 ipv4.addresses 192.168.1.100/24
  7. nmcli connection modify static-eth0 ipv4.gateway 192.168.1.1
  8. nmcli connection modify static-eth0 ipv4.dns "8.8.8.8 8.8.4.4"
  9. nmcli connection modify static-eth0 ipv4.method manual
  10. # 启用连接
  11. nmcli connection up static-eth0
  12. # 查看连接状态
  13. nmcli connection show static-eth0
复制代码

编辑网络接口配置文件:
  1. # 编辑网络接口配置文件(以eth0为例)
  2. vi /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码

添加以下内容:
  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. DEFROUTE=yes
  4. NAME=eth0
  5. DEVICE=eth0
  6. ONBOOT=yes
  7. IPADDR=192.168.1.100
  8. PREFIX=24
  9. GATEWAY=192.168.1.1
  10. DNS1=8.8.8.8
  11. DNS2=8.8.4.4
复制代码

保存文件后,重启网络服务:
  1. # 重启网络服务
  2. systemctl restart network
  3. # 或者重启NetworkManager
  4. systemctl restart NetworkManager
复制代码

DHCP配置

DHCP(Dynamic Host Configuration Protocol)允许系统自动获取IP地址、子网掩码、网关和DNS等信息。
  1. # 添加一个新的以太网连接
  2. nmcli connection add type ethernet ifname eth0 con-name dhcp-eth0
  3. # 设置为DHCP模式
  4. nmcli connection modify dhcp-eth0 ipv4.method auto
  5. # 启用连接
  6. nmcli connection up dhcp-eth0
  7. # 查看连接状态
  8. nmcli connection show dhcp-eth0
复制代码

编辑网络接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码

添加以下内容:
  1. TYPE=Ethernet
  2. BOOTPROTO=dhcp
  3. DEFROUTE=yes
  4. NAME=eth0
  5. DEVICE=eth0
  6. ONBOOT=yes
复制代码

保存文件后,重启网络服务:
  1. systemctl restart network
复制代码

DNS配置

DNS(Domain Name System)用于将域名解析为IP地址。在Rocky Linux中,可以通过多种方式配置DNS。
  1. # 为特定连接配置DNS
  2. nmcli connection modify static-eth0 ipv4.dns "8.8.8.8 8.8.4.4"
  3. # 全局DNS配置(适用于所有连接)
  4. nmcli connection modify static-eth0 ipv4.ignore-auto-dns yes
  5. echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
  6. echo "nameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf
复制代码

编辑/etc/resolv.conf文件:
  1. vi /etc/resolv.conf
复制代码

添加以下内容:
  1. nameserver 8.8.8.8
  2. nameserver 8.8.4.4
  3. search example.com
复制代码

注意:在某些情况下,NetworkManager可能会覆盖/etc/resolv.conf文件。要防止这种情况,可以设置文件的不可变属性:
  1. chattr +i /etc/resolv.conf
复制代码

主机名设置

主机名是用于标识网络中的计算机的名称。在Rocky Linux中,可以设置三种类型的主机名:静态主机名(static)、瞬态主机名(transient)和灵活主机名(pretty)。
  1. # 查看当前主机名
  2. hostnamectl status
  3. # 设置静态主机名
  4. hostnamectl set-hostname server1.example.com
  5. # 设置灵活主机名(可以包含特殊字符和空格)
  6. hostnamectl set-hostname "My Server 1" --pretty
  7. # 删除特定类型的主机名
  8. hostnamectl set-hostname "" --transient
复制代码

编辑/etc/hostname文件:
  1. vi /etc/hostname
复制代码

添加主机名:
  1. server1.example.com
复制代码

同时,确保/etc/hosts文件中包含主机名解析:
  1. vi /etc/hosts
复制代码

添加以下内容:
  1. 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
  2. ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
  3. 192.168.1.100 server1.example.com server1
复制代码

高级网络配置

网络绑定(Bonding)

网络绑定(也称为链路聚合或端口聚合)是将多个网络接口组合成一个逻辑接口的技术,以提高带宽和提供冗余。

使用NetworkManager配置网络绑定:
  1. # 创建绑定接口
  2. nmcli connection add type bond ifname bond0 con-name bond0 mode 802.3ad
  3. # 配置绑定接口的IP地址
  4. nmcli connection modify bond0 ipv4.addresses 192.168.1.200/24
  5. nmcli connection modify bond0 ipv4.gateway 192.168.1.1
  6. nmcli connection modify bond0 ipv4.dns "8.8.8.8 8.8.4.4"
  7. nmcli connection modify bond0 ipv4.method manual
  8. # 添加从接口到绑定
  9. nmcli connection add type ethernet ifname eth1 con-name bond-slave-eth1 master bond0
  10. nmcli connection add type ethernet ifname eth2 con-name bond-slave-eth2 master bond0
  11. # 启用连接
  12. nmcli connection up bond0
  13. nmcli connection up bond-slave-eth1
  14. nmcli connection up bond-slave-eth2
  15. # 查看绑定状态
  16. cat /proc/net/bonding/bond0
复制代码

使用传统配置文件配置网络绑定:

1. 创建绑定接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-bond0
复制代码

添加以下内容:
  1. TYPE=Bond
  2. BOOTPROTO=none
  3. DEFROUTE=yes
  4. NAME=bond0
  5. DEVICE=bond0
  6. ONBOOT=yes
  7. IPADDR=192.168.1.200
  8. PREFIX=24
  9. GATEWAY=192.168.1.1
  10. DNS1=8.8.8.8
  11. DNS2=8.8.4.4
  12. BONDING_OPTS="mode=802.3ad miimon=100"
复制代码

1. 创建从接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-eth1
复制代码

添加以下内容:
  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. NAME=eth1
  4. DEVICE=eth1
  5. ONBOOT=yes
  6. MASTER=bond0
  7. SLAVE=yes
复制代码

创建第二个从接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-eth2
复制代码

添加以下内容:
  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. NAME=eth2
  4. DEVICE=eth2
  5. ONBOOT=yes
  6. MASTER=bond0
  7. SLAVE=yes
复制代码

1. 加载绑定模块并重启网络服务:
  1. # 加载绑定模块
  2. modprobe bonding
  3. # 重启网络服务
  4. systemctl restart network
复制代码

网络绑定支持多种模式,每种模式适用于不同的场景:

1. mode=0 (balance-rr):轮询模式,数据包按顺序依次从每个接口发出。
2. mode=1 (active-backup):主备模式,只有一个接口处于活动状态,其他接口作为备份。
3. mode=2 (balance-xor):XOR模式,根据源MAC地址和目标MAC地址的XOR结果选择接口。
4. mode=3 (broadcast):广播模式,所有数据包从所有接口发出。
5. mode=4 (802.3ad):IEEE 802.3ad动态链路聚合,需要交换机支持LACP协议。
6. mode=5 (balance-tlb):自适应传输负载均衡,根据每个接口的负载情况分配出站流量。
7. mode=6 (balance-alb):自适应负载均衡,包括传输和接收的负载均衡。

网络桥接(Bridging)

网络桥接是将多个网络接口连接在一起,使它们在数据链路层上表现为单个网络的技术。常用于虚拟化环境中,使虚拟机可以直接连接到物理网络。

使用NetworkManager配置网络桥接:
  1. # 创建桥接接口
  2. nmcli connection add type bridge ifname br0 con-name br0
  3. # 配置桥接接口的IP地址
  4. nmcli connection modify br0 ipv4.addresses 192.168.1.150/24
  5. nmcli connection modify br0 ipv4.gateway 192.168.1.1
  6. nmcli connection modify br0 ipv4.dns "8.8.8.8 8.8.4.4"
  7. nmcli connection modify br0 ipv4.method manual
  8. # 添加从接口到桥接
  9. nmcli connection add type ethernet ifname eth1 con-name bridge-slave-eth1 master br0
  10. # 启用连接
  11. nmcli connection up br0
  12. nmcli connection up bridge-slave-eth1
  13. # 查看桥接状态
  14. brctl show
复制代码

使用传统配置文件配置网络桥接:

1. 创建桥接接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-br0
复制代码

添加以下内容:
  1. TYPE=Bridge
  2. BOOTPROTO=none
  3. DEFROUTE=yes
  4. NAME=br0
  5. DEVICE=br0
  6. ONBOOT=yes
  7. IPADDR=192.168.1.150
  8. PREFIX=24
  9. GATEWAY=192.168.1.1
  10. DNS1=8.8.8.8
  11. DNS2=8.8.4.4
复制代码

1. 创建从接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-eth1
复制代码

添加以下内容:
  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. NAME=eth1
  4. DEVICE=eth1
  5. ONBOOT=yes
  6. BRIDGE=br0
复制代码

1. 重启网络服务:
  1. systemctl restart network
复制代码

VLAN配置

VLAN(Virtual Local Area Network)是一种将物理网络划分为多个逻辑网络的技术,可以提高网络安全性和性能。

使用NetworkManager配置VLAN:
  1. # 创建VLAN接口(假设在eth1上创建VLAN ID为100的接口)
  2. nmcli connection add type vlan ifname eth1.100 dev eth1 id 100 con-name vlan100
  3. # 配置VLAN接口的IP地址
  4. nmcli connection modify vlan100 ipv4.addresses 192.168.100.10/24
  5. nmcli connection modify vlan100 ipv4.gateway 192.168.100.1
  6. nmcli connection modify vlan100 ipv4.dns "8.8.8.8 8.8.4.4"
  7. nmcli connection modify vlan100 ipv4.method manual
  8. # 启用连接
  9. nmcli connection up vlan100
  10. # 查看VLAN接口状态
  11. ip -d addr show eth1.100
复制代码

使用传统配置文件配置VLAN:

1. 创建VLAN接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-eth1.100
复制代码

添加以下内容:
  1. TYPE=Vlan
  2. BOOTPROTO=none
  3. DEFROUTE=yes
  4. NAME=eth1.100
  5. DEVICE=eth1.100
  6. ONBOOT=yes
  7. VLAN=yes
  8. PHYSDEV=eth1
  9. VLAN_ID=100
  10. IPADDR=192.168.100.10
  11. PREFIX=24
  12. GATEWAY=192.168.100.1
  13. DNS1=8.8.8.8
  14. DNS2=8.8.4.4
复制代码

1. 重启网络服务:
  1. systemctl restart network
复制代码

路由配置

路由配置用于确定数据包从源到目的地的路径。在Rocky Linux中,可以配置静态路由和策略路由。

使用NetworkManager配置静态路由:
  1. # 添加静态路由
  2. nmcli connection modify static-eth0 +ipv4.routes "192.168.2.0/24 192.168.1.254"
  3. # 添加多个静态路由
  4. nmcli connection modify static-eth0 +ipv4.routes "10.0.0.0/8 192.168.1.253"
  5. nmcli connection modify static-eth0 +ipv4.routes "172.16.0.0/12 192.168.1.252"
  6. # 查看路由表
  7. ip route show
  8. # 应用配置
  9. nmcli connection up static-eth0
复制代码

使用传统配置文件配置静态路由:

1. 编辑网络接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码

添加以下内容:
  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. DEFROUTE=yes
  4. NAME=eth0
  5. DEVICE=eth0
  6. ONBOOT=yes
  7. IPADDR=192.168.1.100
  8. PREFIX=24
  9. GATEWAY=192.168.1.1
  10. DNS1=8.8.8.8
  11. DNS2=8.8.4.4
复制代码

1. 创建路由配置文件:
  1. vi /etc/sysconfig/network-scripts/route-eth0
复制代码

添加以下内容:
  1. 192.168.2.0/24 via 192.168.1.254 dev eth0
  2. 10.0.0.0/8 via 192.168.1.253 dev eth0
  3. 172.16.0.0/12 via 192.168.1.252 dev eth0
复制代码

1. 重启网络服务:
  1. systemctl restart network
复制代码

策略路由允许根据数据包的源地址、目标地址、协议类型等条件选择不同的路由表。

1. 创建自定义路由表:
  1. # 编辑/etc/iproute2/rt_tables文件
  2. vi /etc/iproute2/rt_tables
复制代码

添加以下内容:
  1. # 自定义路由表
  2. 100 custom_table
复制代码

1. 创建策略路由脚本:
  1. vi /etc/sysconfig/network-scripts/rule-eth0
复制代码

添加以下内容:
  1. # 从192.168.1.100发出的数据包使用自定义路由表
  2. from 192.168.1.100 table custom_table
复制代码

1. 创建路由表配置文件:
  1. vi /etc/sysconfig/network-scripts/route-eth0-table
复制代码

添加以下内容:
  1. # 默认路由
  2. default via 192.168.1.254 dev eth0 table custom_table
  3. # 网络路由
  4. 192.168.2.0/24 via 192.168.1.253 dev eth0 table custom_table
复制代码

1. 创建网络接口配置文件:
  1. vi /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码

添加以下内容:
  1. TYPE=Ethernet
  2. BOOTPROTO=none
  3. DEFROUTE=yes
  4. NAME=eth0
  5. DEVICE=eth0
  6. ONBOOT=yes
  7. IPADDR=192.168.1.100
  8. PREFIX=24
  9. GATEWAY=192.168.1.1
  10. DNS1=8.8.8.8
  11. DNS2=8.8.4.4
复制代码

1. 重启网络服务:
  1. systemctl restart network
复制代码

网络故障排除

常见网络问题及解决方案

问题现象:网络接口无法启动,ifup或nmcli connection up命令失败。

可能原因:

• 网络接口名称错误
• 配置文件语法错误
• 网络驱动程序问题
• 硬件故障

解决方案:

1. 检查网络接口名称:
  1. ip link show
复制代码

1. 检查配置文件语法:
  1. # 对于NetworkManager
  2. nmcli connection verify connection-name
  3. # 对于传统配置文件
  4. bash -n /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码

1. 检查系统日志:
  1. journalctl -u NetworkManager
  2. journalctl -u network
复制代码

1. 检查驱动程序状态:
  1. lspci | grep -i ethernet
  2. ethtool -i eth0
复制代码

1. 重启网络服务:
  1. systemctl restart NetworkManager
  2. # 或者
  3. systemctl restart network
复制代码

问题现象:网络接口配置为DHCP,但无法获取IP地址。

可能原因:

• DHCP服务器不可用
• 网络连接问题
• 防火墙阻止DHCP请求
• DHCP客户端配置问题

解决方案:

1. 检查网络连接:
  1. ping -c 4 192.168.1.1  # 替换为你的网关地址
复制代码

1. 检查DHCP客户端状态:
  1. # 对于dhclient
  2. ps aux | grep dhclient
  3. # 对于NetworkManager
  4. nmcli device show eth0
复制代码

1. 手动请求DHCP地址:
  1. dhclient eth0
复制代码

1. 检查防火墙设置:
  1. firewall-cmd --list-all
复制代码

1. 检查DHCP服务器日志(如果有权限访问):
  1. # 在DHCP服务器上
  2. tail -f /var/log/messages | grep dhcpd
复制代码

问题现象:可以ping通IP地址,但无法解析域名。

可能原因:

• DNS配置错误
• DNS服务器不可用
• 防火墙阻止DNS查询
• nscd服务问题

解决方案:

1. 检查DNS配置:
  1. cat /etc/resolv.conf
复制代码

1. 测试DNS服务器:
  1. nslookup example.com 8.8.8.8
  2. dig example.com @8.8.8.8
复制代码

1. 检查网络连接到DNS服务器:
  1. ping -c 4 8.8.8.8
复制代码

1. 检查防火墙设置:
  1. firewall-cmd --list-all
复制代码

1. 重启nscd服务(如果安装):
  1. systemctl restart nscd
复制代码

1. 清除DNS缓存:
  1. # 对于systemd-resolved
  2. systemd-resolve --flush-caches
  3. # 对于nscd
  4. nscd -i hosts
复制代码

问题现象:网络连接速度慢,或者连接频繁断开。

可能原因:

• 网络硬件问题
• 网络拥塞
• MTU设置不正确
• 驱动程序问题
• 网络配置错误

解决方案:

1. 检查网络接口统计信息:
  1. ethtool -S eth0
复制代码

1. 检查网络错误:
  1. ip -s link show eth0
复制代码

1. 测试网络吞吐量:
  1. # 安装iperf3
  2. dnf install -y iperf3
  3. # 在服务器端运行
  4. iperf3 -s
  5. # 在客户端运行
  6. iperf3 -c server_ip
复制代码

1. 调整MTU设置:
  1. # 检查当前MTU
  2. ip link show eth0
  3. # 临时设置MTU
  4. ip link set dev eth0 mtu 1400
  5. # 永久设置MTU(使用NetworkManager)
  6. nmcli connection modify eth0 eth0.mtu 1400
  7. nmcli connection up eth0
复制代码

1. 更新驱动程序:
  1. # 检查可用的驱动程序更新
  2. dnf update kernel
  3. dnf update
  4. # 重启系统
  5. reboot
复制代码

网络诊断工具使用

Rocky Linux提供了多种网络诊断工具,帮助管理员快速定位和解决网络问题。

ping命令用于测试网络连通性,通过发送ICMP回显请求并等待响应。
  1. # 发送4个ping包
  2. ping -c 4 example.com
  3. # 持续ping,并显示时间戳
  4. ping -D example.com
  5. # 设置ping包大小
  6. ping -s 1024 example.com
  7. # 设置TTL值
  8. ping -t 64 example.com
复制代码

traceroute和tracepath命令用于跟踪数据包从源到目的地的路径。
  1. # 使用traceroute
  2. traceroute example.com
  3. # 使用tracepath
  4. tracepath example.com
  5. # 使用ICMP而不是UDP
  6. traceroute -I example.com
  7. # 设置最大跳数
  8. traceroute -m 20 example.com
复制代码

netstat和ss命令用于显示网络连接、路由表、接口统计等信息。ss是netstat的现代替代品,速度更快。
  1. # 显示所有TCP连接
  2. ss -t -a
  3. # 显示所有UDP连接
  4. ss -u -a
  5. # 显示监听的套接字
  6. ss -l
  7. # 显示进程名和PID
  8. ss -t -p
  9. # 显示网络统计信息
  10. ss -s
  11. # 使用netstat显示所有连接
  12. netstat -a
  13. # 显示路由表
  14. netstat -r
  15. # 显示网络接口统计信息
  16. netstat -i
复制代码

ip命令是现代Linux系统中用于显示和操作路由、网络设备、策略路由和隧道的强大工具。
  1. # 显示所有网络接口
  2. ip addr show
  3. # 显示路由表
  4. ip route show
  5. # 添加静态路由
  6. ip route add 192.168.2.0/24 via 192.168.1.254 dev eth0
  7. # 删除静态路由
  8. ip route del 192.168.2.0/24
  9. # 显示邻居表(ARP表)
  10. ip neigh show
  11. # 添加ARP条目
  12. ip neigh add 192.168.1.200 lladdr 00:11:22:33:44:55 dev eth0
  13. # 删除ARP条目
  14. ip neigh del 192.168.1.200 dev eth0
复制代码

tcpdump是一个强大的网络抓包工具,用于捕获和分析网络流量。
  1. # 捕获eth0接口上的所有流量
  2. tcpdump -i eth0
  3. # 捕获特定主机的流量
  4. tcpdump -i eth0 host 192.168.1.100
  5. # 捕获特定端口的流量
  6. tcpdump -i eth0 port 80
  7. # 捕获TCP流量
  8. tcpdump -i eth0 tcp
  9. # 捕获UDP流量
  10. tcpdump -i eth0 udp
  11. # 将捕获的流量保存到文件
  12. tcpdump -i eth0 -w capture.pcap
  13. # 读取捕获文件
  14. tcpdump -r capture.pcap
  15. # 显示更详细的信息
  16. tcpdump -i eth0 -v
复制代码

nmcli是NetworkManager的命令行工具,用于管理网络连接。
  1. # 显示所有连接
  2. nmcli connection show
  3. # 显示设备状态
  4. nmcli device show
  5. # 显示网络设备状态
  6. nmcli device status
  7. # 启用连接
  8. nmcli connection up connection-name
  9. # 禁用连接
  10. nmcli connection down connection-name
  11. # 添加新的以太网连接
  12. nmcli connection add type ethernet ifname eth0 con-name my-eth0
  13. # 修改连接设置
  14. nmcli connection modify my-eth0 ipv4.addresses 192.168.1.100/24
  15. nmcli connection modify my-eth0 ipv4.gateway 192.168.1.1
  16. nmcli connection modify my-eth0 ipv4.dns "8.8.8.8 8.8.4.4"
  17. nmcli connection modify my-eth0 ipv4.method manual
  18. # 删除连接
  19. nmcli connection delete my-eth0
复制代码

日志分析

Rocky Linux使用systemd日志系统(journald)来记录系统事件,包括网络相关的事件。通过分析这些日志,可以诊断和解决网络问题。
  1. # 查看NetworkManager日志
  2. journalctl -u NetworkManager
  3. # 查看网络服务日志
  4. journalctl -u network
  5. # 查看从上次启动以来的日志
  6. journalctl -u NetworkManager -b
  7. # 查看特定时间范围内的日志
  8. journalctl -u NetworkManager --since "2023-01-01" --until "2023-01-02"
  9. # 持续查看日志(类似于tail -f)
  10. journalctl -u NetworkManager -f
复制代码
  1. # 查看内核日志中的网络相关消息
  2. dmesg | grep -i network
  3. # 查看内核日志中的驱动程序相关消息
  4. dmesg | grep -i eth
  5. # 查看内核日志中的错误消息
  6. dmesg | grep -i error
复制代码
  1. # 查看系统日志
  2. cat /var/log/messages | grep -i network
  3. # 查看安全日志
  4. cat /var/log/secure | grep -i network
  5. # 查看邮件日志(如果配置了邮件服务器)
  6. cat /var/log/maillog | grep -i network
复制代码
  1. # 安装logwatch
  2. dnf install -y logwatch
  3. # 运行logwatch
  4. logwatch --detail High --service NetworkManager --range today
  5. # 安装goaccess(用于分析Web服务器日志)
  6. dnf install -y goaccess
  7. # 分析Web服务器日志
  8. goaccess /var/log/httpd/access_log -c
复制代码

网络安全配置

防火墙设置(firewalld)

Rocky Linux使用firewalld作为默认的防火墙管理工具,它提供了一个动态管理的防火墙,支持网络/防火墙区域定义。
  1. # 安装firewalld
  2. dnf install -y firewalld
  3. # 启动firewalld服务
  4. systemctl start firewalld
  5. # 设置firewalld开机自启
  6. systemctl enable firewalld
  7. # 检查firewalld状态
  8. systemctl status firewalld
  9. # 查看当前防火墙规则
  10. firewall-cmd --list-all
  11. # 重新加载防火墙规则
  12. firewall-cmd --reload
复制代码
  1. # 查看所有可用区域
  2. firewall-cmd --get-zones
  3. # 查看默认区域
  4. firewall-cmd --get-default-zone
  5. # 设置默认区域
  6. firewall-cmd --set-default-zone=public
  7. # 查看活动区域
  8. firewall-cmd --get-active-zones
  9. # 将接口添加到特定区域
  10. firewall-cmd --zone=public --add-interface=eth0
  11. # 更改接口的区域
  12. firewall-cmd --zone=internal --change-interface=eth0
复制代码
  1. # 查看所有可用服务
  2. firewall-cmd --get-services
  3. # 查看特定区域中开放的服务
  4. firewall-cmd --zone=public --list-services
  5. # 在特定区域中开放服务(临时)
  6. firewall-cmd --zone=public --add-service=http
  7. # 在特定区域中开放服务(永久)
  8. firewall-cmd --zone=public --add-service=http --permanent
  9. # 从特定区域中移除服务(临时)
  10. firewall-cmd --zone=public --remove-service=http
  11. # 从特定区域中移除服务(永久)
  12. firewall-cmd --zone=public --remove-service=http --permanent
复制代码
  1. # 在特定区域中开放端口(临时)
  2. firewall-cmd --zone=public --add-port=8080/tcp
  3. # 在特定区域中开放端口(永久)
  4. firewall-cmd --zone=public --add-port=8080/tcp --permanent
  5. # 从特定区域中移除端口(临时)
  6. firewall-cmd --zone=public --remove-port=8080/tcp
  7. # 从特定区域中移除端口(永久)
  8. firewall-cmd --zone=public --remove-port=8080/tcp --permanent
复制代码
  1. # 添加允许特定IP地址访问的规则
  2. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
  3. # 添加拒绝特定IP地址访问的规则
  4. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.200" reject'
  5. # 添加允许特定IP地址访问特定端口的规则
  6. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
  7. # 添加转发规则
  8. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" forward-port port="80" protocol="tcp" to-port="8080"'
  9. # 删除丰富的规则
  10. firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'
复制代码
  1. # 启用IP伪装(NAT)
  2. firewall-cmd --zone=public --add-masquerade --permanent
  3. # 添加端口转发规则
  4. firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
  5. # 添加到特定IP的端口转发规则
  6. firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=192.168.1.100 --permanent
复制代码
  1. # 添加直接规则
  2. firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 80 -j ACCEPT
  3. # 删除直接规则
  4. firewall-cmd --direct --remove-rule ipv4 filter INPUT 0 -p tcp --dport 80 -j ACCEPT
  5. # 查看所有直接规则
  6. firewall-cmd --direct --get-all-rules
复制代码

网络访问控制

除了防火墙外,Rocky Linux还提供了其他网络访问控制机制,如TCP Wrappers和SELinux。

TCP Wrappers是一个基于主机的访问控制系统,用于限制对网络服务的访问。
  1. # 检查服务是否支持TCP Wrappers
  2. ldd /usr/sbin/sshd | grep libwrap
  3. # 配置允许访问的主机
  4. echo "sshd: 192.168.1.0/24" >> /etc/hosts.allow
  5. # 配置拒绝访问的主机
  6. echo "sshd: ALL" >> /etc/hosts.deny
  7. # 测试TCP Wrappers规则
  8. tcpdmatch sshd 192.168.1.100
复制代码

SELinux(Security-Enhanced Linux)是一个强制访问控制(MAC)系统,可以限制进程的权限,包括网络访问。
  1. # 检查SELinux状态
  2. sestatus
  3. # 查看SELinux布尔值
  4. getsebool -a | grep -i network
  5. # 设置SELinux布尔值
  6. setsebool -P httpd_can_network_connect=1
  7. # 查看SELinux上下文
  8. ls -Z /var/www/html/
  9. # 更改SELinux上下文
  10. chcon -R -t httpd_sys_content_t /var/www/html/
  11. # 恢复默认SELinux上下文
  12. restorecon -Rv /var/www/html/
  13. # 查看SELinux拒绝日志
  14. ausearch -m avc -ts recent
  15. sealert -a /var/log/audit/audit.log
复制代码

1. 最小权限原则:只开放必要的端口和服务。
  1. # 列出所有开放的服务
  2. firewall-cmd --permanent --list-services
  3. # 移除不必要的服务
  4. firewall-cmd --permanent --remove-service=telnet
复制代码

1. 使用SSH密钥认证:禁用密码认证,使用SSH密钥认证。
  1. # 编辑SSH配置文件
  2. vi /etc/ssh/sshd_config
  3. # 禁用密码认证
  4. PasswordAuthentication no
  5. # 启用密钥认证
  6. PubkeyAuthentication yes
  7. # 重启SSH服务
  8. systemctl restart sshd
复制代码

1. 限制SSH访问:只允许特定IP地址访问SSH服务。
  1. # 使用firewalld限制SSH访问
  2. firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'
  3. firewall-cmd --permanent --remove-service=ssh
  4. # 使用TCP Wrappers限制SSH访问
  5. echo "sshd: 192.168.1.0/24" >> /etc/hosts.allow
  6. echo "sshd: ALL" >> /etc/hosts.deny
复制代码

1. 配置失败登录尝试限制:使用fail2ban防止暴力破解。
  1. # 安装fail2ban
  2. dnf install -y fail2ban
  3. # 启动fail2ban服务
  4. systemctl start fail2ban
  5. systemctl enable fail2ban
  6. # 配置fail2ban
  7. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  8. # 编辑jail.local
  9. vi /etc/fail2ban/jail.local
  10. # 设置SSH监禁规则
  11. [sshd]
  12. enabled = true
  13. port = ssh
  14. filter = sshd
  15. logpath = /var/log/secure
  16. maxretry = 3
  17. bantime = 3600
  18. # 重启fail2ban服务
  19. systemctl restart fail2ban
复制代码

1. 定期更新系统:保持系统和软件包的最新状态。
  1. # 更新系统
  2. dnf update -y
  3. # 设置自动更新
  4. dnf install -y dnf-automatic
  5. systemctl enable --now dnf-automatic.timer
复制代码

最佳实践和性能优化

网络性能优化
  1. # 查看网络接口参数
  2. ethtool eth0
  3. # 启用或禁用卸载功能
  4. ethtool -K eth0 gro on
  5. ethtool -K eth0 gso on
  6. ethtool -K eth0 tso on
  7. ethtool -K eth0 lro on
  8. # 调整队列长度
  9. ethtool -G eth0 rx 4096
  10. ethtool -G eth0 tx 4096
  11. # 调整中断合并
  12. ethtool -C eth0 adaptive-rx off
  13. ethtool -C eth0 adaptive-tx off
  14. ethtool -C eth0 rx-usecs 100
  15. ethtool -C eth0 tx-usecs 100
复制代码
  1. # 编辑sysctl配置文件
  2. vi /etc/sysctl.d/99-network.conf
  3. # 添加以下内容
  4. # 增加TCP最大缓冲区大小
  5. net.core.rmem_max = 16777216
  6. net.core.wmem_max = 16777216
  7. net.ipv4.tcp_rmem = 4096 87380 16777216
  8. net.ipv4.tcp_wmem = 4096 65536 16777216
  9. # 启用TCP窗口扩展
  10. net.ipv4.tcp_window_scaling = 1
  11. # 启用TCP选择性确认
  12. net.ipv4.tcp_sack = 1
  13. # 启用TCP时间戳
  14. net.ipv4.tcp_timestamps = 1
  15. # 增加TCP最大连接数
  16. net.core.somaxconn = 65535
  17. net.ipv4.tcp_max_syn_backlog = 65536
  18. net.core.netdev_max_backlog = 65536
  19. # 启用TCP快速打开
  20. net.ipv4.tcp_fastopen = 3
  21. # 启用BBR拥塞控制算法
  22. net.core.default_qdisc = fq
  23. net.ipv4.tcp_congestion_control = bbr
  24. # 应用配置
  25. sysctl -p /etc/sysctl.d/99-network.conf
复制代码
  1. # 配置网络绑定(前面已详细介绍)
  2. # 使用mode=4 (802.3ad)模式以获得最佳性能
  3. # 确保交换机配置了LACP
  4. # 配置网络负载均衡
  5. # 使用mode=6 (balance-alb)模式以获得负载均衡和容错
复制代码
  1. # 安装网络监控工具
  2. dnf install -y nethogs iftop bmon
  3. # 使用nethogs监控进程网络使用情况
  4. nethogs eth0
  5. # 使用iftop监控网络带宽使用情况
  6. iftop -i eth0
  7. # 使用bmon监控网络带宽
  8. bmon -p eth0
  9. # 使用sar收集网络统计信息
  10. dnf install -y sysstat
  11. sar -n DEV 1
复制代码

网络配置最佳实践
  1. # 使用Ansible管理网络配置
  2. # 安装Ansible
  3. dnf install -y ansible
  4. # 创建Ansible playbook
  5. vi network-config.yml
  6. # 添加以下内容
  7. ---
  8. - name: Configure network interfaces
  9.   hosts: all
  10.   become: yes
  11.   tasks:
  12.     - name: Configure static IP
  13.       nmcli:
  14.         conn_name: "eth0"
  15.         ifname: "eth0"
  16.         type: "ethernet"
  17.         ip4: "192.168.1.100/24"
  18.         gw4: "192.168.1.1"
  19.         dns4: "8.8.8.8 8.8.4.4"
  20.         state: present
  21. # 运行playbook
  22. ansible-playbook network-config.yml
复制代码
  1. # 创建网络配置文档目录
  2. mkdir -p /etc/network-docs
  3. # 使用git进行版本控制
  4. cd /etc/network-docs
  5. git init
  6. # 创建README文件
  7. cat > README.md <<EOF
  8. # Network Configuration Documentation
  9. This directory contains documentation and version control for network configurations.
  10. ## Network Diagrams
  11. ## IP Addressing Scheme
  12. ## VLAN Configuration
  13. ## Firewall Rules
  14. ## Change Log
  15. EOF
  16. # 添加并提交
  17. git add .
  18. git commit -m "Initial commit of network configuration documentation"
复制代码
  1. # 创建网络配置备份脚本
  2. vi /usr/local/bin/backup-network-config.sh
  3. # 添加以下内容
  4. #!/bin/bash
  5. # 创建备份目录
  6. BACKUP_DIR="/backup/network-config"
  7. DATE=$(date +%Y%m%d-%H%M%S)
  8. BACKUP_FILE="$BACKUP_DIR/network-config-$DATE.tar.gz"
  9. # 创建备份目录(如果不存在)
  10. mkdir -p $BACKUP_DIR
  11. # 备份网络配置文件
  12. tar -czf $BACKUP_FILE \
  13.     /etc/sysconfig/network-scripts/ \
  14.     /etc/NetworkManager/ \
  15.     /etc/resolv.conf \
  16.     /etc/hosts \
  17.     /etc/hostname \
  18.     /etc/sysconfig/network
  19. # 保留最近30天的备份
  20. find $BACKUP_DIR -name "network-config-*.tar.gz" -mtime +30 -delete
  21. echo "Network configuration backed up to $BACKUP_FILE"
  22. # 使脚本可执行
  23. chmod +x /usr/local/bin/backup-network-config.sh
  24. # 添加到cron
  25. echo "0 2 * * * /usr/local/bin/backup-network-config.sh" | crontab -
复制代码
  1. # 创建网络变更请求模板
  2. vi /etc/network-docs/change-request-template.md
  3. # 添加以下内容
  4. # Network Change Request
  5. ## Change ID:
  6. ## Requester:
  7. ## Date:
  8. ## Priority: (Low/Medium/High/Critical)
  9. ## Description of Change:
  10. ## Reason for Change:
  11. ## Impact Assessment:
  12. ## Implementation Plan:
  13. ## Rollback Plan:
  14. ## Testing Plan:
  15. ## Approval:
复制代码
  1. # 安装Zabbix监控
  2. dnf install -y zabbix-agent
  3. # 配置Zabbix agent
  4. vi /etc/zabbix/zabbix_agentd.conf
  5. # 设置Server和ServerActive参数
  6. Server=zabbix-server-ip
  7. ServerActive=zabbix-server-ip
  8. Hostname=rocky-linux-server
  9. # 启动Zabbix agent
  10. systemctl start zabbix-agent
  11. systemctl enable zabbix-agent
  12. # 安装网络监控插件
  13. dnf install -y zabbix-agent-addons
复制代码

总结

Rocky Linux作为一款稳定可靠的企业级操作系统,提供了强大的网络配置和管理功能。本文从基础到高级,全面介绍了Rocky Linux的网络设置,包括基本网络配置、高级网络配置、网络故障排除、网络安全配置以及最佳实践和性能优化。

通过学习本文,读者应该能够:

1. 熟练配置Rocky Linux的网络接口,包括静态IP和DHCP配置。
2. 掌握高级网络技术,如网络绑定、网络桥接、VLAN配置和路由配置。
3. 使用各种网络诊断工具快速定位和解决网络问题。
4. 配置防火墙和网络访问控制,提高系统安全性。
5. 应用最佳实践和性能优化技巧,确保网络高效稳定运行。

网络管理是系统管理员的核心技能之一,希望本文能够帮助读者全面掌握Rocky Linux的网络管理技能,为构建稳定、高效、安全的网络环境提供有力支持。随着技术的不断发展,网络管理工具和技术也在不断更新,读者应该保持学习的态度,不断探索新的网络管理技术和最佳实践。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则