0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux网络管理的关键技术和最佳实践

马哥Linux运维 ? 来源:马哥Linux运维 ? 2025-07-09 09:53 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、引言

在大型互联网企业中,Linux网络管理是运维工程师的核心技能之一。面对海量服务器、复杂网络拓扑、高并发流量,运维人员需要掌握从基础网络配置到高级网络优化的全套技术栈。本文将结合大厂实际场景,深入解析Linux网络管理的关键技术和最佳实践。

二、网络基础架构与规划

2.1 大厂网络架构设计

典型三层网络架构:

┌─────────────────────────────────────────────────────────┐
│          核心层 (Core Layer)          │
│ ┌─────────────┐       ┌─────────────┐      │
│ │  Core-1  │──────────────│  Core-2  │      │
│ └─────────────┘       └─────────────┘      │
└─────────────────────────────────────────────────────────┘
             │
┌─────────────────────────────────────────────────────────┐
│         汇聚层 (Aggregation Layer)       │
│ ┌─────────────┐       ┌─────────────┐      │
│ │  Agg-1   │──────────────│  Agg-2   │      │
│ └─────────────┘       └─────────────┘      │
└─────────────────────────────────────────────────────────┘
             │
┌─────────────────────────────────────────────────────────┐
│          接入层 (Access Layer)         │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐   │
│ │  TOR-1   │ │  TOR-2   │ │  TOR-3   │   │
│ └─────────────┘ └─────────────┘ └─────────────┘   │
└─────────────────────────────────────────────────────────┘

VLAN划分策略:

# 管理网络
VLAN 100: 192.168.100.0/24 # 服务器管理接口
VLAN 101: 192.168.101.0/24 # 网络设备管理

# 业务网络
VLAN 200: 10.10.200.0/24  # Web前端服务
VLAN 201: 10.10.201.0/24  # 应用服务层
VLAN 202: 10.10.202.0/24  # 数据库层

# 存储网络
VLAN 300: 10.10.300.0/24  # 分布式存储
VLAN 301: 10.10.301.0/24  # 备份网络

2.2 网络接口配置与管理

网络接口配置(CentOS/RHEL):

# /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=static
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=eth0
UUID=12345678-1234-1234-1234-123456789abc
DEVICE=eth0
ONBOOT=yes
IPADDR=10.10.200.100
NETMASK=255.255.255.0
GATEWAY=10.10.200.1
DNS1=8.8.8.8
DNS2=8.8.4.4

网络接口配置(Ubuntu/Debian):

# /etc/netplan/00-installer-config.yaml
network:
version:2
renderer:networkd
ethernets:
 eth0:
  addresses:
   -10.10.200.100/24
  gateway4:10.10.200.1
  nameservers:
   addresses:[8.8.8.8,8.8.4.4]
 eth1:
  addresses:
   -10.10.201.100/24

网络绑定(Bonding)配置:

# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.10.200.100
NETMASK=255.255.255.0
GATEWAY=10.10.200.1
BONDING_OPTS="mode=802.3ad miimon=100 lacp_rate=fast"

# /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

# /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes

三、网络性能监控与调优

3.1 网络性能监控工具

实时网络监控脚本:

#!/bin/bash
# 网络性能监控脚本
INTERFACE="eth0"
INTERVAL=5

echo"网络接口:$INTERFACE"
echo"监控间隔:$INTERVAL秒"
echo"时间戳     接收(MB/s) 发送(MB/s) 丢包率(%)"
echo"=================================================="

whiletrue;do
 # 获取网络统计信息
  RX1=$(cat/sys/class/net/$INTERFACE/statistics/rx_bytes)
  TX1=$(cat/sys/class/net/$INTERFACE/statistics/tx_bytes)
  RX_DROPPED1=$(cat/sys/class/net/$INTERFACE/statistics/rx_dropped)
  TX_DROPPED1=$(cat/sys/class/net/$INTERFACE/statistics/tx_dropped)
  RX_PACKETS1=$(cat/sys/class/net/$INTERFACE/statistics/rx_packets)
  TX_PACKETS1=$(cat/sys/class/net/$INTERFACE/statistics/tx_packets)
 
 sleep$INTERVAL
 
  RX2=$(cat/sys/class/net/$INTERFACE/statistics/rx_bytes)
  TX2=$(cat/sys/class/net/$INTERFACE/statistics/tx_bytes)
  RX_DROPPED2=$(cat/sys/class/net/$INTERFACE/statistics/rx_dropped)
  TX_DROPPED2=$(cat/sys/class/net/$INTERFACE/statistics/tx_dropped)
  RX_PACKETS2=$(cat/sys/class/net/$INTERFACE/statistics/rx_packets)
  TX_PACKETS2=$(cat/sys/class/net/$INTERFACE/statistics/tx_packets)
 
 # 计算速率
  RX_RATE=$(echo"scale=2; ($RX2-$RX1) / 1024 / 1024 /$INTERVAL"| bc)
  TX_RATE=$(echo"scale=2; ($TX2-$TX1) / 1024 / 1024 /$INTERVAL"| bc)
 
 # 计算丢包率
  TOTAL_PACKETS=$((RX_PACKETS2 - RX_PACKETS1 + TX_PACKETS2 - TX_PACKETS1))
  DROPPED_PACKETS=$((RX_DROPPED2 - RX_DROPPED1 + TX_DROPPED2 - TX_DROPPED1))
 
 if[$TOTAL_PACKETS-gt 0 ];then
    DROP_RATE=$(echo"scale=2;$DROPPED_PACKETS* 100 /$TOTAL_PACKETS"| bc)
 else
    DROP_RATE=0
 fi
 
 printf"%-15s %10s %10s %10s
"
   "$(date '+%H:%M:%S')"
   "$RX_RATE"
   "$TX_RATE"
   "$DROP_RATE"
done

高级网络监控工具使用:

# iftop - 实时网络流量监控
iftop -i eth0 -P -n

# nethogs - 按进程显示网络使用情况
nethogs eth0

# ss - 查看网络连接状态
ss -tuln | grep :80
ss -i # 显示详细连接信息

# nload - 实时网络流量图形化显示
nload -m eth0

# tcpdump - 网络包捕获分析
tcpdump -i eth0 -n -c 100'port 80 or port 443'

3.2 网络参数调优

TCP参数优化:

# /etc/sysctl.conf
# TCP缓冲区优化
net.core.rmem_default = 262144
net.core.rmem_max = 16777216
net.core.wmem_default = 262144
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# TCP连接优化
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1

# 网络队列优化
net.core.netdev_max_backlog = 5000
net.core.netdev_budget = 600

# 应用优化
sysctl -p

网络接口队列优化:

#!/bin/bash
# 网络接口多队列配置
INTERFACE="eth0"
CPU_CORES=$(nproc)

# 启用多队列
ethtool -L$INTERFACEcombined$CPU_CORES

# 设置中断亲和性
for((i=0; i<$CPU_CORES; i++));?do
? ? IRQ=$(grep?"$INTERFACE-TxRx-$i"?/proc/interrupts | awk?'{print $1}'?|?tr?-d?':')
? ??if?[ -n?"$IRQ"?];?then
? ? ? ??echo?$((1?<< i)) > /proc/irq/$IRQ/smp_affinity
 fi
done

# 优化网络接口参数
ethtool -G$INTERFACErx 4096 tx 4096
ethtool -C$INTERFACEadaptive-rx on adaptive-tx on

四、网络安全与防护

4.1 iptables防火墙配置

企业级防火墙规则:

#!/bin/bash
# 企业级iptables配置脚本

# 清空现有规则
iptables -F
iptables -X
iptables -Z

# 设置默认策略
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# SSH访问控制(仅允许特定IP)
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT

# Web服务端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 数据库访问控制
iptables -A INPUT -p tcp --dport 3306 -s 10.10.201.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 5432 -s 10.10.201.0/24 -j ACCEPT

# 防止SYN洪水攻击
iptables -A INPUT -p tcp --syn -mlimit--limit1/s --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 防止端口扫描
iptables -A INPUT -m state --state NEW -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -m state --state NEW -p tcp --tcp-flags ALL NONE -j DROP

# 限制ICMP
iptables -A INPUT -p icmp --icmp-type echo-request -mlimit--limit1/s -j ACCEPT

# 保存规则
iptables-save > /etc/iptables/rules.v4

4.2 网络入侵检测

基于日志的入侵检测脚本:

#!/bin/bash
# 网络入侵检测脚本
LOG_FILE="/var/log/secure"
ALERT_EMAIL="admin@company.com"
THRESHOLD=10

# 检测SSH暴力破解
check_ssh_brute_force() {
 localfailed_attempts=$(grep"Failed password"$LOG_FILE| 
    grep"$(date '+%b %d')"| 
    awk'{print $11}'|sort|uniq-c | 
    awk -v threshold=$THRESHOLD'$1 > threshold {print $2, $1}')
 
 if[ -n"$failed_attempts"];then
   echo"SSH暴力破解检测到:"
   echo"$failed_attempts"
   
   # 自动封禁IP
   echo"$failed_attempts"|whilereadip count;do
      iptables -A INPUT -s$ip-j DROP
     echo"已封禁IP:$ip(失败次数:$count)"
   done
 fi
}

# 检测端口扫描
check_port_scan() {
 localscan_attempts=$(netstat -an | grep SYN_RECV | 
    awk'{print $5}'|cut-d: -f1 |sort|uniq-c | 
    awk -v threshold=50'$1 > threshold {print $2, $1}')
 
 if[ -n"$scan_attempts"];then
   echo"端口扫描检测到:"
   echo"$scan_attempts"
 fi
}

# 执行检测
check_ssh_brute_force
check_port_scan

五、高可用网络架构

5.1 负载均衡配置

HAProxy配置示例:

# /etc/haproxy/haproxy.cfg
global
  daemon
  maxconn 4096
  user haproxy
  group haproxy
 
defaults
  mode http
 timeoutconnect 5000ms
 timeoutclient 50000ms
 timeoutserver 50000ms
  option httplog
  option dontlognull
  option redispatch
  retries 3

frontend web_frontend
 bind*:80
 bind*:443 ssl crt /etc/ssl/certs/server.pem
  redirect scheme httpsif!{ ssl_fc }
  default_backend web_servers

backend web_servers
  balance roundrobin
  option httpchk GET /health
  server web1 10.10.200.10:80 check
  server web2 10.10.200.11:80 check
  server web3 10.10.200.12:80 check

listen stats
 bind*:8080
  statsenable
  stats uri /stats
  stats refresh 30s

Keepalived高可用配置:

# /etc/keepalived/keepalived.conf
vrrp_script chk_haproxy {
  script"/bin/curl -f http://localhost:80/health || exit 1"
  interval 2
  weight -2
  fall 3
  rise 2
}

vrrp_instance VI_1 {
  state MASTER
  interface eth0
  virtual_router_id 51
  priority 100
  advert_int 1
  authentication {
    auth_type PASS
    auth_pass mypassword
  }
  virtual_ipaddress {
    10.10.200.100/24
  }
  track_script {
    chk_haproxy
  }
}

5.2 网络故障切换

自动故障切换脚本:

#!/bin/bash
# 网络故障自动切换脚本
PRIMARY_GATEWAY="10.10.200.1"
BACKUP_GATEWAY="10.10.200.2"
TEST_HOST="8.8.8.8"
INTERFACE="eth0"

check_connectivity() {
 localgateway=$1
  ping -c 3 -W 2$gateway> /dev/null 2>&1
 return$?
}

switch_gateway() {
 localnew_gateway=$1
  ip route del default
  ip route add default via$new_gatewaydev$INTERFACE
 echo"已切换到网关:$new_gateway"
}

# 主循环
whiletrue;do
  current_gateway=$(ip route show default | awk'{print $3}')
 
 if["$current_gateway"="$PRIMARY_GATEWAY"];then
   if! check_connectivity$PRIMARY_GATEWAY;then
     echo"主网关故障,切换到备用网关"
      switch_gateway$BACKUP_GATEWAY
   fi
 else
   ifcheck_connectivity$PRIMARY_GATEWAY;then
     echo"主网关恢复,切换回主网关"
      switch_gateway$PRIMARY_GATEWAY
   fi
 fi
 
 sleep30
done

六、网络故障排查与诊断

6.1 网络连通性诊断

网络诊断工具集:

#!/bin/bash
# 网络故障诊断脚本
TARGET_HOST="$1"
TARGET_PORT="$2"

if[ -z"$TARGET_HOST"];then
 echo"用法:$0<目标主机> [端口]"
 exit1
fi

echo"=== 网络诊断报告 ==="
echo"目标主机:$TARGET_HOST"
echo"目标端口:${TARGET_PORT:-N/A}"
echo"诊断时间:$(date)"
echo

# 1. 基础连通性测试
echo"1. PING测试:"
ifping -c 4$TARGET_HOST> /tmp/ping_result 2>&1;then
 echo"  ? PING成功"
  grep"rtt"/tmp/ping_result
else
 echo"  ? PING失败"
 cat/tmp/ping_result
fi
echo

# 2. 路由跟踪
echo"2. 路由跟踪:"
traceroute$TARGET_HOST2>/dev/null |head-10
echo

# 3. DNS解析测试
echo"3. DNS解析:"
ifnslookup$TARGET_HOST> /tmp/dns_result 2>&1;then
 echo"  ? DNS解析成功"
  grep"Address"/tmp/dns_result |tail-1
else
 echo"  ? DNS解析失败"
fi
echo

# 4. 端口连通性测试
if[ -n"$TARGET_PORT"];then
 echo"4. 端口连通性:"
 ifnc -zv$TARGET_HOST$TARGET_PORT2>&1 | grep -q"succeeded";then
   echo"  ? 端口$TARGET_PORT开放"
 else
   echo"  ? 端口$TARGET_PORT不可达"
 fi
 echo
fi

# 5. 网络接口状态
echo"5. 本地网络接口状态:"
ip addr show | grep -E"inet|state"
echo

# 6. 路由表
echo"6. 路由表:"
ip route show
echo

# 7. 防火墙状态
echo"7. 防火墙状态:"
iptables -L -n |head-20

6.2 网络性能分析

网络性能测试脚本:

#!/bin/bash
# 网络性能测试脚本
SERVER_IP="$1"
TEST_DURATION=30

if[ -z"$SERVER_IP"];then
 echo"用法:$0<服务器IP>"
 exit1
fi

echo"=== 网络性能测试 ==="
echo"服务器:$SERVER_IP"
echo"测试时长:$TEST_DURATION秒"
echo

# TCP带宽测试
echo"1. TCP带宽测试:"
ifcommand-v iperf3 &> /dev/null;then
  iperf3 -c$SERVER_IP-t$TEST_DURATION
else
 echo"  iperf3 未安装,跳过带宽测试"
fi
echo

# 延迟测试
echo"2. 网络延迟测试:"
ping -c 10$SERVER_IP|tail-1
echo

# 并发连接测试
echo"3. 并发连接测试:"
foriin{1..10};do
  (timenc -zv$SERVER_IP80 2>&1) 2>&1 | grep real &
done
wait
echo

# 丢包率测试
echo"4. 丢包率测试:"
ping -c 100$SERVER_IP| grep"packet loss"

七、容器网络管理

7.1 Docker网络配置

Docker网络管理:

#!/bin/bash
# Docker网络配置脚本

# 创建自定义网络
docker network create --driver bridge 
  --subnet=172.20.0.0/16 
  --ip-range=172.20.240.0/20 
  --gateway=172.20.0.1 
  custom_network

# 创建macvlan网络
docker network create -d macvlan 
  --subnet=192.168.1.0/24 
  --gateway=192.168.1.1 
  -o parent=eth0 
  macvlan_network

# 容器网络监控
monitor_container_network() {
 echo"容器网络使用情况:"
  docker stats --no-stream --format"table {{.Container}}	{{.NetIO}}"
 
 echo-e"
容器网络详情:"
  docker networkls
 
 echo-e"
网络接口统计:"
 forcontainerin$(docker ps -q);do
    name=$(docker inspect --format='{{.Name}}'$container| sed's////')
   echo"容器:$name"
    dockerexec$containercat/proc/net/dev | grep -v"lo:"|tail-n +3
   echo
 done
}

monitor_container_network

7.2 Kubernetes网络管理

Kubernetes网络故障排查:

#!/bin/bash
# K8s网络故障排查脚本

# 检查Pod网络连通性
check_pod_connectivity() {
 localpod_name=$1
 localnamespace=${2:-default}
 
 echo"检查Pod:$pod_name(namespace:$namespace)"
 
 # 获取Pod IP
  pod_ip=$(kubectl get pod$pod_name-n$namespace-o jsonpath='{.status.podIP}')
 echo"Pod IP:$pod_ip"
 
 # 检查Pod网络接口
  kubectlexec$pod_name-n$namespace-- ip addr show
 
 # 检查Pod路由
  kubectlexec$pod_name-n$namespace-- ip route show
 
 # 测试DNS解析
  kubectlexec$pod_name-n$namespace-- nslookup kubernetes.default.svc.cluster.local
}

# 检查Service网络
check_service_network() {
 localservice_name=$1
 localnamespace=${2:-default}
 
 echo"检查Service:$service_name"
 
 # 获取Service信息
  kubectl get svc$service_name-n$namespace-o wide
 
 # 检查Endpoints
  kubectl get endpoints$service_name-n$namespace
 
 # 检查Service的iptables规则
  iptables -t nat -L | grep$service_name
}

# 网络策略检查
check_network_policies() {
 echo"当前网络策略:"
  kubectl get networkpolicies --all-namespaces
 
 echo-e"
网络策略详情:"
  kubectl get networkpolicies --all-namespaces -o yaml
}

# 使用示例
# check_pod_connectivity "my-pod" "default"
# check_service_network "my-service" "default"
# check_network_policies

八、网络自动化管理

8.1 Ansible网络自动化

网络配置自动化Playbook:

# network_config.yml
---
-name:网络配置自动化
hosts:servers
become:yes
vars:
 network_interfaces:
  -name:eth0
   ip:"{{ ansible_default_ipv4.address }}"
   netmask:"255.255.255.0"
   gateway:"{{ ansible_default_ipv4.gateway }}"
  -name:eth1
   ip:"10.10.201.{{ ansible_host.split('.')[3] }}"
   netmask:"255.255.255.0"
 
tasks:
 -name:配置网络接口
  template:
   src:ifcfg-interface.j2
   dest:"/etc/sysconfig/network-scripts/ifcfg-{{ item.name }}"
  loop:"{{ network_interfaces }}"
  notify:restartnetwork
 
 -name:配置防火墙规则
  iptables:
   chain:INPUT
   protocol:tcp
   destination_port:"{{ item }}"
   jump:ACCEPT
  loop:
   -22
   -80
   -443
 
 -name:优化网络参数
  sysctl:
   name:"{{ item.name }}"
   value:"{{ item.value }}"
   state:present
   reload:yes
  loop:
   -{name:"net.ipv4.tcp_fin_timeout",value:"30"}
   -{name:"net.ipv4.tcp_keepalive_time",value:"1200"}
   -{name:"net.core.rmem_max",value:"16777216"}
   -{name:"net.core.wmem_max",value:"16777216"}
 
 -name:安装网络监控工具
  package:
   name:"{{ item }}"
   state:present
  loop:
   -iftop
   -nethogs
   -tcpdump
   -nmap

handlers:
 -name:restartnetwork
  service:
   name:network
   state:restarted

8.2 网络监控自动化

Prometheus网络监控配置:

# prometheus.yml
global:
scrape_interval:15s
evaluation_interval:15s

rule_files:
-"network_rules.yml"

scrape_configs:
-job_name:'node-exporter'
 static_configs:
  -targets:['localhost:9100']
 scrape_interval:5s
 metrics_path:/metrics

-job_name:'snmp-network'
 static_configs:
  -targets:
   -192.168.1.1# 路由器
   -192.168.1.2# 交换机
 metrics_path:/snmp
 params:
  module:[if_mib]
 relabel_configs:
  -source_labels:[__address__]
   target_label:__param_target
  -source_labels:[__param_target]
   target_label:instance
  -target_label:__address__
   replacement:127.0.0.1:9116# SNMP exporter

网络告警规则:

# network_rules.yml
groups:
-name:network_alerts
 rules:
  -alert:HighNetworkTraffic
   expr:rate(node_network_receive_bytes_total[5m])>100000000
   for:2m
   labels:
    severity:warning
   annotations:
    summary:"高网络流量告警"
    description:"{{ $labels.instance }}网络接收流量超过100MB/s"
  
  -alert:NetworkInterfaceDown
   expr:node_network_up==0
   for:1m
   labels:
    severity:critical
   annotations:
    summary:"网络接口故障"
    description:"{{ $labels.instance }}网络接口{{ $labels.device }}已断开"
  
  -alert:HighPacketLoss
   expr:rate(node_network_receive_drop_total[5m])>1000
   for:2m
   labels:
    severity:warning
   annotations:
    summary:"网络丢包告警"
    description:"{{ $labels.instance }}网络丢包率过高"

九、网络安全最佳实践

9.1 网络安全加固

网络安全检查脚本:

#!/bin/bash
# 网络安全检查脚本

echo"=== 网络安全检查报告 ==="
echo"检查时间:$(date)"
echo

# 1. 开放端口检查
echo"1. 开放端口检查:"
netstat -tuln | grep LISTEN |whilereadline;do
  port=$(echo$line| awk'{print $4}'|cut-d: -f2)
  protocol=$(echo$line| awk'{print $1}')
 echo"  开放端口:$port($protocol)"
done
echo

# 2. 防火墙状态检查
echo"2. 防火墙状态:"
ifsystemctl is-active --quiet iptables;then
 echo"  ? iptables 服务运行中"
  rule_count=$(iptables -L | grep -c"^Chain")
 echo"  防火墙规则链数:$rule_count"
else
 echo"  ? iptables 服务未运行"
fi
echo

# 3. SSH配置检查
echo"3. SSH安全配置检查:"
ssh_config="/etc/ssh/sshd_config"
if[ -f"$ssh_config"];then
 # 检查关键配置项
  root_login=$(grep"^PermitRootLogin"$ssh_config| awk'{print $2}')
  password_auth=$(grep"^PasswordAuthentication"$ssh_config| awk'{print $2}')
  port=$(grep"^Port"$ssh_config| awk'{print $2}')
 
 echo"  SSH端口:${port:-22}"
 echo"  Root登录:${root_login:-yes}"
 echo"  密码认证:${password_auth:-yes}"
 
 if["$root_login"="no"];then
   echo"  ? 已禁用Root登录"
 else
   echo"  ? 建议禁用Root登录"
 fi
fi
echo

# 4. 网络连接检查
echo"4. 可疑网络连接检查:"
netstat -an | grep ESTABLISHED | awk'{print $5}'|cut-d: -f1 |sort|uniq-c |sort-nr |head-10
echo

# 5. 失败登录尝试检查
echo"5. 失败登录尝试:"
if[ -f"/var/log/secure"];then
  grep"Failed password"/var/log/secure |tail-5
else
 echo"  无法访问登录日志"
fi

9.2 DDoS防护

DDoS防护脚本:

#!/bin/bash
# DDoS防护脚本

# 限制连接数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 20 -j REJECT

# 限制新连接速率
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 60 --hitcount 10 -j DROP

# SYN Flood防护
echo1 > /proc/sys/net/ipv4/tcp_syncookies
echo2048 > /proc/sys/net/ipv4/tcp_max_syn_backlog
echo3 > /proc/sys/net/ipv4/tcp_synack_retries

# 配置连接跟踪
echo65536 > /proc/sys/net/netfilter/nf_conntrack_max
echo300 > /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established

# 自动封禁攻击IP
monitor_ddos() {
 whiletrue;do
   # 检测异常连接
    netstat -an | grep :80 | grep SYN_RECV | awk'{print $5}'|cut-d: -f1 |sort|uniq-c |whilereadcount ip;do
     if[$count-gt 50 ];then
       echo"检测到DDoS攻击,封禁IP:$ip"
        iptables -A INPUT -s$ip-j DROP
     fi
   done
   sleep10
 done
}

# 启动监控
monitor_ddos &

十、总结与展望

10.1 运维最佳实践总结

1.标准化配置管理:使用配置管理工具(Ansible、Puppet)实现网络配置的标准化和自动化。

2.全面监控体系:建立从基础设施到应用层的全栈网络监控,及时发现和处理网络问题。

3.安全防护策略:实施多层次的网络安全防护,包括防火墙、入侵检测、访问控制等。

4.故障快速响应:建立完善的故障处理流程和自动化故障切换机制。

5.性能持续优化:定期进行网络性能评估和调优,确保网络基础设施能够支撑业务发展。

10.2 技术发展趋势

?软件定义网络(SDN):通过软件控制网络行为,提高网络的灵活性和可管理性。

?网络功能虚拟化(NFV):将网络功能从专用硬件中解耦,实现更灵活的网络服务部署。

?边缘计算网络:随着边缘计算的发展,网络架构将更加分布式和智能化。

?AI驱动的网络运维:利用人工智能技术实现网络的自动化运维和智能故障诊断。

结语

Linux网络管理是大厂运维工程师必须掌握的核心技能。通过本文介绍的技术和实践,运维人员可以构建稳定、高效、安全的网络基础设施,为企业业务发展提供坚实的技术保障。

在实际工作中,运维人员需要结合具体业务场景,灵活运用这些技术,并持续学习新的网络技术和工具,以应对不断变化的业务需求和技术挑战。

本文内容基于大厂实际生产环境经验总结,如有疑问或需要进一步交流,欢迎讨论。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 互联网
    +关注

    关注

    55

    文章

    11256

    浏览量

    106727
  • Linux
    +关注

    关注

    87

    文章

    11522

    浏览量

    214219
  • 网络管理
    +关注

    关注

    0

    文章

    125

    浏览量

    28437

原文标题:运维必备:大厂Linux网络管理技术实战指南

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    网络化HRM系统关键技术研究与实现

    和系统权限控制与管理等。本学位论文针对跨地域大型煤矿公司HRM系统的需求,研究网络化HRM系统的关键技术,包括:B/S结构的多层Web应用系统、J2EE体系结构、JSP/Servlet开发模式
    发表于 04-24 09:21

    汽车总线及其关键技术的研究

    汽车总线及其关键技术的研究
    发表于 07-10 11:33

    CDMA原理与关键技术

    CDMA原理与关键技术
    发表于 08-16 20:25

    智能电网的网络通信架构及关键技术解析

    中心议题: *智能电网的网络通信架构 *智能电网的关键技术解决方案: *TE 弹性属性决定在链路故障或结点失效时采取的策略1引言 建设信息化、自动化、互动化为特征的坚强智 能电网(Smart
    发表于 10-09 11:42

    详解5G的六大关键技术

    过程中会遇到哪些问题?在5G研发刚起步的情况下,如何建立一套全面的5G关键技术评估指标体系和评估方法,实现客观有效的第三方评估,服务技术与资源管理的发展需要,同样是当前5G技术发展所面
    发表于 12-07 18:40

    利用CAN总线构建一个车内网络,需要解决的关键技术问题有哪些?

    CAN-BUS系统主要包括哪些部件?车载网络的应用分类有哪几种?利用CAN总线构建一个车内网络,需要解决的关键技术问题有哪些?
    发表于 05-13 06:07

    数字家庭网络关键技术是什么?

    数字家庭网络提供的业务类别以及需求有哪些?数字家庭网络关键技术是什么?
    发表于 05-26 06:20

    WCDMA中的关键技术网络规划中的应用是什么

    WCDMA中的关键技术网络规划中的应用是什么
    发表于 05-27 06:15

    ASON网络关键技术有哪些?

    ASON光网络由哪几部分组成?ASON网络关键技术有哪些?ASON的亮点是什么?
    发表于 05-28 06:48

    车载移动异构无线网络架构及关键技术是什么?

    车载移动异构无线网络架构及关键技术是什么?
    发表于 06-07 06:29

    POE的关键技术有哪些?

    使用以太网线供电的优势是什么?PoE设备是怎么供电的?POE的关键技术有哪些?
    发表于 06-10 09:26

    CatM的关键技术有哪些?CatNB和CatM有什么区别?

    物联网市场的网络特性是什么?CatNB和CatM有什么区别?CatM的关键技术有哪些?
    发表于 06-30 08:02

    明白VPP关键技术有哪些

    随着人工智能技术的不断发展,越来越多的行业开始使用人工智能技术,这也使得智能虚拟代理技术得到了广泛的应用。为了能够深入了解智能虚拟代理技术,需要明白VPP
    发表于 08-31 07:28

    视觉导航关键技术及应用

    由于视觉导航技术的应用越来越普及 ,因此 ,有必要对视觉导航中的关键技术及应用进行研究。文章对其中的图像处理技术和定位与跟踪技术进行了详细研究 ,并与此相对应 ,介绍的相关的应用。
    发表于 09-25 08:09

    部署Linux最佳实践探索

    编者按:本文节选自节选自《基于Linux的企业自动化》第五章。“第5章,使用Ansible构建用于部署的虚拟机模板,通过构建虚拟机模板来探索部署Linux最佳实践,虚拟机模板将以实际
    的头像 发表于 05-16 09:35 ?807次阅读