|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
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地址,是互联网通信的重要组成部分。
查看网络状态
在开始配置之前,我们先了解如何查看当前网络状态:
- # 查看所有网络接口状态
- ip addr show
- # 或使用传统命令
- ifconfig -a
- # 查看路由表
- ip route show
- # 或使用传统命令
- route -n
- # 查看DNS配置
- 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的命令行界面,功能强大且适合脚本使用。基本语法如下:
- nmcli [OPTIONS] OBJECT { COMMAND | help }
复制代码
其中OBJECT可以是connection、device、agent等。
- # 显示所有连接
- nmcli connection show
- # 显示所有设备状态
- nmcli device status
- # 启动连接
- nmcli connection up <connection_name>
- # 停止连接
- nmcli connection down <connection_name>
复制代码
nmtui文本用户界面
nmtui是一个基于文本的用户界面,适合那些更喜欢图形界面但只拥有终端访问权限的用户。
启动nmtui:
nmtui提供了三个主要功能:
1. 编辑连接
2. 激活连接
3. 设置系统主机名
ifcfg文件配置
除了NetworkManager工具,RHEL 7.4仍然支持通过ifcfg文件进行网络配置。这些配置文件位于/etc/sysconfig/network-scripts/目录下,文件名格式为ifcfg-<interface_name>。
例如,ifcfg-ens33文件可能包含以下内容:
- TYPE=Ethernet
- BOOTPROTO=dhcp
- DEFROUTE=yes
- PEERDNS=yes
- PEERROUTES=yes
- IPV4_FAILURE_FATAL=no
- IPV6INIT=yes
- IPV6_AUTOCONF=yes
- IPV6_DEFROUTE=yes
- IPV6_PEERDNS=yes
- IPV6_PEERROUTES=yes
- IPV6_FAILURE_FATAL=no
- NAME=ens33
- UUID=1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p
- DEVICE=ens33
- ONBOOT=yes
复制代码
静态IP配置
静态IP配置是指为网络接口手动指定固定的IP地址、子网掩码、网关和DNS服务器。这种配置方式适用于服务器环境,因为服务器通常需要固定的IP地址以便其他设备能够稳定地访问。
使用nmcli配置静态IP
以下是使用nmcli配置静态IP的详细步骤:
- # 1. 添加新的静态IP连接配置
- nmcli connection add type ethernet ifname ens33 con-name static-ip
- # 2. 设置IPv4地址、子网掩码和网关
- nmcli connection modify static-ip ipv4.addresses 192.168.1.100/24
- nmcli connection modify static-ip ipv4.gateway 192.168.1.1
- # 3. 设置DNS服务器
- nmcli connection modify static-ip ipv4.dns "8.8.8.8 8.8.4.4"
- # 4. 设置连接模式为手动(静态IP)
- nmcli connection modify static-ip ipv4.method manual
- # 5. 启用自动连接
- nmcli connection modify static-ip connection.autoconnect yes
- # 6. 激活连接
- nmcli connection up static-ip
- # 7. 验证配置
- ip addr show ens33
- ip route show
- cat /etc/resolv.conf
复制代码
使用ifcfg文件配置静态IP
编辑网络接口配置文件,例如/etc/sysconfig/network-scripts/ifcfg-ens33:
- TYPE=Ethernet
- BOOTPROTO=static
- DEFROUTE=yes
- IPV4_FAILURE_FATAL=no
- NAME=ens33
- UUID=1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p
- DEVICE=ens33
- ONBOOT=yes
- IPADDR=192.168.1.100
- PREFIX=24
- GATEWAY=192.168.1.1
- DNS1=8.8.8.8
- DNS2=8.8.4.4
复制代码
保存文件后,重启网络服务:
- # 重启NetworkManager服务
- systemctl restart NetworkManager
- # 或重启网络接口
- nmcli connection down ens33 && nmcli connection up ens33
- # 验证配置
- ip addr show ens33
复制代码
配置多个IP地址
在某些情况下,可能需要为一个网络接口配置多个IP地址。这可以通过以下方式实现:
- # 为现有连接添加第二个IP地址
- nmcli connection modify static-ip +ipv4.addresses 192.168.1.101/24
- # 激活更改
- nmcli connection up static-ip
- # 验证配置
- ip addr show ens33
复制代码
创建一个别名配置文件,例如/etc/sysconfig/network-scripts/ifcfg-ens33:0:
- TYPE=Ethernet
- BOOTPROTO=static
- NAME=ens33:0
- DEVICE=ens33:0
- ONBOOT=yes
- IPADDR=192.168.1.101
- PREFIX=24
复制代码
然后重启网络服务:
- systemctl restart NetworkManager
复制代码
动态IP配置(DHCP)
动态IP配置是指通过DHCP(Dynamic Host Configuration Protocol)服务器自动获取IP地址、子网掩码、网关和DNS服务器等信息。这种配置方式适用于客户端设备,可以简化网络管理。
使用nmcli配置DHCP
以下是使用nmcli配置DHCP的详细步骤:
- # 1. 添加新的DHCP连接配置
- nmcli connection add type ethernet ifname ens33 con-name dhcp-ip
- # 2. 设置连接模式为DHCP
- nmcli connection modify dhcp-ip ipv4.method auto
- # 3. 启用自动连接
- nmcli connection modify dhcp-ip connection.autoconnect yes
- # 4. 激活连接
- nmcli connection up dhcp-ip
- # 5. 验证配置
- ip addr show ens33
- ip route show
- cat /etc/resolv.conf
复制代码
使用ifcfg文件配置DHCP
编辑网络接口配置文件,例如/etc/sysconfig/network-scripts/ifcfg-ens33:
- TYPE=Ethernet
- BOOTPROTO=dhcp
- DEFROUTE=yes
- PEERDNS=yes
- PEERROUTES=yes
- IPV4_FAILURE_FATAL=no
- NAME=ens33
- UUID=1a2b3c4d-5e6f-7g8h-9i0j-1k2l3m4n5o6p
- DEVICE=ens33
- ONBOOT=yes
复制代码
保存文件后,重启网络服务:
- # 重启NetworkManager服务
- systemctl restart NetworkManager
- # 或重启网络接口
- nmcli connection down ens33 && nmcli connection up ens33
- # 验证配置
- ip addr show ens33
复制代码
DHCP客户端配置
在某些情况下,可能需要自定义DHCP客户端的行为。这可以通过编辑/etc/dhcp/dhclient.conf文件来实现:
- # 发送自定义的主机名
- send host-name "my-server";
- # 请求特定的选项
- request subnet-mask, broadcast-address, time-offset, routers,
- domain-name, domain-name-servers, domain-search, host-name,
- dhcp6.name-servers, dhcp6.domain-search, netbios-name-servers,
- netbios-scope, interface-mtu, rfc3442-classless-static-routes,
- ntp-servers;
- # 设置超时时间
- timeout 60;
- # 设置重试间隔
- 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. 创建绑定接口
- nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup
- # 2. 将物理接口添加到绑定
- nmcli connection add type ethernet ifname ens33 slave-type bond master bond0
- nmcli connection add type ethernet ifname ens34 slave-type bond master bond0
- # 3. 配置绑定接口的IP地址(静态IP示例)
- nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24
- nmcli connection modify bond0 ipv4.gateway 192.168.1.1
- nmcli connection modify bond0 ipv4.dns "8.8.8.8 8.8.4.4"
- nmcli connection modify bond0 ipv4.method manual
- # 4. 激活所有连接
- nmcli connection up bond0
- nmcli connection up ethernet-ens33
- nmcli connection up ethernet-ens34
- # 5. 验证绑定配置
- cat /proc/net/bonding/bond0
- ip addr show bond0
复制代码
使用ifcfg文件配置网络绑定
创建绑定接口配置文件/etc/sysconfig/network-scripts/ifcfg-bond0:
- TYPE=Bond
- BOOTPROTO=static
- NAME=bond0
- DEVICE=bond0
- ONBOOT=yes
- IPADDR=192.168.1.100
- PREFIX=24
- GATEWAY=192.168.1.1
- DNS1=8.8.8.8
- DNS2=8.8.4.4
- BONDING_OPTS="mode=active-backup miimon=100"
复制代码
创建物理接口配置文件/etc/sysconfig/network-scripts/ifcfg-ens33:
- TYPE=Ethernet
- NAME=ens33
- DEVICE=ens33
- ONBOOT=yes
- MASTER=bond0
- SLAVE=yes
复制代码
创建第二个物理接口配置文件/etc/sysconfig/network-scripts/ifcfg-ens34:
- TYPE=Ethernet
- NAME=ens34
- DEVICE=ens34
- ONBOOT=yes
- MASTER=bond0
- SLAVE=yes
复制代码
加载绑定模块并重启网络服务:
- # 加载绑定模块
- modprobe bonding
- # 重启网络服务
- systemctl restart NetworkManager
- # 验证绑定配置
- cat /proc/net/bonding/bond0
- ip addr show bond0
复制代码
网络绑定监控与故障排除
监控网络绑定状态:
- # 查看绑定状态
- cat /proc/net/bonding/bond0
- # 查看绑定接口统计信息
- cat /proc/net/dev | grep bond0
- # 查看网络接口状态
- 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. 创建VLAN接口
- nmcli connection add type vlan ifname vlan100 dev ens33 id 100 con-name vlan100
- # 2. 配置VLAN接口的IP地址(静态IP示例)
- nmcli connection modify vlan100 ipv4.addresses 192.168.100.100/24
- nmcli connection modify vlan100 ipv4.gateway 192.168.100.1
- nmcli connection modify vlan100 ipv4.dns "8.8.8.8 8.8.4.4"
- nmcli connection modify vlan100 ipv4.method manual
- # 3. 激活VLAN接口
- nmcli connection up vlan100
- # 4. 验证VLAN配置
- ip addr show vlan100
复制代码
使用ifcfg文件配置VLAN
创建VLAN接口配置文件/etc/sysconfig/network-scripts/ifcfg-ens33.100:
- TYPE=Vlan
- BOOTPROTO=static
- NAME=ens33.100
- DEVICE=ens33.100
- ONBOOT=yes
- VLAN=yes
- PHYSDEV=ens33
- VLAN_ID=100
- IPADDR=192.168.100.100
- PREFIX=24
- GATEWAY=192.168.100.1
- DNS1=8.8.8.8
- DNS2=8.8.4.4
复制代码
确保物理接口配置正确,编辑/etc/sysconfig/network-scripts/ifcfg-ens33:
- TYPE=Ethernet
- NAME=ens33
- DEVICE=ens33
- ONBOOT=yes
复制代码
重启网络服务:
- # 重启网络服务
- systemctl restart NetworkManager
- # 验证VLAN配置
- ip addr show ens33.100
复制代码
VLAN与网络绑定结合使用
VLAN可以与网络绑定结合使用,以提供高可用性和VLAN支持。以下是使用nmcli配置绑定接口上的VLAN:
- # 1. 创建绑定接口
- nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup
- # 2. 将物理接口添加到绑定
- nmcli connection add type ethernet ifname ens33 slave-type bond master bond0
- nmcli connection add type ethernet ifname ens34 slave-type bond master bond0
- # 3. 在绑定接口上创建VLAN
- nmcli connection add type vlan ifname vlan100 dev bond0 id 100 con-name vlan100
- # 4. 配置VLAN接口的IP地址
- nmcli connection modify vlan100 ipv4.addresses 192.168.100.100/24
- nmcli connection modify vlan100 ipv4.gateway 192.168.100.1
- nmcli connection modify vlan100 ipv4.dns "8.8.8.8 8.8.4.4"
- nmcli connection modify vlan100 ipv4.method manual
- # 5. 激活所有连接
- nmcli connection up bond0
- nmcli connection up ethernet-ens33
- nmcli connection up ethernet-ens34
- nmcli connection up vlan100
- # 6. 验证配置
- cat /proc/net/bonding/bond0
- ip addr show bond0
- ip addr show vlan100
复制代码
网络故障排除
网络故障是系统管理员经常面临的问题,掌握有效的故障排除方法对于快速恢复网络连接至关重要。
基本网络诊断工具
ping是最基本的网络诊断工具,用于测试主机之间的连通性:
- # 测试与网关的连通性
- ping 192.168.1.1
- # 测试与外部服务器的连通性
- ping google.com
- # 发送指定数量的数据包
- ping -c 4 192.168.1.1
- # 持续ping并显示时间戳
- ping -D 192.168.1.1
复制代码
traceroute用于显示数据包到达目标主机所经过的路由:
- # 跟踪到目标主机的路由
- traceroute google.com
- # 使用ICMP协议进行跟踪(在某些网络中更可靠)
- traceroute -I google.com
复制代码
netstat用于显示网络连接、路由表、接口统计等:
- # 显示所有网络连接
- netstat -a
- # 显示TCP连接
- netstat -t
- # 显示监听的端口
- netstat -l
- # 显示PID和程序名称
- netstat -p
- # 显示路由表
- netstat -r
- # 显示网络接口统计
- netstat -i
复制代码
ss是netstat的替代品,更快速且更高效:
- # 显示所有TCP连接
- ss -t -a
- # 显示所有UDP连接
- ss -u -a
- # 显示监听的套接字
- ss -l
- # 显示PID和程序名称
- ss -p
- # 显示网络接口统计
- ss -i
复制代码
网络连接问题排查
- # 检查网络接口状态
- ip link show
- # 检查网络接口统计信息
- ip -s link show
- # 检查驱动程序信息
- ethtool ens33
- # 检查网络接口速度和双工模式
- ethtool ens33 | grep "Speed\|Duplex"
复制代码- # 显示ARP表
- ip neigh show
- # 添加静态ARP条目
- ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev ens33
- # 删除ARP条目
- ip neigh del 192.168.1.1 dev ens33
复制代码- # 显示IP地址
- ip addr show
- # 显示路由表
- ip route show
- # 添加静态路由
- ip route add 192.168.2.0/24 via 192.168.1.1
- # 删除静态路由
- ip route del 192.168.2.0/24 via 192.168.1.1
- # 跟踪路由
- traceroute 192.168.1.1
复制代码- # 检查端口是否开放
- ss -tlnp | grep :80
- # 测试TCP连接
- nc -zv 192.168.1.1 80
- # 测试UDP连接
- nc -uzv 192.168.1.1 53
- # 抓取网络包
- tcpdump -i ens33 -c 10
复制代码
NetworkManager故障排除
- # 检查NetworkManager服务状态
- systemctl status NetworkManager
- # 查看NetworkManager日志
- journalctl -u NetworkManager
- # 启动NetworkManager调试模式
- nmcli general logging level DEBUG
复制代码- # 停止NetworkManager服务
- systemctl stop NetworkManager
- # 删除所有网络连接配置
- rm /etc/NetworkManager/system-connections/*
- # 重启NetworkManager服务
- systemctl start NetworkManager
- # 重新配置网络连接
- nmcli connection add type ethernet ifname ens33 con-name default
复制代码- # 验证ifcfg文件语法
- bash -n /etc/sysconfig/network-scripts/ifcfg-ens33
- # 检查NetworkManager配置文件
- cat /etc/NetworkManager/NetworkManager.conf
- # 检查NetworkManager系统连接配置
- ls -l /etc/NetworkManager/system-connections/
复制代码
高级网络配置
除了基本的网络配置,RHEL 7.4还支持多种高级网络配置,如策略路由、网络命名空间等,这些功能可以满足复杂的企业网络需求。
策略路由
策略路由允许根据数据包的源地址、目标地址、端口等属性选择不同的路由表,实现更灵活的路由控制。
- # 1. 创建自定义路由表
- echo "200 custom_table" >> /etc/iproute2/rt_tables
- # 2. 添加路由到自定义表
- ip route add 192.168.2.0/24 via 192.168.1.2 table custom_table
- ip route add default via 192.168.1.2 table custom_table
- # 3. 创建路由规则
- ip rule add from 192.168.1.100 table custom_table
- ip rule add to 192.168.2.0/24 table custom_table
- # 4. 验证配置
- ip route show table custom_table
- ip rule show
复制代码
创建策略路由配置文件/etc/sysconfig/network-scripts/rule-ens33:
- from 192.168.1.100 table custom_table
- to 192.168.2.0/24 table custom_table
复制代码
创建路由表配置文件/etc/sysconfig/network-scripts/route-ens33:
- 192.168.2.0/24 via 192.168.1.2 table custom_table
- default via 192.168.1.2 table custom_table
复制代码
重启网络服务:
- systemctl restart NetworkManager
复制代码
网络命名空间
网络命名空间是Linux内核提供的一种网络隔离机制,允许在同一主机上创建多个独立的网络堆栈,每个命名空间有自己的网络接口、路由表、防火墙规则等。
- # 1. 创建网络命名空间
- ip netns add ns1
- # 2. 在命名空间中执行命令
- ip netns exec ns1 ip addr show
- # 3. 将网络接口移动到命名空间
- ip link set ens33 netns ns1
- # 4. 在命名空间中配置接口
- ip netns exec ns1 ip addr add 192.168.1.100/24 dev ens33
- ip netns exec ns1 ip link set ens33 up
- ip netns exec ns1 ip route add default via 192.168.1.1
- # 5. 在命名空间之间创建连接
- # 创建veth pair
- ip link add veth0 type veth peer name veth1
- # 将一端移动到命名空间
- ip link set veth1 netns ns1
- # 配置两端
- ip addr add 10.0.0.1/24 dev veth0
- ip link set veth0 up
- ip netns exec ns1 ip addr add 10.0.0.2/24 dev veth1
- ip netns exec ns1 ip link set veth1 up
- # 6. 测试连接
- ping 10.0.0.2
- ip netns exec ns1 ping 10.0.0.1
- # 7. 列出所有命名空间
- ip netns list
- # 8. 删除命名空间
- ip netns del ns1
复制代码
网络桥接
网络桥接是一种将多个网络接口连接在一起的技术,使得它们可以像在同一个物理网络上通信。
- # 1. 创建网桥
- nmcli connection add type bridge ifname br0 con-name br0
- # 2. 将物理接口添加到网桥
- nmcli connection add type ethernet ifname ens33 master br0 slave-type bridge con-name br0-slave1
- nmcli connection add type ethernet ifname ens34 master br0 slave-type bridge con-name br0-slave2
- # 3. 配置网桥IP地址
- nmcli connection modify br0 ipv4.addresses 192.168.1.100/24
- nmcli connection modify br0 ipv4.gateway 192.168.1.1
- nmcli connection modify br0 ipv4.dns "8.8.8.8 8.8.4.4"
- nmcli connection modify br0 ipv4.method manual
- # 4. 激活所有连接
- nmcli connection up br0
- nmcli connection up br0-slave1
- nmcli connection up br0-slave2
- # 5. 验证配置
- brctl show
- ip addr show br0
复制代码
网络多路径路由
网络多路径路由允许系统使用多个网络路径同时传输数据,提高网络带宽和可靠性。
- # 1. 创建路由表
- echo "201 table1" >> /etc/iproute2/rt_tables
- echo "202 table2" >> /etc/iproute2/rt_tables
- # 2. 配置路由
- ip route add 192.168.1.0/24 dev ens33 src 192.168.1.100 table table1
- ip route add default via 192.168.1.1 table table1
- ip route add 192.168.2.0/24 dev ens34 src 192.168.2.100 table table2
- ip route add default via 192.168.2.1 table table2
- # 3. 配置路由规则
- ip rule add from 192.168.1.100 table table1
- ip rule add from 192.168.2.100 table table2
- # 4. 配置默认路由平衡
- 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
- # 5. 验证配置
- ip route show
- ip rule show
复制代码
安全配置
网络安全是企业环境中不可忽视的重要方面,RHEL 7.4提供了多种安全机制来保护网络通信。
防火墙配置
RHEL 7.4使用firewalld作为默认的防火墙管理工具,它替代了之前的iptables服务。
firewalld使用区域(zones)和服务(services)的概念来管理防火墙规则。每个区域定义了一组规则,可以应用于网络接口。
- # 1. 检查firewalld状态
- systemctl status firewalld
- # 2. 启动和停止firewalld
- systemctl start firewalld
- systemctl stop firewalld
- # 3. 查看当前区域
- firewall-cmd --get-active-zones
- # 4. 查看所有可用区域
- firewall-cmd --get-zones
- # 5. 查看默认区域
- firewall-cmd --get-default-zone
- # 6. 设置默认区域
- firewall-cmd --set-default-zone=public
- # 7. 查看区域配置
- firewall-cmd --zone=public --list-all
- # 8. 添加服务到区域
- firewall-cmd --zone=public --add-service=http
- # 9. 永久添加服务到区域
- firewall-cmd --zone=public --add-service=http --permanent
- # 10. 添加端口到区域
- firewall-cmd --zone=public --add-port=8080/tcp
- # 11. 永久添加端口到区域
- firewall-cmd --zone=public --add-port=8080/tcp --permanent
- # 12. 重新加载防火墙配置
- firewall-cmd --reload
- # 13. 移除服务或端口
- firewall-cmd --zone=public --remove-service=http
- firewall-cmd --zone=public --remove-port=8080/tcp
复制代码
创建自定义服务文件/etc/firewalld/services/custom-service.xml:
- <?xml version="1.0" encoding="utf-8"?>
- <service>
- <short>Custom Service</short>
- <description>This is a custom service for our application.</description>
- <port protocol="tcp" port="1234"/>
- <port protocol="udp" port="5678"/>
- <module name="nf_conntrack_netbios_ns"/>
- </service>
复制代码
重新加载firewalld并添加服务:
- firewall-cmd --reload
- firewall-cmd --zone=public --add-service=custom-service --permanent
- firewall-cmd --reload
复制代码
SELinux与网络安全
SELinux(Security-Enhanced Linux)是RHEL中的强制访问控制(MAC)系统,可以提供额外的安全层。
SELinux通过定义安全策略来控制进程对资源的访问,这些策略基于最小权限原则。
- # 1. 检查SELinux状态
- sestatus
- # 2. 设置SELinux模式
- setenforce 0 # 设置为宽容模式
- setenforce 1 # 设置为强制模式
- # 3. 查看SELinux布尔值
- getsebool -a
- # 4. 设置SELinux布尔值
- setsebool -P httpd_can_network_connect=1
- # 5. 查看网络相关布尔值
- getsebool -a | grep network
- # 6. 查看端口上下文
- semanage port -l
- # 7. 添加端口上下文
- semanage port -a -t http_port_t -p tcp 8080
- # 8. 查看SELinux日志
- ausearch -m avc -ts recent
复制代码
SELinux对网络服务有特定的策略,例如:
- # 允许HTTPD连接网络
- setsebool -P httpd_can_network_connect=1
- # 允许HTTPD连接远程数据库
- setsebool -P httpd_can_network_connect_db=1
- # 允许HTTPD发送邮件
- setsebool -P httpd_can_sendmail=1
- # 允许NFS共享目录
- setsebool -P nfs_export_all_rw=1
复制代码
TCP Wrappers配置
TCP Wrappers是一种基于主机的访问控制系统,可以在网络服务接受连接之前进行访问控制。
TCP Wrappers使用两个主要配置文件:
• /etc/hosts.allow:定义允许访问的主机
• /etc/hosts.deny:定义拒绝访问的主机
编辑/etc/hosts.deny:
编辑/etc/hosts.allow:
- # 允许特定IP访问SSH
- sshd: 192.168.1.0/24
- # 允许特定主机名访问FTP
- vsftpd: .example.com
- # 允许所有主机访问HTTPD
- httpd: ALL
复制代码- # 测试SSH访问
- tcpdmatch sshd 192.168.1.100
- # 查看支持TCP Wrappers的服务
- strings /usr/sbin/sshd | grep hosts_access
复制代码
最佳实践和性能优化
在企业环境中,网络配置不仅要正确,还要优化性能并遵循最佳实践。
网络性能优化
- # 1. 查看网络接口参数
- ethtool -g ens33
- # 2. 调整网络接口队列长度
- ethtool -G ens33 rx 4096 tx 4096
- # 3. 调整网络中断亲和性
- # 查看当前中断分配
- cat /proc/interrupts | grep eth
- # 设置中断亲和性
- echo 1 > /proc/irq/123/smp_affinity
- # 4. 启用网络接口卸载功能
- ethtool -K ens33 gro on
- ethtool -K ens33 lro on
- ethtool -K ens33 tso on
- ethtool -K ens33 gso on
- ethtool -K ens33 tx on
- ethtool -K ens33 rx on
复制代码
编辑/etc/sysctl.conf文件:
- # 增加TCP最大缓冲区大小
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- # 增加TCP默认缓冲区大小
- net.core.rmem_default = 16777216
- net.core.wmem_default = 16777216
- # 增加TCP最大连接数
- net.core.somaxconn = 65535
- # 启用TCP窗口扩展
- net.ipv4.tcp_window_scaling = 1
- # 启用TCP选择性确认
- net.ipv4.tcp_sack = 1
- # 启用TCP时间戳
- net.ipv4.tcp_timestamps = 1
- # 调整TCP keepalive参数
- net.ipv4.tcp_keepalive_time = 1200
- net.ipv4.tcp_keepalive_intvl = 30
- net.ipv4.tcp_keepalive_probes = 3
- # 增加本地端口范围
- net.ipv4.ip_local_port_range = 1024 65535
- # 启用TCP SYN cookies
- net.ipv4.tcp_syncookies = 1
- # 增加TCP最大半连接数
- net.ipv4.tcp_max_syn_backlog = 65536
- # 启用TCP快速打开
- net.ipv4.tcp_fastopen = 3
- # 调整TCP拥塞控制算法
- net.ipv4.tcp_congestion_control = bbr
复制代码
应用内核参数:
网络配置最佳实践
使用可预测的网络接口命名规则,避免使用传统的eth0、eth1等命名方式:
- # 查看网络接口命名规则
- ls -l /etc/udev/rules.d/70-persistent-net.rules
- # 修改网络接口命名
- # 编辑/etc/sysconfig/network-scripts/ifcfg-ens33
- NAME=ens33
- DEVICE=ens33
复制代码- # 1. 备份网络配置
- cp -r /etc/sysconfig/network-scripts/ /root/network-backup/
- cp /etc/NetworkManager/system-connections/* /root/network-backup/
- # 2. 恢复网络配置
- cp -r /root/network-backup/* /etc/sysconfig/network-scripts/
- cp /root/network-backup/* /etc/NetworkManager/system-connections/
- # 3. 重启网络服务
- systemctl restart NetworkManager
复制代码
创建网络配置文档/root/network-config.md:
- # 网络配置文档
- ## 网络接口
- ### ens33
- - 类型:以太网
- - IP地址:192.168.1.100/24
- - 网关:192.168.1.1
- - DNS:8.8.8.8, 8.8.4.4
- - 用途:管理网络
- ### ens34
- - 类型:以太网
- - IP地址:192.168.2.100/24
- - 网关:192.168.2.1
- - DNS:8.8.8.8, 8.8.4.4
- - 用途:数据网络
- ## 网络绑定
- ### bond0
- - 模式:active-backup
- - 成员接口:ens33, ens34
- - IP地址:192.168.1.200/24
- - 用途:高可用性管理网络
- ## VLAN
- ### vlan100
- - VLAN ID:100
- - 父接口:bond0
- - IP地址:192.168.100.100/24
- - 用途:生产网络
- ## 防火墙规则
- - 允许SSH(端口22)从管理网络访问
- - 允许HTTP(端口80)和HTTPS(端口443)从所有网络访问
- - 拒绝所有其他入站连接
复制代码- # 1. 安装网络监控工具
- yum install -y nagios nrpe zabbix-agent
- # 2. 配置网络监控脚本
- cat > /usr/local/bin/check_network.sh << 'EOF'
- #!/bin/bash
- # 检查网络接口状态
- INTERFACE=$1
- STATUS=$(ip link show $INTERFACE | grep 'state UP' | wc -l)
- if [ $STATUS -eq 1 ]; then
- echo "OK: Interface $INTERFACE is up"
- exit 0
- else
- echo "CRITICAL: Interface $INTERFACE is down"
- exit 2
- fi
- EOF
- chmod +x /usr/local/bin/check_network.sh
- # 3. 配置告警
- # 编辑/etc/aliases
- root: admin@example.com
- # 重新生成别名数据库
- newaliases
复制代码
高可用性网络配置
- # 1. 配置网络绑定
- # 创建绑定接口
- nmcli connection add type bond ifname bond0 con-name bond0 mode=4 miimon=100
- # 添加物理接口到绑定
- nmcli connection add type ethernet ifname ens33 master bond0 slave-type bond
- nmcli connection add type ethernet ifname ens34 master bond0 slave-type bond
- # 配置绑定接口IP
- nmcli connection modify bond0 ipv4.addresses 192.168.1.100/24
- nmcli connection modify bond0 ipv4.gateway 192.168.1.1
- nmcli connection modify bond0 ipv4.method manual
- # 激活连接
- nmcli connection up bond0
- nmcli connection up ethernet-ens33
- nmcli connection up ethernet-ens34
- # 2. 配置多路径路由
- # 创建路由表
- echo "201 table1" >> /etc/iproute2/rt_tables
- echo "202 table2" >> /etc/iproute2/rt_tables
- # 配置路由
- ip route add 192.168.1.0/24 dev bond0 src 192.168.1.100 table table1
- ip route add default via 192.168.1.1 table table1
- ip route add 192.168.2.0/24 dev ens35 src 192.168.2.100 table table2
- ip route add default via 192.168.2.1 table table2
- # 配置路由规则
- ip rule add from 192.168.1.100 table table1
- ip rule add from 192.168.2.100 table table2
- # 配置默认路由平衡
- 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. 创建网络监控脚本
- cat > /usr/local/bin/monitor_network.sh << 'EOF'
- #!/bin/bash
- # 监控网络连接状态
- GATEWAY=192.168.1.1
- INTERFACE=bond0
- LOGFILE=/var/log/network_monitor.log
- # 检查网关连通性
- ping -c 3 $GATEWAY > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo "$(date): Gateway $GATEWAY is unreachable, restarting network" >> $LOGFILE
- systemctl restart NetworkManager
- sleep 10
-
- # 再次检查
- ping -c 3 $GATEWAY > /dev/null 2>&1
- if [ $? -ne 0 ]; then
- echo "$(date): Network restart failed, rebooting system" >> $LOGFILE
- reboot
- else
- echo "$(date): Network restart successful" >> $LOGFILE
- fi
- fi
- EOF
- chmod +x /usr/local/bin/monitor_network.sh
- # 2. 添加到cron
- echo "*/5 * * * * /usr/local/bin/monitor_network.sh" > /etc/cron.d/network_monitor
- # 3. 启动cron服务
- systemctl start crond
- systemctl enable crond
复制代码
总结
本文详细介绍了Red Hat Enterprise Linux 7.4网络配置的各个方面,从基础概念到高级配置,从静态IP和DHCP配置到网络绑定、VLAN、策略路由等高级功能。我们还讨论了网络故障排除、安全配置以及性能优化的最佳实践。
通过掌握这些知识和技能,系统管理员可以有效地管理和维护企业级Linux系统的网络环境,确保网络连接的稳定性、安全性和高性能。随着技术的不断发展,网络管理工具和方法也在不断演进,但本文介绍的基本原则和核心概念将长期适用。
在实际工作中,建议管理员结合具体业务需求和环境特点,灵活应用这些技术,并持续学习和探索新的网络管理技术和最佳实践,以应对不断变化的网络环境和安全挑战。 |
|