活动公告

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

Red Hat Enterprise Linux 7.4网络配置详解 企业级Linux系统网络设置与管理从入门到精通

SunJu_FaceMall

3万

主题

2720

科技点

3万

积分

执行版主

碾压王

积分
32881

塔罗立华奏

执行版主 发表于 2025-8-28 21:00:01 | 显示全部楼层 |阅读模式

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

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

x
引言

Red Hat Enterprise Linux (RHEL) 7.4是企业级Linux发行版中的重要版本,其网络配置功能强大且灵活,是系统管理员必须掌握的核心技能之一。本文将全面介绍RHEL 7.4网络配置的各个方面,从基础概念到高级配置,帮助读者从入门到精通掌握企业级Linux系统的网络设置与管理。

在RHEL 7.4中,网络管理相比之前的版本有了显著变化,主要引入了NetworkManager作为默认的网络管理工具,替代了传统的network服务。这一变化使得网络配置更加灵活和动态,但也要求管理员掌握新的工具和方法。

网络配置基础

网络接口概念

在RHEL 7.4中,网络接口是系统与网络通信的端点。每个网络接口都有一个唯一的名称,如eth0、ens33或enp0s3等。RHEL 7.4采用了可预测的网络接口命名规则,使得接口名称更加稳定和可预测。

IP地址与子网掩码

IP地址是网络中设备的唯一标识,分为IPv4和IPv6两种。IPv4地址通常表示为点分十进制格式,如192.168.1.100。子网掩码用于确定IP地址的网络部分和主机部分,常见的表示方法有CIDR(如/24)和点分十进制(如255.255.255.0)。

网关与DNS

默认网关是系统发送到其他网络的数据包的下一跳地址。DNS(Domain Name System)则负责将域名解析为IP地址,是互联网通信的重要组成部分。

查看网络状态

在开始配置之前,我们先了解如何查看当前网络状态:
  1. # 查看所有网络接口状态
  2. ip addr show
  3. # 或使用传统命令
  4. ifconfig -a
  5. # 查看路由表
  6. ip route show
  7. # 或使用传统命令
  8. route -n
  9. # 查看DNS配置
  10. cat /etc/resolv.conf
复制代码

RHEL 7.4网络配置工具介绍

RHEL 7.4提供了多种网络配置工具,管理员可以根据自己的需求和使用习惯选择合适的工具。

NetworkManager

NetworkManager是RHEL 7.4的默认网络管理工具,它提供了动态网络控制,支持各种网络连接类型,并能够自动检测和配置网络连接。

NetworkManager包含以下几个组件:

1. NetworkManager守护进程:核心服务,负责管理和监控网络连接。
2. nmcli:命令行工具,用于控制NetworkManager。
3. nmtui:文本用户界面工具,提供基于终端的图形界面。
4. nm-connection-editor:图形界面工具,适用于桌面环境。

nmcli命令行工具

nmcli是NetworkManager的命令行界面,功能强大且适合脚本使用。基本语法如下:
  1. nmcli [OPTIONS] OBJECT { COMMAND | help }
复制代码

其中OBJECT可以是connection、device、agent等。
  1. # 显示所有连接
  2. nmcli connection show
  3. # 显示所有设备状态
  4. nmcli device status
  5. # 启动连接
  6. nmcli connection up <connection_name>
  7. # 停止连接
  8. nmcli connection down <connection_name>
复制代码

nmtui文本用户界面

nmtui是一个基于文本的用户界面,适合那些更喜欢图形界面但只拥有终端访问权限的用户。

启动nmtui:
  1. nmtui
复制代码

nmtui提供了三个主要功能:

1. 编辑连接
2. 激活连接
3. 设置系统主机名

ifcfg文件配置

除了NetworkManager工具,RHEL 7.4仍然支持通过ifcfg文件进行网络配置。这些配置文件位于/etc/sysconfig/network-scripts/目录下,文件名格式为ifcfg-<interface_name>。

例如,ifcfg-ens33文件可能包含以下内容:
  1. TYPE=Ethernet
  2. BOOTPROTO=dhcp
  3. DEFROUTE=yes
  4. PEERDNS=yes
  5. PEERROUTES=yes
  6. IPV4_FAILURE_FATAL=no
  7. IPV6INIT=yes
  8. IPV6_AUTOCONF=yes
  9. IPV6_DEFROUTE=yes
  10. IPV6_PEERDNS=yes
  11. IPV6_PEERROUTES=yes
  12. IPV6_FAILURE_FATAL=no
  13. NAME=ens33
  14. UUID=1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p
  15. DEVICE=ens33
  16. ONBOOT=yes
复制代码

静态IP配置

静态IP配置是指为网络接口手动指定固定的IP地址、子网掩码、网关和DNS服务器。这种配置方式适用于服务器环境,因为服务器通常需要固定的IP地址以便其他设备能够稳定地访问。

使用nmcli配置静态IP

以下是使用nmcli配置静态IP的详细步骤:
  1. # 1. 添加新的静态IP连接配置
  2. nmcli connection add type ethernet ifname ens33 con-name static-ip
  3. # 2. 设置IPv4地址、子网掩码和网关
  4. nmcli connection modify static-ip ipv4.addresses 192.168.1.100/24
  5. nmcli connection modify static-ip ipv4.gateway 192.168.1.1
  6. # 3. 设置DNS服务器
  7. nmcli connection modify static-ip ipv4.dns "8.8.8.8 8.8.4.4"
  8. # 4. 设置连接模式为手动(静态IP)
  9. nmcli connection modify static-ip ipv4.method manual
  10. # 5. 启用自动连接
  11. nmcli connection modify static-ip connection.autoconnect yes
  12. # 6. 激活连接
  13. nmcli connection up static-ip
  14. # 7. 验证配置
  15. ip addr show ens33
  16. ip route show
  17. cat /etc/resolv.conf
复制代码

使用ifcfg文件配置静态IP

编辑网络接口配置文件,例如/etc/sysconfig/network-scripts/ifcfg-ens33:
  1. TYPE=Ethernet
  2. BOOTPROTO=static
  3. DEFROUTE=yes
  4. IPV4_FAILURE_FATAL=no
  5. NAME=ens33
  6. UUID=1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p
  7. DEVICE=ens33
  8. ONBOOT=yes
  9. IPADDR=192.168.1.100
  10. PREFIX=24
  11. GATEWAY=192.168.1.1
  12. DNS1=8.8.8.8
  13. DNS2=8.8.4.4
复制代码

保存文件后,重启网络服务:
  1. # 重启NetworkManager服务
  2. systemctl restart NetworkManager
  3. # 或重启网络接口
  4. nmcli connection down ens33 && nmcli connection up ens33
  5. # 验证配置
  6. ip addr show ens33
复制代码

配置多个IP地址

在某些情况下,可能需要为一个网络接口配置多个IP地址。这可以通过以下方式实现:
  1. # 为现有连接添加第二个IP地址
  2. nmcli connection modify static-ip +ipv4.addresses 192.168.1.101/24
  3. # 激活更改
  4. nmcli connection up static-ip
  5. # 验证配置
  6. ip addr show ens33
复制代码

创建一个别名配置文件,例如/etc/sysconfig/network-scripts/ifcfg-ens33:0:
  1. TYPE=Ethernet
  2. BOOTPROTO=static
  3. NAME=ens33:0
  4. DEVICE=ens33:0
  5. ONBOOT=yes
  6. IPADDR=192.168.1.101
  7. PREFIX=24
复制代码

然后重启网络服务:
  1. systemctl restart NetworkManager
复制代码

动态IP配置(DHCP)

动态IP配置是指通过DHCP(Dynamic Host Configuration Protocol)服务器自动获取IP地址、子网掩码、网关和DNS服务器等信息。这种配置方式适用于客户端设备,可以简化网络管理。

使用nmcli配置DHCP

以下是使用nmcli配置DHCP的详细步骤:
  1. # 1. 添加新的DHCP连接配置
  2. nmcli connection add type ethernet ifname ens33 con-name dhcp-ip
  3. # 2. 设置连接模式为DHCP
  4. nmcli connection modify dhcp-ip ipv4.method auto
  5. # 3. 启用自动连接
  6. nmcli connection modify dhcp-ip connection.autoconnect yes
  7. # 4. 激活连接
  8. nmcli connection up dhcp-ip
  9. # 5. 验证配置
  10. ip addr show ens33
  11. ip route show
  12. cat /etc/resolv.conf
复制代码

使用ifcfg文件配置DHCP

编辑网络接口配置文件,例如/etc/sysconfig/network-scripts/ifcfg-ens33:
  1. TYPE=Ethernet
  2. BOOTPROTO=dhcp
  3. DEFROUTE=yes
  4. PEERDNS=yes
  5. PEERROUTES=yes
  6. IPV4_FAILURE_FATAL=no
  7. NAME=ens33
  8. UUID=1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p
  9. DEVICE=ens33
  10. ONBOOT=yes
复制代码

保存文件后,重启网络服务:
  1. # 重启NetworkManager服务
  2. systemctl restart NetworkManager
  3. # 或重启网络接口
  4. nmcli connection down ens33 && nmcli connection up ens33
  5. # 验证配置
  6. ip addr show ens33
复制代码

DHCP客户端配置

在某些情况下,可能需要自定义DHCP客户端的行为。这可以通过编辑/etc/dhcp/dhclient.conf文件来实现:
  1. # 发送自定义的主机名
  2. send host-name "my-server";
  3. # 请求特定的选项
  4. request subnet-mask, broadcast-address, time-offset, routers,
  5.         domain-name, domain-name-servers, domain-search, host-name,
  6.         dhcp6.name-servers, dhcp6.domain-search, netbios-name-servers,
  7.         netbios-scope, interface-mtu, rfc3442-classless-static-routes,
  8.         ntp-servers;
  9. # 设置超时时间
  10. timeout 60;
  11. # 设置重试间隔
  12. retry 30;
复制代码

网络绑定与聚合

网络绑定(Bonding)或链路聚合(Link Aggregation)是将多个物理网络接口组合成一个逻辑接口的技术,可以提高网络带宽和提供冗余性。

网络绑定模式

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

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):自适应负载均衡,包括传输和接收的负载均衡。

使用nmcli配置网络绑定

以下是使用nmcli配置网络绑定的详细步骤:
  1. # 1. 创建绑定接口
  2. nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup
  3. # 2. 将物理接口添加到绑定
  4. nmcli connection add type ethernet ifname ens33 slave-type bond master bond0
  5. nmcli connection add type ethernet ifname ens34 slave-type bond master bond0
  6. # 3. 配置绑定接口的IP地址(静态IP示例)
  7. nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24
  8. nmcli connection modify bond0 ipv4.gateway 192.168.1.1
  9. nmcli connection modify bond0 ipv4.dns "8.8.8.8 8.8.4.4"
  10. nmcli connection modify bond0 ipv4.method manual
  11. # 4. 激活所有连接
  12. nmcli connection up bond0
  13. nmcli connection up ethernet-ens33
  14. nmcli connection up ethernet-ens34
  15. # 5. 验证绑定配置
  16. cat /proc/net/bonding/bond0
  17. ip addr show bond0
复制代码

使用ifcfg文件配置网络绑定

创建绑定接口配置文件/etc/sysconfig/network-scripts/ifcfg-bond0:
  1. TYPE=Bond
  2. BOOTPROTO=static
  3. NAME=bond0
  4. DEVICE=bond0
  5. ONBOOT=yes
  6. IPADDR=192.168.1.100
  7. PREFIX=24
  8. GATEWAY=192.168.1.1
  9. DNS1=8.8.8.8
  10. DNS2=8.8.4.4
  11. BONDING_OPTS="mode=active-backup miimon=100"
复制代码

创建物理接口配置文件/etc/sysconfig/network-scripts/ifcfg-ens33:
  1. TYPE=Ethernet
  2. NAME=ens33
  3. DEVICE=ens33
  4. ONBOOT=yes
  5. MASTER=bond0
  6. SLAVE=yes
复制代码

创建第二个物理接口配置文件/etc/sysconfig/network-scripts/ifcfg-ens34:
  1. TYPE=Ethernet
  2. NAME=ens34
  3. DEVICE=ens34
  4. ONBOOT=yes
  5. MASTER=bond0
  6. SLAVE=yes
复制代码

加载绑定模块并重启网络服务:
  1. # 加载绑定模块
  2. modprobe bonding
  3. # 重启网络服务
  4. systemctl restart NetworkManager
  5. # 验证绑定配置
  6. cat /proc/net/bonding/bond0
  7. ip addr show bond0
复制代码

网络绑定监控与故障排除

监控网络绑定状态:
  1. # 查看绑定状态
  2. cat /proc/net/bonding/bond0
  3. # 查看绑定接口统计信息
  4. cat /proc/net/dev | grep bond0
  5. # 查看网络接口状态
  6. nmcli device status
复制代码

常见故障排除:

1. 绑定接口未创建:检查是否加载了绑定模块modprobe bonding。
2. 物理接口未加入绑定:检查物理接口配置文件中的MASTER和SLAVE设置。
3. 绑定模式不工作:检查交换机是否支持所选的绑定模式,特别是mode=4(802.3ad)需要交换机支持LACP。

VLAN配置

虚拟局域网(VLAN)是一种将物理网络划分为多个逻辑网络的技术,可以提高网络安全性和性能。在RHEL 7.4中,可以轻松配置VLAN接口。

VLAN基础概念

VLAN通过在以太网帧中添加标签(VLAN ID)来工作,使得单个物理网络可以支持多个逻辑网络。VLAN ID的范围是1-4094,其中0和4095是保留值。

使用nmcli配置VLAN

以下是使用nmcli配置VLAN的详细步骤:
  1. # 1. 创建VLAN接口
  2. nmcli connection add type vlan ifname vlan100 dev ens33 id 100 con-name vlan100
  3. # 2. 配置VLAN接口的IP地址(静态IP示例)
  4. nmcli connection modify vlan100 ipv4.addresses 192.168.100.100/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. # 3. 激活VLAN接口
  9. nmcli connection up vlan100
  10. # 4. 验证VLAN配置
  11. ip addr show vlan100
复制代码

使用ifcfg文件配置VLAN

创建VLAN接口配置文件/etc/sysconfig/network-scripts/ifcfg-ens33.100:
  1. TYPE=Vlan
  2. BOOTPROTO=static
  3. NAME=ens33.100
  4. DEVICE=ens33.100
  5. ONBOOT=yes
  6. VLAN=yes
  7. PHYSDEV=ens33
  8. VLAN_ID=100
  9. IPADDR=192.168.100.100
  10. PREFIX=24
  11. GATEWAY=192.168.100.1
  12. DNS1=8.8.8.8
  13. DNS2=8.8.4.4
复制代码

确保物理接口配置正确,编辑/etc/sysconfig/network-scripts/ifcfg-ens33:
  1. TYPE=Ethernet
  2. NAME=ens33
  3. DEVICE=ens33
  4. ONBOOT=yes
复制代码

重启网络服务:
  1. # 重启网络服务
  2. systemctl restart NetworkManager
  3. # 验证VLAN配置
  4. ip addr show ens33.100
复制代码

VLAN与网络绑定结合使用

VLAN可以与网络绑定结合使用,以提供高可用性和VLAN支持。以下是使用nmcli配置绑定接口上的VLAN:
  1. # 1. 创建绑定接口
  2. nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup
  3. # 2. 将物理接口添加到绑定
  4. nmcli connection add type ethernet ifname ens33 slave-type bond master bond0
  5. nmcli connection add type ethernet ifname ens34 slave-type bond master bond0
  6. # 3. 在绑定接口上创建VLAN
  7. nmcli connection add type vlan ifname vlan100 dev bond0 id 100 con-name vlan100
  8. # 4. 配置VLAN接口的IP地址
  9. nmcli connection modify vlan100 ipv4.addresses 192.168.100.100/24
  10. nmcli connection modify vlan100 ipv4.gateway 192.168.100.1
  11. nmcli connection modify vlan100 ipv4.dns "8.8.8.8 8.8.4.4"
  12. nmcli connection modify vlan100 ipv4.method manual
  13. # 5. 激活所有连接
  14. nmcli connection up bond0
  15. nmcli connection up ethernet-ens33
  16. nmcli connection up ethernet-ens34
  17. nmcli connection up vlan100
  18. # 6. 验证配置
  19. cat /proc/net/bonding/bond0
  20. ip addr show bond0
  21. ip addr show vlan100
复制代码

网络故障排除

网络故障是系统管理员经常面临的问题,掌握有效的故障排除方法对于快速恢复网络连接至关重要。

基本网络诊断工具

ping是最基本的网络诊断工具,用于测试主机之间的连通性:
  1. # 测试与网关的连通性
  2. ping 192.168.1.1
  3. # 测试与外部服务器的连通性
  4. ping google.com
  5. # 发送指定数量的数据包
  6. ping -c 4 192.168.1.1
  7. # 持续ping并显示时间戳
  8. ping -D 192.168.1.1
复制代码

traceroute用于显示数据包到达目标主机所经过的路由:
  1. # 跟踪到目标主机的路由
  2. traceroute google.com
  3. # 使用ICMP协议进行跟踪(在某些网络中更可靠)
  4. traceroute -I google.com
复制代码

netstat用于显示网络连接、路由表、接口统计等:
  1. # 显示所有网络连接
  2. netstat -a
  3. # 显示TCP连接
  4. netstat -t
  5. # 显示监听的端口
  6. netstat -l
  7. # 显示PID和程序名称
  8. netstat -p
  9. # 显示路由表
  10. netstat -r
  11. # 显示网络接口统计
  12. netstat -i
复制代码

ss是netstat的替代品,更快速且更高效:
  1. # 显示所有TCP连接
  2. ss -t -a
  3. # 显示所有UDP连接
  4. ss -u -a
  5. # 显示监听的套接字
  6. ss -l
  7. # 显示PID和程序名称
  8. ss -p
  9. # 显示网络接口统计
  10. ss -i
复制代码

网络连接问题排查
  1. # 检查网络接口状态
  2. ip link show
  3. # 检查网络接口统计信息
  4. ip -s link show
  5. # 检查驱动程序信息
  6. ethtool ens33
  7. # 检查网络接口速度和双工模式
  8. ethtool ens33 | grep "Speed\|Duplex"
复制代码
  1. # 显示ARP表
  2. ip neigh show
  3. # 添加静态ARP条目
  4. ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev ens33
  5. # 删除ARP条目
  6. ip neigh del 192.168.1.1 dev ens33
复制代码
  1. # 显示IP地址
  2. ip addr show
  3. # 显示路由表
  4. ip route show
  5. # 添加静态路由
  6. ip route add 192.168.2.0/24 via 192.168.1.1
  7. # 删除静态路由
  8. ip route del 192.168.2.0/24 via 192.168.1.1
  9. # 跟踪路由
  10. traceroute 192.168.1.1
复制代码
  1. # 检查端口是否开放
  2. ss -tlnp | grep :80
  3. # 测试TCP连接
  4. nc -zv 192.168.1.1 80
  5. # 测试UDP连接
  6. nc -uzv 192.168.1.1 53
  7. # 抓取网络包
  8. tcpdump -i ens33 -c 10
复制代码

NetworkManager故障排除
  1. # 检查NetworkManager服务状态
  2. systemctl status NetworkManager
  3. # 查看NetworkManager日志
  4. journalctl -u NetworkManager
  5. # 启动NetworkManager调试模式
  6. nmcli general logging level DEBUG
复制代码
  1. # 停止NetworkManager服务
  2. systemctl stop NetworkManager
  3. # 删除所有网络连接配置
  4. rm /etc/NetworkManager/system-connections/*
  5. # 重启NetworkManager服务
  6. systemctl start NetworkManager
  7. # 重新配置网络连接
  8. nmcli connection add type ethernet ifname ens33 con-name default
复制代码
  1. # 验证ifcfg文件语法
  2. bash -n /etc/sysconfig/network-scripts/ifcfg-ens33
  3. # 检查NetworkManager配置文件
  4. cat /etc/NetworkManager/NetworkManager.conf
  5. # 检查NetworkManager系统连接配置
  6. ls -l /etc/NetworkManager/system-connections/
复制代码

高级网络配置

除了基本的网络配置,RHEL 7.4还支持多种高级网络配置,如策略路由、网络命名空间等,这些功能可以满足复杂的企业网络需求。

策略路由

策略路由允许根据数据包的源地址、目标地址、端口等属性选择不同的路由表,实现更灵活的路由控制。
  1. # 1. 创建自定义路由表
  2. echo "200 custom_table" >> /etc/iproute2/rt_tables
  3. # 2. 添加路由到自定义表
  4. ip route add 192.168.2.0/24 via 192.168.1.2 table custom_table
  5. ip route add default via 192.168.1.2 table custom_table
  6. # 3. 创建路由规则
  7. ip rule add from 192.168.1.100 table custom_table
  8. ip rule add to 192.168.2.0/24 table custom_table
  9. # 4. 验证配置
  10. ip route show table custom_table
  11. ip rule show
复制代码

创建策略路由配置文件/etc/sysconfig/network-scripts/rule-ens33:
  1. from 192.168.1.100 table custom_table
  2. to 192.168.2.0/24 table custom_table
复制代码

创建路由表配置文件/etc/sysconfig/network-scripts/route-ens33:
  1. 192.168.2.0/24 via 192.168.1.2 table custom_table
  2. default via 192.168.1.2 table custom_table
复制代码

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

网络命名空间

网络命名空间是Linux内核提供的一种网络隔离机制,允许在同一主机上创建多个独立的网络堆栈,每个命名空间有自己的网络接口、路由表、防火墙规则等。
  1. # 1. 创建网络命名空间
  2. ip netns add ns1
  3. # 2. 在命名空间中执行命令
  4. ip netns exec ns1 ip addr show
  5. # 3. 将网络接口移动到命名空间
  6. ip link set ens33 netns ns1
  7. # 4. 在命名空间中配置接口
  8. ip netns exec ns1 ip addr add 192.168.1.100/24 dev ens33
  9. ip netns exec ns1 ip link set ens33 up
  10. ip netns exec ns1 ip route add default via 192.168.1.1
  11. # 5. 在命名空间之间创建连接
  12. # 创建veth pair
  13. ip link add veth0 type veth peer name veth1
  14. # 将一端移动到命名空间
  15. ip link set veth1 netns ns1
  16. # 配置两端
  17. ip addr add 10.0.0.1/24 dev veth0
  18. ip link set veth0 up
  19. ip netns exec ns1 ip addr add 10.0.0.2/24 dev veth1
  20. ip netns exec ns1 ip link set veth1 up
  21. # 6. 测试连接
  22. ping 10.0.0.2
  23. ip netns exec ns1 ping 10.0.0.1
  24. # 7. 列出所有命名空间
  25. ip netns list
  26. # 8. 删除命名空间
  27. ip netns del ns1
复制代码

网络桥接

网络桥接是一种将多个网络接口连接在一起的技术,使得它们可以像在同一个物理网络上通信。
  1. # 1. 创建网桥
  2. nmcli connection add type bridge ifname br0 con-name br0
  3. # 2. 将物理接口添加到网桥
  4. nmcli connection add type ethernet ifname ens33 master br0 slave-type bridge con-name br0-slave1
  5. nmcli connection add type ethernet ifname ens34 master br0 slave-type bridge con-name br0-slave2
  6. # 3. 配置网桥IP地址
  7. nmcli connection modify br0 ipv4.addresses 192.168.1.100/24
  8. nmcli connection modify br0 ipv4.gateway 192.168.1.1
  9. nmcli connection modify br0 ipv4.dns "8.8.8.8 8.8.4.4"
  10. nmcli connection modify br0 ipv4.method manual
  11. # 4. 激活所有连接
  12. nmcli connection up br0
  13. nmcli connection up br0-slave1
  14. nmcli connection up br0-slave2
  15. # 5. 验证配置
  16. brctl show
  17. ip addr show br0
复制代码

网络多路径路由

网络多路径路由允许系统使用多个网络路径同时传输数据,提高网络带宽和可靠性。
  1. # 1. 创建路由表
  2. echo "201 table1" >> /etc/iproute2/rt_tables
  3. echo "202 table2" >> /etc/iproute2/rt_tables
  4. # 2. 配置路由
  5. ip route add 192.168.1.0/24 dev ens33 src 192.168.1.100 table table1
  6. ip route add default via 192.168.1.1 table table1
  7. ip route add 192.168.2.0/24 dev ens34 src 192.168.2.100 table table2
  8. ip route add default via 192.168.2.1 table table2
  9. # 3. 配置路由规则
  10. ip rule add from 192.168.1.100 table table1
  11. ip rule add from 192.168.2.100 table table2
  12. # 4. 配置默认路由平衡
  13. ip route add default scope global nexthop via 192.168.1.1 dev ens33 weight 1 nexthop via 192.168.2.1 dev ens34 weight 1
  14. # 5. 验证配置
  15. ip route show
  16. ip rule show
复制代码

安全配置

网络安全是企业环境中不可忽视的重要方面,RHEL 7.4提供了多种安全机制来保护网络通信。

防火墙配置

RHEL 7.4使用firewalld作为默认的防火墙管理工具,它替代了之前的iptables服务。

firewalld使用区域(zones)和服务(services)的概念来管理防火墙规则。每个区域定义了一组规则,可以应用于网络接口。
  1. # 1. 检查firewalld状态
  2. systemctl status firewalld
  3. # 2. 启动和停止firewalld
  4. systemctl start firewalld
  5. systemctl stop firewalld
  6. # 3. 查看当前区域
  7. firewall-cmd --get-active-zones
  8. # 4. 查看所有可用区域
  9. firewall-cmd --get-zones
  10. # 5. 查看默认区域
  11. firewall-cmd --get-default-zone
  12. # 6. 设置默认区域
  13. firewall-cmd --set-default-zone=public
  14. # 7. 查看区域配置
  15. firewall-cmd --zone=public --list-all
  16. # 8. 添加服务到区域
  17. firewall-cmd --zone=public --add-service=http
  18. # 9. 永久添加服务到区域
  19. firewall-cmd --zone=public --add-service=http --permanent
  20. # 10. 添加端口到区域
  21. firewall-cmd --zone=public --add-port=8080/tcp
  22. # 11. 永久添加端口到区域
  23. firewall-cmd --zone=public --add-port=8080/tcp --permanent
  24. # 12. 重新加载防火墙配置
  25. firewall-cmd --reload
  26. # 13. 移除服务或端口
  27. firewall-cmd --zone=public --remove-service=http
  28. firewall-cmd --zone=public --remove-port=8080/tcp
复制代码

创建自定义服务文件/etc/firewalld/services/custom-service.xml:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <service>
  3.   <short>Custom Service</short>
  4.   <description>This is a custom service for our application.</description>
  5.   <port protocol="tcp" port="1234"/>
  6.   <port protocol="udp" port="5678"/>
  7.   <module name="nf_conntrack_netbios_ns"/>
  8. </service>
复制代码

重新加载firewalld并添加服务:
  1. firewall-cmd --reload
  2. firewall-cmd --zone=public --add-service=custom-service --permanent
  3. firewall-cmd --reload
复制代码

SELinux与网络安全

SELinux(Security-Enhanced Linux)是RHEL中的强制访问控制(MAC)系统,可以提供额外的安全层。

SELinux通过定义安全策略来控制进程对资源的访问,这些策略基于最小权限原则。
  1. # 1. 检查SELinux状态
  2. sestatus
  3. # 2. 设置SELinux模式
  4. setenforce 0  # 设置为宽容模式
  5. setenforce 1  # 设置为强制模式
  6. # 3. 查看SELinux布尔值
  7. getsebool -a
  8. # 4. 设置SELinux布尔值
  9. setsebool -P httpd_can_network_connect=1
  10. # 5. 查看网络相关布尔值
  11. getsebool -a | grep network
  12. # 6. 查看端口上下文
  13. semanage port -l
  14. # 7. 添加端口上下文
  15. semanage port -a -t http_port_t -p tcp 8080
  16. # 8. 查看SELinux日志
  17. ausearch -m avc -ts recent
复制代码

SELinux对网络服务有特定的策略,例如:
  1. # 允许HTTPD连接网络
  2. setsebool -P httpd_can_network_connect=1
  3. # 允许HTTPD连接远程数据库
  4. setsebool -P httpd_can_network_connect_db=1
  5. # 允许HTTPD发送邮件
  6. setsebool -P httpd_can_sendmail=1
  7. # 允许NFS共享目录
  8. setsebool -P nfs_export_all_rw=1
复制代码

TCP Wrappers配置

TCP Wrappers是一种基于主机的访问控制系统,可以在网络服务接受连接之前进行访问控制。

TCP Wrappers使用两个主要配置文件:

• /etc/hosts.allow:定义允许访问的主机
• /etc/hosts.deny:定义拒绝访问的主机

编辑/etc/hosts.deny:
  1. # 拒绝所有主机访问所有服务
  2. ALL: ALL
复制代码

编辑/etc/hosts.allow:
  1. # 允许特定IP访问SSH
  2. sshd: 192.168.1.0/24
  3. # 允许特定主机名访问FTP
  4. vsftpd: .example.com
  5. # 允许所有主机访问HTTPD
  6. httpd: ALL
复制代码
  1. # 测试SSH访问
  2. tcpdmatch sshd 192.168.1.100
  3. # 查看支持TCP Wrappers的服务
  4. strings /usr/sbin/sshd | grep hosts_access
复制代码

最佳实践和性能优化

在企业环境中,网络配置不仅要正确,还要优化性能并遵循最佳实践。

网络性能优化
  1. # 1. 查看网络接口参数
  2. ethtool -g ens33
  3. # 2. 调整网络接口队列长度
  4. ethtool -G ens33 rx 4096 tx 4096
  5. # 3. 调整网络中断亲和性
  6. # 查看当前中断分配
  7. cat /proc/interrupts | grep eth
  8. # 设置中断亲和性
  9. echo 1 > /proc/irq/123/smp_affinity
  10. # 4. 启用网络接口卸载功能
  11. ethtool -K ens33 gro on
  12. ethtool -K ens33 lro on
  13. ethtool -K ens33 tso on
  14. ethtool -K ens33 gso on
  15. ethtool -K ens33 tx on
  16. ethtool -K ens33 rx on
复制代码

编辑/etc/sysctl.conf文件:
  1. # 增加TCP最大缓冲区大小
  2. net.core.rmem_max = 16777216
  3. net.core.wmem_max = 16777216
  4. # 增加TCP默认缓冲区大小
  5. net.core.rmem_default = 16777216
  6. net.core.wmem_default = 16777216
  7. # 增加TCP最大连接数
  8. net.core.somaxconn = 65535
  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 keepalive参数
  16. net.ipv4.tcp_keepalive_time = 1200
  17. net.ipv4.tcp_keepalive_intvl = 30
  18. net.ipv4.tcp_keepalive_probes = 3
  19. # 增加本地端口范围
  20. net.ipv4.ip_local_port_range = 1024 65535
  21. # 启用TCP SYN cookies
  22. net.ipv4.tcp_syncookies = 1
  23. # 增加TCP最大半连接数
  24. net.ipv4.tcp_max_syn_backlog = 65536
  25. # 启用TCP快速打开
  26. net.ipv4.tcp_fastopen = 3
  27. # 调整TCP拥塞控制算法
  28. net.ipv4.tcp_congestion_control = bbr
复制代码

应用内核参数:
  1. sysctl -p
复制代码

网络配置最佳实践

使用可预测的网络接口命名规则,避免使用传统的eth0、eth1等命名方式:
  1. # 查看网络接口命名规则
  2. ls -l /etc/udev/rules.d/70-persistent-net.rules
  3. # 修改网络接口命名
  4. # 编辑/etc/sysconfig/network-scripts/ifcfg-ens33
  5. NAME=ens33
  6. DEVICE=ens33
复制代码
  1. # 1. 备份网络配置
  2. cp -r /etc/sysconfig/network-scripts/ /root/network-backup/
  3. cp /etc/NetworkManager/system-connections/* /root/network-backup/
  4. # 2. 恢复网络配置
  5. cp -r /root/network-backup/* /etc/sysconfig/network-scripts/
  6. cp /root/network-backup/* /etc/NetworkManager/system-connections/
  7. # 3. 重启网络服务
  8. systemctl restart NetworkManager
复制代码

创建网络配置文档/root/network-config.md:
  1. # 网络配置文档
  2. ## 网络接口
  3. ### ens33
  4. - 类型:以太网
  5. - IP地址:192.168.1.100/24
  6. - 网关:192.168.1.1
  7. - DNS:8.8.8.8, 8.8.4.4
  8. - 用途:管理网络
  9. ### ens34
  10. - 类型:以太网
  11. - IP地址:192.168.2.100/24
  12. - 网关:192.168.2.1
  13. - DNS:8.8.8.8, 8.8.4.4
  14. - 用途:数据网络
  15. ## 网络绑定
  16. ### bond0
  17. - 模式:active-backup
  18. - 成员接口:ens33, ens34
  19. - IP地址:192.168.1.200/24
  20. - 用途:高可用性管理网络
  21. ## VLAN
  22. ### vlan100
  23. - VLAN ID:100
  24. - 父接口:bond0
  25. - IP地址:192.168.100.100/24
  26. - 用途:生产网络
  27. ## 防火墙规则
  28. - 允许SSH(端口22)从管理网络访问
  29. - 允许HTTP(端口80)和HTTPS(端口443)从所有网络访问
  30. - 拒绝所有其他入站连接
复制代码
  1. # 1. 安装网络监控工具
  2. yum install -y nagios nrpe zabbix-agent
  3. # 2. 配置网络监控脚本
  4. cat > /usr/local/bin/check_network.sh << 'EOF'
  5. #!/bin/bash
  6. # 检查网络接口状态
  7. INTERFACE=$1
  8. STATUS=$(ip link show $INTERFACE | grep 'state UP' | wc -l)
  9. if [ $STATUS -eq 1 ]; then
  10.     echo "OK: Interface $INTERFACE is up"
  11.     exit 0
  12. else
  13.     echo "CRITICAL: Interface $INTERFACE is down"
  14.     exit 2
  15. fi
  16. EOF
  17. chmod +x /usr/local/bin/check_network.sh
  18. # 3. 配置告警
  19. # 编辑/etc/aliases
  20. root: admin@example.com
  21. # 重新生成别名数据库
  22. newaliases
复制代码

高可用性网络配置
  1. # 1. 配置网络绑定
  2. # 创建绑定接口
  3. nmcli connection add type bond ifname bond0 con-name bond0 mode=4 miimon=100
  4. # 添加物理接口到绑定
  5. nmcli connection add type ethernet ifname ens33 master bond0 slave-type bond
  6. nmcli connection add type ethernet ifname ens34 master bond0 slave-type bond
  7. # 配置绑定接口IP
  8. nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24
  9. nmcli connection modify bond0 ipv4.gateway 192.168.1.1
  10. nmcli connection modify bond0 ipv4.method manual
  11. # 激活连接
  12. nmcli connection up bond0
  13. nmcli connection up ethernet-ens33
  14. nmcli connection up ethernet-ens34
  15. # 2. 配置多路径路由
  16. # 创建路由表
  17. echo "201 table1" >> /etc/iproute2/rt_tables
  18. echo "202 table2" >> /etc/iproute2/rt_tables
  19. # 配置路由
  20. ip route add 192.168.1.0/24 dev bond0 src 192.168.1.100 table table1
  21. ip route add default via 192.168.1.1 table table1
  22. ip route add 192.168.2.0/24 dev ens35 src 192.168.2.100 table table2
  23. ip route add default via 192.168.2.1 table table2
  24. # 配置路由规则
  25. ip rule add from 192.168.1.100 table table1
  26. ip rule add from 192.168.2.100 table table2
  27. # 配置默认路由平衡
  28. ip route add default scope global nexthop via 192.168.1.1 dev bond0 weight 1 nexthop via 192.168.2.1 dev ens35 weight 1
复制代码
  1. # 1. 创建网络监控脚本
  2. cat > /usr/local/bin/monitor_network.sh << 'EOF'
  3. #!/bin/bash
  4. # 监控网络连接状态
  5. GATEWAY=192.168.1.1
  6. INTERFACE=bond0
  7. LOGFILE=/var/log/network_monitor.log
  8. # 检查网关连通性
  9. ping -c 3 $GATEWAY > /dev/null 2>&1
  10. if [ $? -ne 0 ]; then
  11.     echo "$(date): Gateway $GATEWAY is unreachable, restarting network" >> $LOGFILE
  12.     systemctl restart NetworkManager
  13.     sleep 10
  14.    
  15.     # 再次检查
  16.     ping -c 3 $GATEWAY > /dev/null 2>&1
  17.     if [ $? -ne 0 ]; then
  18.         echo "$(date): Network restart failed, rebooting system" >> $LOGFILE
  19.         reboot
  20.     else
  21.         echo "$(date): Network restart successful" >> $LOGFILE
  22.     fi
  23. fi
  24. EOF
  25. chmod +x /usr/local/bin/monitor_network.sh
  26. # 2. 添加到cron
  27. echo "*/5 * * * * /usr/local/bin/monitor_network.sh" > /etc/cron.d/network_monitor
  28. # 3. 启动cron服务
  29. systemctl start crond
  30. systemctl enable crond
复制代码

总结

本文详细介绍了Red Hat Enterprise Linux 7.4网络配置的各个方面,从基础概念到高级配置,从静态IP和DHCP配置到网络绑定、VLAN、策略路由等高级功能。我们还讨论了网络故障排除、安全配置以及性能优化的最佳实践。

通过掌握这些知识和技能,系统管理员可以有效地管理和维护企业级Linux系统的网络环境,确保网络连接的稳定性、安全性和高性能。随着技术的不断发展,网络管理工具和方法也在不断演进,但本文介绍的基本原则和核心概念将长期适用。

在实际工作中,建议管理员结合具体业务需求和环境特点,灵活应用这些技术,并持续学习和探索新的网络管理技术和最佳实践,以应对不断变化的网络环境和安全挑战。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则