作为IT工程师,我将为您详细介绍Linux环境下网络服务的配置和优化方法。
# 查看网络接口信息
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
"""
# 查看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配置
# 安装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
# 安装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
# 配置文件位置
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
# 查看当前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
# 查看当前限制
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
# 实时网络监控
iftop -n # 查看带宽使用情况
nload # 简单的带宽监控
vnstat # 网络流量统计
# 连接监控
ss -tulnp # 查看活动连接
netstat -tulnp # 传统命令
lsof -i # 查看打开的网络连接
# 性能分析
sar -n DEV 1 # 网络接口统计
dstat -n # 网络流量统计
# 测试网络连通性
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的命令行版本
# 使用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
# 使用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
# 查看网卡队列
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
# 高级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服务器的网络性能和安全性。请根据您的具体硬件配置和应用需求调整这些参数。