插件窝 干货文章 如何使用Linux进行网络服务配置和优化

如何使用Linux进行网络服务配置和优化

sudo 配置 tcp 优化 844    来源:    2025-04-13

Linux网络服务配置与优化指南

作为IT工程师,我将为您详细介绍Linux环境下网络服务的配置和优化方法。

一、基础网络配置

1. 网络接口配置

# 查看网络接口信息
ip addr show
ifconfig -a  # 传统命令

# 临时配置IP地址
sudo ip addr add 192.168.1.100/24 dev eth0

# 永久配置IP地址 (Ubuntu/Debian)
sudo nano /etc/network/interfaces
"""
auto eth0
iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameservers 8.8.8.8 8.8.4.4
"""

# 永久配置IP地址 (RHEL/CentOS)
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
"""
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
"""

2. DNS配置

# 查看DNS配置
cat /etc/resolv.conf

# 永久配置DNS (Ubuntu/Debian)
sudo nano /etc/resolvconf/resolv.conf.d/base
"""
nameserver 8.8.8.8
nameserver 8.8.4.4
"""
sudo resolvconf -u

# 永久配置DNS (RHEL/CentOS)
sudo nano /etc/sysconfig/network-scripts/ifcfg-eth0
# 添加DNS配置

二、常用网络服务配置

1. SSH服务配置与优化

# 安装SSH服务
sudo apt install openssh-server  # Debian/Ubuntu
sudo yum install openssh-server  # RHEL/CentOS

# 配置文件位置
sudo nano /etc/ssh/sshd_config

# 推荐安全配置
"""
Port 2222  # 修改默认端口
PermitRootLogin no  # 禁止root直接登录
PasswordAuthentication no  # 禁用密码认证,使用密钥
MaxAuthTries 3  # 最大尝试次数
ClientAliveInterval 300  # 客户端活动检查间隔
ClientAliveCountMax 2  # 客户端活动检查次数
"""

# 重启SSH服务
sudo systemctl restart sshd

2. Web服务器配置(Nginx)

# 安装Nginx
sudo apt install nginx  # Debian/Ubuntu
sudo yum install nginx  # RHEL/CentOS

# 主要配置文件
sudo nano /etc/nginx/nginx.conf

# 优化配置示例
"""
worker_processes auto;  # 自动设置工作进程数
worker_rlimit_nofile 100000;  # 每个进程可打开的文件描述符数量

events {
    worker_connections 4096;  # 每个工作进程的连接数
    multi_accept on;  # 一次接受多个连接
    use epoll;  # 使用epoll事件模型
}

http {
    sendfile on;  # 启用sendfile
    tcp_nopush on;  # 启用TCP_NOPUSH
    tcp_nodelay on;  # 禁用Nagle算法

    keepalive_timeout 30;  # 保持连接超时
    keepalive_requests 100;  # 每个连接的最大请求数

    gzip on;  # 启用gzip压缩
    gzip_comp_level 2;  # 压缩级别
    gzip_min_length 1024;  # 最小压缩文件大小
}
"""

# 测试并重启Nginx
sudo nginx -t
sudo systemctl restart nginx

3. 数据库服务(MySQL/MariaDB)优化

# 配置文件位置
sudo nano /etc/mysql/my.cnf  # 或 /etc/my.cnf

# 优化配置示例
"""
[mysqld]
innodb_buffer_pool_size = 4G  # 根据内存调整,通常为总内存的50-70%
innodb_log_file_size = 512M
innodb_flush_log_at_trx_commit = 2  # 平衡性能与可靠性
innodb_flush_method = O_DIRECT
innodb_read_io_threads = 8
innodb_write_io_threads = 8
innodb_io_capacity = 2000
innodb_io_capacity_max = 4000
query_cache_size = 0  # MySQL 8.0已移除查询缓存
table_open_cache = 4000
max_connections = 200  # 根据需求调整
thread_cache_size = 50
"""

# 重启MySQL服务
sudo systemctl restart mysql

三、网络性能优化

1. TCP/IP参数优化

# 查看当前TCP参数
sysctl -a | grep net.ipv4.tcp

# 优化TCP参数 (/etc/sysctl.conf)
sudo nano /etc/sysctl.conf
"""
# 增加TCP窗口大小
net.ipv4.tcp_window_scaling = 1
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

# 减少TIME_WAIT状态
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1

# 增加连接队列
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

# 启用TCP快速打开
net.ipv4.tcp_fastopen = 3

# 启用BBR拥塞控制算法
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
"""

# 应用配置
sudo sysctl -p

2. 连接数限制优化

# 查看当前限制
ulimit -n

# 永久修改限制
sudo nano /etc/security/limits.conf
"""
* soft nofile 65535
* hard nofile 65535
"""

# 对于systemd服务
sudo nano /etc/systemd/system.conf
"""
DefaultLimitNOFILE=65535
"""

sudo systemctl daemon-reload

四、网络监控与故障排查

1. 常用监控工具

# 实时网络监控
iftop -n  # 查看带宽使用情况
nload  # 简单的带宽监控
vnstat  # 网络流量统计

# 连接监控
ss -tulnp  # 查看活动连接
netstat -tulnp  # 传统命令
lsof -i  # 查看打开的网络连接

# 性能分析
sar -n DEV 1  # 网络接口统计
dstat -n  # 网络流量统计

2. 网络故障排查

# 测试网络连通性
ping example.com
traceroute example.com
mtr example.com  # 更强大的路由跟踪工具

# DNS解析测试
dig example.com
nslookup example.com

# 端口测试
telnet example.com 80
nc -zv example.com 80

# 数据包捕获
tcpdump -i eth0 -n port 80
tshark -i eth0 -f "port 80"  # Wireshark的命令行版本

五、安全加固

1. 防火墙配置

# 使用UFW (Ubuntu/Debian)
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

# 使用firewalld (RHEL/CentOS)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

# 使用iptables (通用)
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -P INPUT DROP

2. 防止DDoS攻击

# 使用fail2ban防止暴力破解
sudo apt install fail2ban  # Debian/Ubuntu
sudo yum install fail2ban  # RHEL/CentOS

# 配置示例 (/etc/fail2ban/jail.local)
"""
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
"""

# 限制连接速率
sudo iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
sudo iptables -A INPUT -p tcp --dport 80 -m limit --limit 50/minute --limit-burst 200 -j ACCEPT

六、高级优化技巧

1. 多队列网卡优化

# 查看网卡队列
ethtool -l eth0

# 设置多队列 (需要网卡支持)
sudo ethtool -L eth0 combined 8

# 启用RSS (接收端缩放)
sudo ethtool -K eth0 rx on tx on sg on tso on gro on lro on

# 绑定中断到不同CPU
grep eth0 /proc/interrupts | awk '{print $1}' | cut -d: -f1 | while read irq; do
    echo $(cat /proc/irq/$irq/smp_affinity) > /proc/irq/$irq/smp_affinity
done

2. 内核参数深度优化

# 高级TCP优化 (/etc/sysctl.conf)
"""
# 增加本地端口范围
net.ipv4.ip_local_port_range = 1024 65535

# 增加TCP最大半连接数
net.ipv4.tcp_max_syn_backlog = 8192

# 启用TCP时间戳
net.ipv4.tcp_timestamps = 1

# 启用TCP窗口缩放
net.ipv4.tcp_window_scaling = 1

# 启用TCP SACK
net.ipv4.tcp_sack = 1

# 启用ECN (显式拥塞通知)
net.ipv4.tcp_ecn = 1

# 减少TCP keepalive时间
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_keepalive_probes = 5
net.ipv4.tcp_keepalive_intvl = 15
"""

通过以上配置和优化,您可以显著提升Linux服务器的网络性能和安全性。请根据您的具体硬件配置和应用需求调整这些参数。