活动公告

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

探索CentOS Stream高级功能应用指南从系统管理到网络配置全面解析企业级Linux发行版的强大功能

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

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

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

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

x
引言

CentOS Stream作为企业级Linux发行版,为系统管理员和网络工程师提供了强大的功能和灵活性。作为RHEL(Red Hat Enterprise Linux)的上游开发平台,CentOS Stream不仅提供了稳定可靠的操作环境,还让用户能够提前体验到即将在RHEL中发布的新功能。本文将深入探讨CentOS Stream的高级功能,从系统管理到网络配置,全面解析这个强大操作系统的各个方面,帮助读者充分利用CentOS Stream的潜力来构建和维护高效的企业级IT基础设施。

CentOS Stream概述

CentOS Stream是CentOS项目的一个重大转变,它从传统的RHEL下游版本转变为RHEL的上游开发分支。这一变化使得CentOS Stream成为一个滚动发布的发行版,位于Fedora Linux和RHEL之间。用户可以提前获取到将在未来RHEL版本中出现的功能和更新,这对于需要规划和测试新功能的企业来说非常有价值。

CentOS Stream保留了RHEL的稳定性、安全性和性能,同时增加了更多的灵活性和创新性。它支持x86_64、ARM64、POWER9和s390x等多种架构,适用于从小型企业到大型数据中心的各种环境。

CentOS Stream的主要特点

1. 滚动更新模型:持续接收更新和改进,而不是等待主要版本发布。
2. 接近RHEL的功能:提供即将在RHEL中出现的功能,使企业能够提前适应和测试。
3. 企业级稳定性:尽管是滚动发布,但仍然保持高度的稳定性和可靠性。
4. 长期支持:提供长期的支持周期,适合企业级部署。
5. 广泛的软件生态系统:拥有丰富的软件包和工具,满足各种企业需求。

系统管理高级功能

系统监控与性能优化

CentOS Stream提供了多种工具来监控系统性能和资源使用情况,这些工具对于维护系统健康和优化性能至关重要。

top是Linux系统中最基本的实时监控工具,而htop则是其增强版本,提供了更友好的用户界面和更多功能。
  1. # 安装htop
  2. sudo dnf install htop
  3. # 运行htop
  4. htop
复制代码

htop提供了颜色编码的输出,可以轻松识别CPU密集型进程、内存使用情况等。与top相比,htop支持鼠标操作,可以垂直和水平滚动,更直观地查看所有进程。

vmstat是一个强大的工具,用于报告关于进程、内存、分页、块IO、陷阱(中断)和CPU活动的信息。
  1. # 每2秒更新一次,共更新5次
  2. vmstat 2 5
复制代码

输出解释:

• r: 运行队列中的进程数
• b: 等待IO的不可中断进程数
• swpd: 使用的虚拟内存量
• free: 空闲内存量
• buff: 用作缓冲区的内存量
• cache: 用作缓存的内存量
• si: 从磁盘交换的内存量(/s)
• so: 交换到磁盘的内存量(/s)
• bi: 从块设备接收的块(blocks/s)
• bo: 发送到块设备的块(blocks/s)
• in: 每秒中断数
• cs: 每秒上下文切换数
• us: 用户空间CPU时间百分比
• sy: 内核空间CPU时间百分比
• id: 空闲时间百分比
• wa: 等待IO的时间百分比

sar(System Activity Reporter)是sysstat软件包的一部分,可以收集、报告和保存系统活动信息。
  1. # 安装sysstat
  2. sudo dnf install sysstat
  3. # 启用并启动sysstat服务
  4. sudo systemctl enable sysstat
  5. sudo systemctl start sysstat
  6. # 查看CPU使用情况
  7. sar -u
  8. # 查看内存使用情况
  9. sar -r
  10. # 查看网络统计
  11. sar -n DEV
复制代码

Performance Co-Pilot是一个系统性能和分析工具包,支持实时监控和历史数据收集。
  1. # 安装PCP
  2. sudo dnf install pcp
  3. # 启动PCP服务
  4. sudo systemctl start pmcd
  5. sudo systemctl enable pmcd
  6. # 使用pmstat查看基本性能指标
  7. pmstat
  8. # 使用pmchart进行图形化监控
  9. pmchart
复制代码

软件包管理

CentOS Stream使用DNF(Dandified YUM)作为其默认的软件包管理器,它是YUM的下一代版本,提供了更好的性能和更丰富的功能。
  1. # 更新所有软件包
  2. sudo dnf update
  3. # 安装软件包
  4. sudo dnf install package_name
  5. # 删除软件包
  6. sudo dnf remove package_name
  7. # 搜索软件包
  8. sudo dnf search keyword
  9. # 显示软件包信息
  10. sudo dnf info package_name
  11. # 列出所有已安装的软件包
  12. sudo dnf list installed
  13. # 查找提供特定文件的软件包
  14. sudo dnf provides /path/to/file
  15. # 清理缓存
  16. sudo dnf clean all
复制代码

DNF允许用户安装预定义的软件包组,这对于设置特定功能的服务器非常有用。
  1. # 列出所有可用的软件组
  2. sudo dnf group list
  3. # 查看特定软件组的详细信息
  4. sudo dnf group info "Group Name"
  5. # 安装软件组
  6. sudo dnf group install "Group Name"
  7. # 删除软件组
  8. sudo dnf group remove "Group Name"
复制代码

CentOS Stream允许用户添加和管理额外的软件仓库,以访问更多的软件包。
  1. # 列出所有启用的仓库
  2. sudo dnf repolist
  3. # 列出所有仓库(包括禁用的)
  4. sudo dnf repolist all
  5. # 启用仓库
  6. sudo dnf config-manager --enable repository_name
  7. # 禁用仓库
  8. sudo dnf config-manager --disable repository_name
  9. # 添加新仓库(以EPEL为例)
  10. sudo dnf install epel-release
复制代码

CentOS Stream引入了模块流的概念,允许用户安装同一软件的不同版本。
  1. # 列出所有可用的模块
  2. sudo dnf module list
  3. # 查看特定模块的详细信息
  4. sudo dnf module info module_name
  5. # 安装特定模块流
  6. sudo dnf module install module_name:stream
  7. # 切换到不同的模块流
  8. sudo dnf module reset module_name
  9. sudo dnf module enable module_name:stream
  10. sudo dnf module install module_name
复制代码

服务管理

CentOS Stream使用systemd作为其初始化系统和服务管理器,它取代了传统的SysV初始化系统。
  1. # 启动服务
  2. sudo systemctl start service_name
  3. # 停止服务
  4. sudo systemctl stop service_name
  5. # 重启服务
  6. sudo systemctl restart service_name
  7. # 重新加载服务配置
  8. sudo systemctl reload service_name
  9. # 启用服务(开机自启)
  10. sudo systemctl enable service_name
  11. # 禁用服务
  12. sudo systemctl disable service_name
  13. # 查看服务状态
  14. sudo systemctl status service_name
  15. # 检查服务是否启用
  16. sudo systemctl is-enabled service_name
  17. # 列出所有已启用的服务
  18. sudo systemctl list-unit-files | grep enabled
复制代码

创建自定义服务是CentOS Stream中的一个重要功能,允许用户管理自己的应用程序和脚本。

以下是一个创建自定义服务的示例:
  1. # 创建服务文件
  2. sudo nano /etc/systemd/system/myapp.service
复制代码

在文件中添加以下内容:
  1. [Unit]
  2. Description=My Custom Application
  3. After=network.target
  4. [Service]
  5. Type=simple
  6. User=myuser
  7. ExecStart=/path/to/myapp
  8. Restart=on-failure
  9. RestartSec=5s
  10. [Install]
  11. WantedBy=multi-user.target
复制代码

保存文件后,执行以下命令:
  1. # 重新加载systemd配置
  2. sudo systemctl daemon-reload
  3. # 启动服务
  4. sudo systemctl start myapp
  5. # 启用服务(开机自启)
  6. sudo systemctl enable myapp
  7. # 检查服务状态
  8. sudo systemctl status myapp
复制代码

systemd提供了定时器功能,可以替代传统的cron作业。

创建定时器示例:
  1. # 创建定时器文件
  2. sudo nano /etc/systemd/system/mytimer.timer
复制代码

在文件中添加以下内容:
  1. [Unit]
  2. Description=Run my task daily
  3. [Timer]
  4. OnCalendar=daily
  5. Persistent=true
  6. [Install]
  7. WantedBy=timers.target
复制代码

创建对应的服务文件:
  1. sudo nano /etc/systemd/system/mytimer.service
复制代码

在文件中添加以下内容:
  1. [Unit]
  2. Description=My Task
  3. [Service]
  4. Type=oneshot
  5. ExecStart=/path/to/mytask
复制代码

启用定时器:
  1. # 重新加载systemd配置
  2. sudo systemctl daemon-reload
  3. # 启用定时器
  4. sudo systemctl enable mytimer.timer
  5. # 启动定时器
  6. sudo systemctl start mytimer.timer
  7. # 检查定时器状态
  8. sudo systemctl list-timers --all
复制代码

安全管理

CentOS Stream提供了多种安全工具和功能,帮助管理员保护系统免受各种威胁。

SELinux(Security-Enhanced Linux)是Linux内核的一个安全模块,提供了强制访问控制(MAC)功能。
  1. # 检查SELinux状态
  2. sestatus
  3. # 临时设置SELinux模式
  4. sudo setenforce 0  # Permissive mode
  5. sudo setenforce 1  # Enforcing mode
  6. # 永久更改SELinux模式
  7. sudo nano /etc/selinux/config
复制代码

在配置文件中,将SELINUX=行更改为disabled、permissive或enforcing。
  1. # 查看SELinux布尔值
  2. getsebool -a
  3. # 设置SELinux布尔值
  4. sudo setsebool -P httpd_can_network_connect on
  5. # 查看文件的安全上下文
  6. ls -Z /path/to/file
  7. # 更改文件的安全上下文
  8. sudo chcon -t httpd_sys_content_t /path/to/file
  9. # 恢复文件的默认安全上下文
  10. sudo restorecon -v /path/to/file
复制代码

CentOS Stream使用firewalld作为其默认的防火墙管理工具,它提供了动态管理的防火墙,支持网络/防火墙区域定义。
  1. # 检查firewalld状态
  2. sudo systemctl status firewalld
  3. # 启动并启用firewalld
  4. sudo systemctl start firewalld
  5. sudo systemctl enable firewalld
  6. # 列出所有可用的区域
  7. sudo firewall-cmd --get-zones
  8. # 列出当前活动的区域
  9. sudo firewall-cmd --get-active-zones
  10. # 获取默认区域
  11. sudo firewall-cmd --get-default-zone
  12. # 列出特定区域的所有设置
  13. sudo firewall-cmd --zone=public --list-all
  14. # 开放端口
  15. sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
  16. # 关闭端口
  17. sudo firewall-cmd --zone=public --remove-port=8080/tcp --permanent
  18. # 开放服务
  19. sudo firewall-cmd --zone=public --add-service=http --permanent
  20. # 关闭服务
  21. sudo firewall-cmd --zone=public --remove-service=http --permanent
  22. # 重新加载防火墙配置
  23. sudo firewall-cmd --reload
复制代码

fail2ban是一个入侵防御软件,可以监控日志文件并根据预设规则禁止可疑IP地址。
  1. # 安装fail2ban
  2. sudo dnf install fail2ban
  3. # 启动并启用fail2ban
  4. sudo systemctl start fail2ban
  5. sudo systemctl enable fail2ban
  6. # 创建本地配置文件
  7. sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  8. # 编辑配置文件
  9. sudo nano /etc/fail2ban/jail.local
复制代码

在配置文件中,可以设置各种服务的保护规则,例如SSH:
  1. [sshd]
  2. enabled = true
  3. port = ssh
  4. logpath = %(sshd_log)s
  5. maxretry = 3
  6. bantime = 3600
复制代码

重启fail2ban服务:
  1. sudo systemctl restart fail2ban
复制代码

检查fail2ban状态:
  1. sudo fail2ban-client status
  2. sudo fail2ban-client status sshd
复制代码

网络配置高级功能

网络接口配置

CentOS Stream使用NetworkManager作为其网络配置工具,提供了灵活的网络管理功能。

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

nmtui是一个基于文本的用户界面,为那些更喜欢图形化界面的用户提供了方便。
  1. # 启动nmtui
  2. nmtui
复制代码

在nmtui界面中,可以使用键盘导航来编辑连接、激活连接和设置系统主机名。

虽然NetworkManager是推荐的网络配置方法,但CentOS Stream仍然支持传统的ifcfg文件配置方式。

配置文件位于/etc/sysconfig/network-scripts/目录下,例如ifcfg-eth0:
  1. DEVICE=eth0
  2. BOOTPROTO=none
  3. ONBOOT=yes
  4. IPADDR=192.168.1.100
  5. PREFIX=24
  6. GATEWAY=192.168.1.1
  7. DNS1=8.8.8.8
  8. DNS2=8.8.4.4
复制代码

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

网络绑定允许将多个网络接口组合成一个逻辑接口,以提高带宽和提供冗余。
  1. # 安装绑定工具
  2. sudo dnf install teamd
  3. # 创建绑定接口配置文件
  4. sudo nano /etc/sysconfig/network-scripts/ifcfg-bond0
复制代码

添加以下内容:
  1. DEVICE=bond0
  2. TYPE=Bond
  3. BONDING_MASTER=yes
  4. IPADDR=192.168.1.100
  5. PREFIX=24
  6. GATEWAY=192.168.1.1
  7. DNS1=8.8.8.8
  8. DNS2=8.8.4.4
  9. ONBOOT=yes
  10. BONDING_OPTS="mode=4 miimon=100"
复制代码

配置从属接口:
  1. sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码

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

对eth1接口重复上述步骤,然后重启网络服务:
  1. sudo systemctl restart NetworkManager
复制代码

验证绑定配置:
  1. cat /proc/net/bonding/bond0
复制代码

VLAN(虚拟局域网)允许在物理网络上创建逻辑分段。
  1. # 创建VLAN接口
  2. sudo nmcli connection add type vlan con-name vlan100 dev eth0 id 100
  3. # 配置VLAN接口
  4. sudo nmcli connection modify vlan100 ipv4.addresses 192.168.100.100/24
  5. sudo nmcli connection modify vlan100 ipv4.gateway 192.168.100.1
  6. sudo nmcli connection modify vlan100 ipv4.method manual
  7. # 激活VLAN接口
  8. sudo nmcli connection up vlan100
复制代码

防火墙高级配置

CentOS Stream的firewalld提供了丰富的功能,可以满足复杂的网络安全需求。

区域是firewalld的一个重要概念,它定义了信任级别和相应的规则。
  1. # 创建自定义区域
  2. sudo firewall-cmd --new-zone=myzone --permanent
  3. # 设置默认区域
  4. sudo firewall-cmd --set-default-zone=public
  5. # 为接口分配区域
  6. sudo firewall-cmd --zone=public --change-interface=eth0 --permanent
  7. # 列出所有区域及其规则
  8. sudo firewall-cmd --list-all-zones
复制代码

丰富的规则允许更复杂的防火墙规则配置。
  1. # 允许特定IP访问所有服务
  2. sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" accept' --permanent
  3. # 拒绝特定IP访问特定端口
  4. sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="10.0.0.5" port protocol="tcp" port="80" reject' --permanent
  5. # 允许特定IP访问特定服务
  6. sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.2.10" service name="http" accept' --permanent
  7. # 转发端口
  8. sudo firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
  9. # 重新加载防火墙配置
  10. sudo firewall-cmd --reload
复制代码

直接规则允许直接向防火墙添加iptables规则。
  1. # 添加直接规则
  2. sudo firewall-cmd --direct --add-rule ipv4 filter INPUT 0 -p tcp --dport 8080 -j ACCEPT --permanent
  3. # 列出所有直接规则
  4. sudo firewall-cmd --direct --get-all-rules
  5. # 重新加载防火墙配置
  6. sudo firewall-cmd --reload
复制代码

网络服务配置

CentOS Stream提供了多种网络服务,可以满足企业级应用需求。

DHCP(动态主机配置协议)服务器自动分配IP地址给网络中的设备。
  1. # 安装DHCP服务器
  2. sudo dnf install dhcp-server
  3. # 配置DHCP服务器
  4. sudo nano /etc/dhcp/dhcpd.conf
复制代码

添加以下配置:
  1. # DHCP服务器配置
  2. default-lease-time 600;
  3. max-lease-time 7200;
  4. authoritative;
  5. subnet 192.168.1.0 netmask 255.255.255.0 {
  6.   range 192.168.1.100 192.168.1.200;
  7.   option routers 192.168.1.1;
  8.   option domain-name-servers 8.8.8.8, 8.8.4.4;
  9.   option domain-name "example.com";
  10. }
  11. # 静态IP分配
  12. host fixed-host {
  13.   hardware ethernet 00:0C:29:AA:BB:CC;
  14.   fixed-address 192.168.1.50;
  15. }
复制代码

启动并启用DHCP服务器:
  1. sudo systemctl start dhcpd
  2. sudo systemctl enable dhcpd
复制代码

BIND是CentOS Stream中最常用的DNS服务器软件。
  1. # 安装BIND
  2. sudo dnf install bind bind-utils
  3. # 配置BIND
  4. sudo nano /etc/named.conf
复制代码

基本配置示例:
  1. options {
  2.   listen-on port 53 { 127.0.0.1; 192.168.1.1; };
  3.   listen-on-v6 port 53 { ::1; };
  4.   directory "/var/named";
  5.   dump-file "/var/named/data/cache_dump.db";
  6.   statistics-file "/var/named/data/named_stats.txt";
  7.   memstatistics-file "/var/named/data/named_mem_stats.txt";
  8.   recursing-file "/var/named/data/named.recursing";
  9.   secroots-file "/var/named/data/named.secroots";
  10.   allow-query { localhost; 192.168.1.0/24; };
  11.   
  12.   recursion yes;
  13.   
  14.   dnssec-enable yes;
  15.   dnssec-validation yes;
  16.   
  17.   managed-keys-directory "/var/named/dynamic";
  18.   
  19.   pid-file "/run/named/named.pid";
  20.   session-keyfile "/run/named/session.key";
  21. };
  22. logging {
  23.   channel default_debug {
  24.     file "data/named.run";
  25.     severity dynamic;
  26.   };
  27. };
  28. zone "." IN {
  29.   type hint;
  30.   file "named.ca";
  31. };
  32. zone "example.com" IN {
  33.   type master;
  34.   file "example.com.zone";
  35.   allow-update { none; };
  36. };
  37. zone "1.168.192.in-addr.arpa" IN {
  38.   type master;
  39.   file "192.168.1.zone";
  40.   allow-update { none; };
  41. };
  42. include "/etc/named.rfc1912.zones";
  43. include "/etc/named.root.key";
复制代码

创建正向区域文件:
  1. sudo nano /var/named/example.com.zone
复制代码

添加以下内容:
  1. $TTL 86400
  2. @   IN  SOA ns1.example.com. admin.example.com. (
  3.     2023081501  ; Serial
  4.     3600        ; Refresh
  5.     1800        ; Retry
  6.     604800      ; Expire
  7.     86400       ; Minimum TTL
  8. )
  9. @   IN  NS  ns1.example.com.
  10. @   IN  A   192.168.1.1
  11. ns1 IN  A   192.168.1.1
  12. www IN  A   192.168.1.100
  13. mail IN  A   192.168.1.150
复制代码

创建反向区域文件:
  1. sudo nano /var/named/192.168.1.zone
复制代码

添加以下内容:
  1. $TTL 86400
  2. @   IN  SOA ns1.example.com. admin.example.com. (
  3.     2023081501  ; Serial
  4.     3600        ; Refresh
  5.     1800        ; Retry
  6.     604800      ; Expire
  7.     86400       ; Minimum TTL
  8. )
  9. @   IN  NS  ns1.example.com.
  10. 1   IN  PTR ns1.example.com.
  11. 100 IN  PTR www.example.com.
  12. 150 IN  PTR mail.example.com.
复制代码

设置正确的文件权限:
  1. sudo chown -R named:named /var/named
  2. sudo restorecon -Rv /var/named
复制代码

启动并启用BIND:
  1. sudo systemctl start named
  2. sudo systemctl enable named
复制代码

Apache HTTP Server是CentOS Stream中最常用的Web服务器。
  1. # 安装Apache
  2. sudo dnf install httpd
  3. # 启动并启用Apache
  4. sudo systemctl start httpd
  5. sudo systemctl enable httpd
  6. # 配置防火墙允许HTTP和HTTPS流量
  7. sudo firewall-cmd --permanent --add-service={http,https}
  8. sudo firewall-cmd --reload
复制代码

创建虚拟主机配置:
  1. sudo nano /etc/httpd/conf.d/example.com.conf
复制代码

添加以下内容:
  1. <VirtualHost *:80>
  2.     ServerName example.com
  3.     ServerAlias www.example.com
  4.     DocumentRoot /var/www/example.com
  5.     ErrorLog /var/log/httpd/example.com-error.log
  6.     CustomLog /var/log/httpd/example.com-access.log combined
  7. </VirtualHost>
复制代码

创建网站目录和文件:
  1. sudo mkdir -p /var/www/example.com
  2. sudo echo "<h1>Welcome to Example.com</h1>" | sudo tee /var/www/example.com/index.html
  3. sudo chown -R apache:apache /var/www/example.com
  4. sudo restorecon -Rv /var/www/example.com
复制代码

重启Apache服务:
  1. sudo systemctl restart httpd
复制代码

VSFTPD是CentOS Stream中最安全、最常用的FTP服务器。
  1. # 安装VSFTPD
  2. sudo dnf install vsftpd
  3. # 配置VSFTPD
  4. sudo nano /etc/vsftpd/vsftpd.conf
复制代码

基本配置示例:
  1. anonymous_enable=NO
  2. local_enable=YES
  3. write_enable=YES
  4. local_umask=022
  5. dirmessage_enable=YES
  6. xferlog_enable=YES
  7. connect_from_port_20=YES
  8. xferlog_std_format=YES
  9. listen=NO
  10. listen_ipv6=YES
  11. pam_service_name=vsftpd
  12. userlist_enable=YES
  13. userlist_file=/etc/vsftpd/user_list
  14. userlist_deny=NO
  15. chroot_local_user=YES
  16. allow_writeable_chroot=YES
  17. pasv_min_port=40000
  18. pasv_max_port=50000
复制代码

创建FTP用户并设置密码:
  1. sudo useradd -m ftpuser
  2. sudo passwd ftpuser
复制代码

将用户添加到允许列表:
  1. echo "ftpuser" | sudo tee -a /etc/vsftpd/user_list
复制代码

启动并启用VSFTPD:
  1. sudo systemctl start vsftpd
  2. sudo systemctl enable vsftpd
复制代码

配置防火墙允许FTP流量:
  1. sudo firewall-cmd --permanent --add-service=ftp
  2. sudo firewall-cmd --reload
复制代码

高可用性网络配置

CentOS Stream提供了多种高可用性解决方案,确保关键服务的连续性。

网络绑定(Teaming)是一种将多个网络接口组合成一个逻辑接口的方法,以提高带宽和提供冗余。
  1. # 安装teamd
  2. sudo dnf install teamd
  3. # 创建team接口配置文件
  4. sudo nano /etc/sysconfig/network-scripts/ifcfg-team0
复制代码

添加以下内容:
  1. DEVICE=team0
  2. DEVICETYPE=Team
  3. TEAM_CONFIG="{"runner": {"name": "activebackup"}}"
  4. BOOTPROTO=none
  5. IPADDR=192.168.1.100
  6. PREFIX=24
  7. GATEWAY=192.168.1.1
  8. DNS1=8.8.8.8
  9. DNS2=8.8.4.4
  10. ONBOOT=yes
复制代码

配置从属接口:
  1. sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
复制代码

添加以下内容:
  1. DEVICE=eth0
  2. DEVICETYPE=TeamPort
  3. TEAM_MASTER=team0
  4. ONBOOT=yes
复制代码

对eth1接口重复上述步骤,然后重启网络服务:
  1. sudo systemctl restart NetworkManager
复制代码

验证team配置:
  1. teamdctl team0 state
复制代码

VLAN桥接允许在物理网络上创建逻辑分段,并将这些分段桥接到虚拟机或其他网络设备。
  1. # 安装bridge-utils
  2. sudo dnf install bridge-utils
  3. # 创建桥接接口
  4. sudo nmcli connection add type bridge con-name br0 ifname br0
  5. # 配置桥接接口
  6. sudo nmcli connection modify br0 ipv4.addresses 192.168.1.100/24
  7. sudo nmcli connection modify br0 ipv4.gateway 192.168.1.1
  8. sudo nmcli connection modify br0 ipv4.dns "8.8.8.8 8.8.4.4"
  9. sudo nmcli connection modify br0 ipv4.method manual
  10. # 创建VLAN接口
  11. sudo nmcli connection add type vlan con-name vlan100 dev eth0 id 100
  12. # 将VLAN接口添加到桥接
  13. sudo nmcli connection add type bridge-slave con-name br0-slave100 ifname vlan100 master br0
  14. # 激活连接
  15. sudo nmcli connection up br0
  16. sudo nmcli connection up vlan100
  17. sudo nmcli connection up br0-slave100
复制代码

验证桥接配置:
  1. brctl show
复制代码

使用Keepalived和HAProxy可以实现高可用性和负载均衡。
  1. # 安装Keepalived和HAProxy
  2. sudo dnf install keepalived haproxy
  3. # 配置Keepalived
  4. sudo nano /etc/keepalived/keepalived.conf
复制代码

主节点配置示例:
  1. vrrp_script chk_haproxy {
  2.   script "killall -0 haproxy"
  3.   interval 2
  4.   weight 2
  5. }
  6. vrrp_instance VI_1 {
  7.   state MASTER
  8.   interface eth0
  9.   virtual_router_id 51
  10.   priority 101
  11.   advert_int 1
  12.   authentication {
  13.     auth_type PASS
  14.     auth_pass secret
  15.   }
  16.   virtual_ipaddress {
  17.     192.168.1.200/24
  18.   }
  19.   track_script {
  20.     chk_haproxy
  21.   }
  22. }
复制代码

备份节点配置示例:
  1. vrrp_script chk_haproxy {
  2.   script "killall -0 haproxy"
  3.   interval 2
  4.   weight 2
  5. }
  6. vrrp_instance VI_1 {
  7.   state BACKUP
  8.   interface eth0
  9.   virtual_router_id 51
  10.   priority 100
  11.   advert_int 1
  12.   authentication {
  13.     auth_type PASS
  14.     auth_pass secret
  15.   }
  16.   virtual_ipaddress {
  17.     192.168.1.200/24
  18.   }
  19.   track_script {
  20.     chk_haproxy
  21.   }
  22. }
复制代码

配置HAProxy:
  1. sudo nano /etc/haproxy/haproxy.cfg
复制代码

添加以下内容:
  1. frontend http-in
  2.   bind *:80
  3.   default_backend servers
  4. backend servers
  5.   balance roundrobin
  6.   server server1 192.168.1.101:80 check
  7.   server server2 192.168.1.102:80 check
复制代码

启动并启用Keepalived和HAProxy:
  1. sudo systemctl start keepalived
  2. sudo systemctl enable keepalived
  3. sudo systemctl start haproxy
  4. sudo systemctl enable haproxy
复制代码

容器化与虚拟化支持

CentOS Stream提供了强大的容器化和虚拟化支持,使企业能够构建灵活、高效的IT基础设施。

使用Podman进行容器管理

Podman是CentOS Stream中的默认容器引擎,它提供了一个与Docker兼容的CLI,但不需要守护进程。
  1. # 安装Podman
  2. sudo dnf install podman
  3. # 搜索容器镜像
  4. podman search nginx
  5. # 拉取容器镜像
  6. podman pull nginx
  7. # 列出本地镜像
  8. podman images
  9. # 运行容器
  10. podman run -d -p 8080:80 --name mynginx nginx
  11. # 列出运行中的容器
  12. podman ps
  13. # 列出所有容器(包括已停止的)
  14. podman ps -a
  15. # 停止容器
  16. podman stop mynginx
  17. # 启动容器
  18. podman start mynginx
  19. # 删除容器
  20. podman rm mynginx
  21. # 删除镜像
  22. podman rmi nginx
复制代码

创建Dockerfile:
  1. mkdir myapp && cd myapp
  2. nano Dockerfile
复制代码

添加以下内容:
  1. FROM centos:stream8
  2. RUN dnf install -y httpd
  3. COPY index.html /var/www/html/
  4. EXPOSE 80
  5. CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]
复制代码

创建index.html文件:
  1. echo "<h1>Welcome to My Custom Container</h1>" > index.html
复制代码

构建容器镜像:
  1. podman build -t myapp .
复制代码

运行自定义容器:
  1. podman run -d -p 8081:80 --name myapp-container myapp
复制代码

Pod是一组共享资源的容器,类似于Kubernetes中的Pod。
  1. # 创建Pod
  2. podman pod create --name mypod -p 8082:80
  3. # 在Pod中运行容器
  4. podman run -d --pod mypod --name mynginx nginx
  5. # 查看Pod信息
  6. podman pod inspect mypod
  7. # 列出Pod中的容器
  8. podman pod ps --pod mypod
  9. # 停止Pod
  10. podman pod stop mypod
  11. # 启动Pod
  12. podman pod start mypod
  13. # 删除Pod
  14. podman pod rm mypod
复制代码

使用Kubernetes进行容器编排

CentOS Stream提供了对Kubernetes的支持,使企业能够构建和管理大规模的容器化应用。
  1. # 安装Minikube
  2. curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
  3. sudo install minikube-linux-amd64 /usr/local/bin/minikube
  4. # 安装kubectl
  5. curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  6. sudo install kubectl /usr/local/bin/kubectl
  7. # 启动Minikube
  8. minikube start --driver=podman
  9. # 检查Minikube状态
  10. minikube status
复制代码

创建部署配置文件:
  1. nano myapp-deployment.yaml
复制代码

添加以下内容:
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4.   name: myapp-deployment
  5. spec:
  6.   replicas: 3
  7.   selector:
  8.     matchLabels:
  9.       app: myapp
  10.   template:
  11.     metadata:
  12.       labels:
  13.         app: myapp
  14.     spec:
  15.       containers:
  16.       - name: myapp
  17.         image: nginx
  18.         ports:
  19.         - containerPort: 80
  20. ---
  21. apiVersion: v1
  22. kind: Service
  23. metadata:
  24.   name: myapp-service
  25. spec:
  26.   selector:
  27.     app: myapp
  28.   ports:
  29.     - protocol: TCP
  30.       port: 80
  31.       targetPort: 80
  32.   type: LoadBalancer
复制代码

部署应用:
  1. kubectl apply -f myapp-deployment.yaml
复制代码

检查部署状态:
  1. kubectl get deployments
  2. kubectl get pods
  3. kubectl get services
复制代码

访问应用:
  1. minikube service myapp-service
复制代码

使用KVM进行虚拟化

CentOS Stream支持KVM(Kernel-based Virtual Machine),允许在Linux系统上运行虚拟机。
  1. # 检查系统是否支持虚拟化
  2. grep -E 'svm|vmx' /proc/cpuinfo
  3. # 安装KVM和相关工具
  4. sudo dnf install qemu-kvm libvirt virt-install virt-manager
  5. # 添加用户到libvirt组
  6. sudo usermod -aG libvirt $(whoami)
  7. # 启动并启用libvirtd服务
  8. sudo systemctl start libvirtd
  9. sudo systemctl enable libvirtd
  10. # 验证KVM安装
  11. virsh list --all
复制代码
  1. # 下载操作系统镜像
  2. wget https://dl.fedoraproject.org/pub/fedora/linux/releases/35/Server/x86_64/iso/Fedora-Server-dvd-x86_64-35-1.2.iso
  3. # 创建虚拟机磁盘
  4. sudo qemu-img create -f qcow2 /var/lib/libvirt/images/fedora35.qcow2 20G
  5. # 创建虚拟机
  6. sudo virt-install \
  7.   --name fedora35 \
  8.   --memory 2048 \
  9.   --vcpus 2 \
  10.   --disk path=/var/lib/libvirt/images/fedora35.qcow2,size=20 \
  11.   --cdrom /path/to/Fedora-Server-dvd-x86_64-35-1.2.iso \
  12.   --os-variant fedora35 \
  13.   --network network=default
复制代码
  1. # 列出所有虚拟机
  2. virsh list --all
  3. # 启动虚拟机
  4. virsh start fedora35
  5. # 连接到虚拟机控制台
  6. virsh console fedora35
  7. # 关闭虚拟机
  8. virsh shutdown fedora35
  9. # 强制关闭虚拟机
  10. virsh destroy fedora35
  11. # 暂停虚拟机
  12. virsh suspend fedora35
  13. # 恢复虚拟机
  14. virsh resume fedora35
  15. # 删除虚拟机
  16. virsh undefine fedora35
复制代码

自动化与脚本管理

CentOS Stream提供了多种自动化工具和技术,帮助系统管理员提高效率并减少人为错误。

使用Ansible进行自动化配置管理

Ansible是一个强大的自动化工具,可以用于配置管理、应用部署和任务自动化。
  1. # 安装Ansible
  2. sudo dnf install ansible
  3. # 创建Ansible配置文件
  4. mkdir -p ~/ansible && cd ~/ansible
  5. nano ansible.cfg
复制代码

添加以下内容:
  1. [defaults]
  2. inventory = inventory
  3. host_key_checking = False
  4. remote_user = your_username
  5. ask_pass = False
  6. [privilege_escalation]
  7. become = True
  8. become_method = sudo
  9. become_user = root
  10. become_ask_pass = False
复制代码

创建主机清单文件:
  1. nano inventory
复制代码

添加以下内容:
  1. [webservers]
  2. web1.example.com
  3. web2.example.com
  4. [databases]
  5. db1.example.com
  6. [all:vars]
  7. ansible_python_interpreter=/usr/bin/python3
复制代码

创建一个简单的Playbook来安装和配置Web服务器:
  1. nano webserver.yml
复制代码

添加以下内容:
  1. ---
  2. - name: Install and configure Apache web server
  3.   hosts: webservers
  4.   become: yes
  5.   
  6.   tasks:
  7.     - name: Install httpd package
  8.       dnf:
  9.         name: httpd
  10.         state: present
  11.    
  12.     - name: Start and enable httpd service
  13.       systemd:
  14.         name: httpd
  15.         state: started
  16.         enabled: yes
  17.    
  18.     - name: Open firewall for HTTP
  19.       firewalld:
  20.         service: http
  21.         permanent: yes
  22.         state: enabled
  23.         immediate: yes
  24.    
  25.     - name: Create custom index.html
  26.       copy:
  27.         content: "<h1>Welcome to {{ ansible_hostname }}</h1>"
  28.         dest: /var/www/html/index.html
复制代码

运行Playbook:
  1. ansible-playbook webserver.yml
复制代码

Roles是Ansible中组织Playbook的一种方式,可以提高代码的可重用性和可维护性。

创建Role结构:
  1. mkdir -p roles/webserver/{tasks,handlers,templates,files,vars,defaults,meta}
复制代码

创建任务文件:
  1. nano roles/webserver/tasks/main.yml
复制代码

添加以下内容:
  1. ---
  2. - name: Install httpd package
  3.   dnf:
  4.     name: httpd
  5.     state: present
  6.   notify: Start httpd
  7. - name: Open firewall for HTTP
  8.   firewalld:
  9.     service: http
  10.     permanent: yes
  11.     state: enabled
  12.     immediate: yes
  13. - name: Create custom index.html
  14.   template:
  15.     src: index.html.j2
  16.     dest: /var/www/html/index.html
复制代码

创建处理器文件:
  1. nano roles/webserver/handlers/main.yml
复制代码

添加以下内容:
  1. ---
  2. - name: Start httpd
  3.   systemd:
  4.     name: httpd
  5.     state: started
  6.     enabled: yes
复制代码

创建模板文件:
  1. nano roles/webserver/templates/index.html.j2
复制代码

添加以下内容:
  1. <h1>Welcome to {{ ansible_hostname }}</h1>
  2. <p>This server is managed by Ansible.</p>
  3. <p>Last updated: {{ ansible_date_time.iso8601 }}</p>
复制代码

创建使用Role的Playbook:
  1. nano site.yml
复制代码

添加以下内容:
  1. ---
  2. - name: Configure webservers
  3.   hosts: webservers
  4.   become: yes
  5.   roles:
  6.     - webserver
复制代码

运行Playbook:
  1. ansible-playbook site.yml
复制代码

使用Shell脚本进行系统管理

Shell脚本是Linux系统管理的传统工具,可以快速实现各种自动化任务。

创建系统监控脚本:
  1. nano system_monitor.sh
复制代码

添加以下内容:
  1. #!/bin/bash
  2. # 系统监控脚本
  3. # 输出到日志文件
  4. LOG_FILE="/var/log/system_monitor.log"
  5. DATE=$(date +"%Y-%m-%d %H:%M:%S")
  6. # 获取系统信息
  7. HOSTNAME=$(hostname)
  8. UPTIME=$(uptime -p)
  9. CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
  10. MEMORY_USAGE=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2}')
  11. DISK_USAGE=$(df -h | awk '$NF=="/"{printf "%s", $5}')
  12. # 记录到日志文件
  13. echo "[$DATE] System Status Report for $HOSTNAME" >> $LOG_FILE
  14. echo "Uptime: $UPTIME" >> $LOG_FILE
  15. echo "CPU Usage: $CPU_USAGE%" >> $LOG_FILE
  16. echo "Memory Usage: $MEMORY_USAGE" >> $LOG_FILE
  17. echo "Disk Usage: $DISK_USAGE" >> $LOG_FILE
  18. echo "----------------------------------------" >> $LOG_FILE
  19. # 检查CPU使用率是否超过阈值
  20. THRESHOLD=80
  21. if (( $(echo "$CPU_USAGE > $THRESHOLD" | bc -l) )); then
  22.     echo "[$DATE] WARNING: High CPU usage detected: $CPU_USAGE%" >> $LOG_FILE
  23.     # 发送邮件通知
  24.     echo "High CPU usage detected on $HOSTNAME: $CPU_USAGE%" | mail -s "CPU Alert: $HOSTNAME" admin@example.com
  25. fi
  26. # 检查磁盘使用率是否超过阈值
  27. DISK_THRESHOLD=90
  28. if [ ${DISK_USAGE%?} -gt $DISK_THRESHOLD ]; then
  29.     echo "[$DATE] WARNING: High disk usage detected: $DISK_USAGE" >> $LOG_FILE
  30.     # 发送邮件通知
  31.     echo "High disk usage detected on $HOSTNAME: $DISK_USAGE" | mail -s "Disk Alert: $HOSTNAME" admin@example.com
  32. fi
复制代码

使脚本可执行:
  1. chmod +x system_monitor.sh
复制代码

设置定时任务:
  1. crontab -e
复制代码

添加以下内容以每小时运行一次脚本:
  1. 0 * * * * /path/to/system_monitor.sh
复制代码

创建服务文件:
  1. sudo nano /etc/systemd/system/system-monitor.service
复制代码

添加以下内容:
  1. [Unit]
  2. Description=System Monitor Service
  3. [Service]
  4. Type=oneshot
  5. ExecStart=/path/to/system_monitor.sh
复制代码

创建定时器文件:
  1. sudo nano /etc/systemd/system/system-monitor.timer
复制代码

添加以下内容:
  1. [Unit]
  2. Description=Run system monitor every hour
  3. Requires=system-monitor.service
  4. [Timer]
  5. OnCalendar=hourly
  6. Persistent=true
  7. [Install]
  8. WantedBy=timers.target
复制代码

启用并启动定时器:
  1. sudo systemctl daemon-reload
  2. sudo systemctl enable system-monitor.timer
  3. sudo systemctl start system-monitor.timer
复制代码

检查定时器状态:
  1. sudo systemctl list-timers --all
复制代码

故障排除与最佳实践

系统日志分析

CentOS Stream使用journald和传统的日志文件来记录系统事件。
  1. # 查看所有日志
  2. journalctl
  3. # 查看当前启动的日志
  4. journalctl -b
  5. # 查看特定服务的日志
  6. journalctl -u httpd
  7. # 查看特定时间范围的日志
  8. journalctl --since "2023-08-01" --until "2023-08-15"
  9. # 实时跟踪日志
  10. journalctl -f
  11. # 查看内核日志
  12. journalctl -k
  13. # 查看错误日志
  14. journalctl -p err
复制代码

Logrotate用于管理日志文件的轮转和压缩。
  1. # 安装logrotate
  2. sudo dnf install logrotate
  3. # 创建自定义日志轮转配置
  4. sudo nano /etc/logrotate.d/myapp
复制代码

添加以下内容:
  1. /var/log/myapp/*.log {
  2.     daily
  3.     missingok
  4.     rotate 7
  5.     compress
  6.     delaycompress
  7.     notifempty
  8.     create 644 myuser mygroup
  9.     postrotate
  10.         /usr/bin/systemctl reload myapp
  11.     endscript
  12. }
复制代码

测试日志轮转配置:
  1. sudo logrotate -d /etc/logrotate.d/myapp
复制代码

强制执行日志轮转:
  1. sudo logrotate -f /etc/logrotate.d/myapp
复制代码

性能调优

CentOS Stream提供了多种工具和技术来优化系统性能。

Tuned是一个系统调优守护进程,可以根据特定的用例优化系统性能。
  1. # 安装tuned
  2. sudo dnf install tuned
  3. # 启动并启用tuned
  4. sudo systemctl start tuned
  5. sudo systemctl enable tuned
  6. # 列出可用的配置文件
  7. sudo tuned-adm list
  8. # 应用特定的配置文件
  9. sudo tuned-adm profile throughput-performance
  10. # 查看当前活动的配置文件
  11. sudo tuned-adm active
复制代码

通过修改/etc/sysctl.conf文件或创建自定义配置文件来调整内核参数。
  1. # 创建自定义内核参数配置文件
  2. sudo nano /etc/sysctl.d/99-custom.conf
复制代码

添加以下内容:
  1. # 网络调优
  2. net.core.rmem_max = 16777216
  3. net.core.wmem_max = 16777216
  4. net.ipv4.tcp_rmem = 4096 87380 16777216
  5. net.ipv4.tcp_wmem = 4096 65536 16777216
  6. net.ipv4.tcp_congestion_control = bbr
  7. net.ipv4.tcp_fastopen = 3
  8. # 文件系统调优
  9. fs.file-max = 100000
  10. vm.swappiness = 10
  11. vm.dirty_ratio = 60
  12. vm.dirty_background_ratio = 2
复制代码

应用内核参数:
  1. sudo sysctl -p /etc/sysctl.d/99-custom.conf
复制代码

通过修改/etc/security/limits.conf文件来设置用户资源限制。
  1. sudo nano /etc/security/limits.conf
复制代码

添加以下内容:
  1. # 增加打开文件数量限制
  2. * soft nofile 65536
  3. * hard nofile 65536
  4. # 增加进程数量限制
  5. * soft nproc 4096
  6. * hard nproc 16384
复制代码

安全最佳实践

CentOS Stream提供了多种安全功能和最佳实践,帮助保护系统免受各种威胁。
  1. # 更新系统
  2. sudo dnf update -y
  3. # 安装安全工具
  4. sudo dnf install -y setroubleshoot-server setools setools-console policycoreutils-python-utils
  5. # 禁用不必要的服务
  6. sudo systemctl disable avahi-daemon
  7. sudo systemctl disable cups
  8. # 配置SSH安全
  9. sudo nano /etc/ssh/sshd_config
复制代码

修改以下设置:
  1. PermitRootLogin no
  2. PasswordAuthentication no
  3. Port 2222
  4. Protocol 2
  5. MaxAuthTries 3
  6. LoginGraceTime 60
复制代码

重启SSH服务:
  1. sudo systemctl restart sshd
复制代码
  1. # 创建新的区域
  2. sudo firewall-cmd --permanent --new-zone=internal
  3. # 设置区域规则
  4. sudo firewall-cmd --permanent --zone=internal --set-target=DROP
  5. sudo firewall-cmd --permanent --zone=internal --add-service=ssh
  6. sudo firewall-cmd --permanent --zone=internal --add-service=dns
  7. sudo firewall-cmd --permanent --zone=internal --add-service=dhcp
  8. # 将接口分配到区域
  9. sudo firewall-cmd --permanent --zone=internal --change-interface=eth1
  10. # 重新加载防火墙配置
  11. sudo firewall-cmd --reload
复制代码

AIDE(Advanced Intrusion Detection Environment)是一个文件完整性检查工具。
  1. # 安装AIDE
  2. sudo dnf install aide
  3. # 初始化AIDE数据库
  4. sudo aide --init
  5. # 重命名数据库
  6. sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
  7. # 执行检查
  8. sudo aide --check
  9. # 创建定时任务
  10. sudo nano /etc/cron.daily/aide
复制代码

添加以下内容:
  1. #!/bin/bash
  2. /usr/sbin/aide --check | /usr/bin/mail -s "AIDE Report for $(hostname)" admin@example.com
复制代码

使脚本可执行:
  1. sudo chmod +x /etc/cron.daily/aide
复制代码

结论

CentOS Stream作为企业级Linux发行版,提供了丰富的高级功能和工具,从系统管理到网络配置,从容器化到自动化,为企业构建和维护高效、安全、可靠的IT基础设施提供了全面的支持。

通过本文的介绍,我们深入了解了CentOS Stream的各个方面,包括系统监控与性能优化、软件包管理、服务管理、安全管理、网络配置、容器化与虚拟化支持、自动化与脚本管理以及故障排除与最佳实践。这些功能和工具使系统管理员和网络工程师能够更好地管理和维护企业级系统,提高工作效率,减少人为错误,并确保系统的安全性和稳定性。

无论是小型企业还是大型数据中心,CentOS Stream都能提供所需的灵活性、可靠性和性能,满足各种企业级应用需求。通过充分利用CentOS Stream的强大功能,企业可以构建现代化、高效、安全的IT基础设施,为业务发展提供坚实的技术支持。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则