06 - 网络配置与管理
一、网络基础概念
1.1 关键术语
| 术语 | 说明 |
|---|---|
| IP 地址 | 网络中设备的唯一标识 |
| 子网掩码 | 划分网络和主机部分 |
| 网关 | 连接不同网络的出口 |
| DNS | 域名解析服务 |
| MAC 地址 | 网卡的物理地址 |
| 端口 | 应用层的通信端点(0~65535) |
1.2 网卡命名规则
现代 Linux 使用可预测的网卡命名:
| 前缀 | 说明 | 示例 |
|---|---|---|
| eno | 板载网卡 | eno1 |
| ens | PCI-E 热插拔网卡 | ens33 |
| enp | PCI 总线位置命名 | enp0s3 |
| eth | 传统命名 | eth0 |
二、查看网络状态
2.1 ip 命令(推荐)
bash
# 查看 IP 地址
ip addr show # 简写 ip a
ip addr show eth0 # 查看指定网卡
# 查看路由表
ip route show # 简写 ip r
ip route get 8.8.8.8 # 查看到某 IP 的路由
# 查看网卡链路状态
ip link show
ip link show eth0
# 查看网络统计信息
ip -s link show eth0
2.2 其他网络查看命令
bash
# 查看所有网络接口
ifconfig -a # 传统命令(部分系统需安装 net-tools)
ip a # 现代命令
# 查看端口占用
ss -tlnp # 查看 TCP 监听端口(推荐)
ss -tlnp | grep :80 # 查看谁占用了 80 端口
ss -ulnp # 查看 UDP 端口
ss -tnp # 查看已建立的 TCP 连接
netstat -tlnp # 传统命令(需安装 net-tools)
# 查看路由
route -n # 传统命令
ip route # 现代命令
# 查看 DNS 配置
cat /etc/resolv.conf
# 查看主机名
hostname
hostnamectl
三、配置网络
3.1 nmcli(CentOS/RHEL 推荐)
NetworkManager 是 CentOS 7+ 的默认网络管理工具。
bash
# 查看网络连接
nmcli connection show # 简写 nmcli c
nmcli device status # 简写 nmcli d
# 查看连接详情
nmcli connection show ens33
# 修改 IP 地址
nmcli connection modify ens33 ipv4.addresses 192.168.1.100/24
nmcli connection modify ens33 ipv4.gateway 192.168.1.1
nmcli connection modify ens33 ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify ens33 ipv4.method manual
# 启用配置
nmcli connection up ens33
# 重启网络
nmcli connection reload
systemctl restart NetworkManager
3.2 配置文件方式(CentOS)
编辑 /etc/sysconfig/network-scripts/ifcfg-ens33:
ini
TYPE=Ethernet
BOOTPROTO=static # 静态 IP(DHCP 则为 dhcp)
NAME=ens33
DEVICE=ens33
ONBOOT=yes # 开机启用
IPADDR=192.168.1.100
PREFIX=24 # 子网掩码(或 NETMASK=255.255.255.0)
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
bash
# 重启网络生效
systemctl restart network # CentOS 6/7
nmcli connection reload && nmcli connection up ens33 # CentOS 8+
3.3 Netplan(Ubuntu 18.04+)
Ubuntu 使用 Netplan 管理网络,配置文件在 /etc/netplan/ 目录下。
编辑 /etc/netplan/01-netcfg.yaml:
yaml
network:
version: 2
ethernets:
ens33:
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
bash
# 应用配置
netplan apply
# 测试配置(超时自动回滚,防止断连)
netplan try
3.4 配置主机名
bash
# 设置主机名
hostnamectl set-hostname web-server-01
# 查看主机名
hostnamectl
# 配置 /etc/hosts
echo "192.168.1.100 web-server-01" >> /etc/hosts
echo "192.168.1.101 db-server-01" >> /etc/hosts
四、网络诊断工具
4.1 ping - 测试连通性
bash
ping 192.168.1.1 # 一直 ping
ping -c 4 8.8.8.8 # ping 4 次后停止
ping -i 0.5 192.168.1.1 # 每 0.5 秒 ping 一次
4.2 traceroute / tracepath - 追踪路由
bash
traceroute 8.8.8.8
tracepath 8.8.8.8 # 不需要 root 权限
mtr 8.8.8.8 # 交互式路由追踪(推荐)
4.3 dig / nslookup - DNS 查询
bash
# DNS 查询
dig example.com
dig @8.8.8.8 example.com # 指定 DNS 服务器
dig example.com MX # 查询 MX 记录
dig example.com TXT # 查询 TXT 记录
dig +short example.com # 只输出 IP
nslookup example.com
nslookup example.com 8.8.8.8
4.4 curl - HTTP 请求
bash
# 基本 GET 请求
curl http://example.com
# 显示响应头
curl -I http://example.com
# 带详细信息
curl -v http://example.com
# POST 请求
curl -X POST http://api.example.com/users \
-H "Content-Type: application/json" \
-d '{"name":"alice","age":25}'
# 下载文件
curl -O http://example.com/file.tar.gz
curl -o custom_name.tar.gz http://example.com/file.tar.gz
# 跟随重定向
curl -L http://example.com
# 测试接口响应时间
curl -o /dev/null -s -w "DNS: %{time_namelookup}s\nConnect: %{time_connect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" http://example.com
4.5 telnet / nc - 端口测试
bash
# 测试端口是否开放
telnet 192.168.1.100 80
# nc 更灵活
nc -zv 192.168.1.100 80 # 测试 TCP 端口
nc -zvu 192.168.1.100 53 # 测试 UDP 端口
nc -zv 192.168.1.100 80 443 8080 # 测试多个端口
# 扫描端口范围
nc -zv 192.168.1.100 1-1000 2>&1 | grep succeeded
4.6 tcpdump - 抓包分析
bash
# 抓取指定网卡的流量
tcpdump -i eth0
# 抓取指定端口
tcpdump -i eth0 port 80
# 抓取指定 IP 的流量
tcpdump -i eth0 host 192.168.1.100
tcpdump -i eth0 src 192.168.1.100
tcpdump -i eth0 dst 192.168.1.100
# 抓取 HTTP 请求
tcpdump -i eth0 -A port 80
# 保存到文件(用 Wireshark 分析)
tcpdump -i eth0 -w capture.pcap port 80
# 组合条件
tcpdump -i eth0 'tcp port 80 and host 192.168.1.100' -nn -c 100
五、网络相关配置文件
| 文件 | 作用 |
|---|---|
/etc/hosts |
本地域名解析 |
/etc/resolv.conf |
DNS 服务器配置 |
/etc/nsswitch.conf |
名称解析顺序 |
/etc/services |
端口与服务名映射 |
/etc/sysconfig/network-scripts/ |
CentOS 网卡配置 |
/etc/netplan/ |
Ubuntu 网络配置 |
/etc/sysctl.conf |
内核网络参数 |
配置 DNS
bash
# 临时生效
echo "nameserver 8.8.8.8" > /etc/resolv.conf
echo "nameserver 114.114.114.114" >> /etc/resolv.conf
# CentOS 永久生效(通过 nmcli)
nmcli connection modify ens33 ipv4.dns "8.8.8.8 114.114.114.114"
nmcli connection up ens33
# Ubuntu 永久生效(通过 netplan)
# 在 netplan 配置的 nameservers 中设置
六、内核网络参数调优
编辑 /etc/sysctl.conf 或 /etc/sysctl.d/ 下的文件:
bash
# 常见网络参数
net.ipv4.ip_forward = 1 # 开启 IP 转发(路由器/Docker 需要)
net.ipv4.tcp_syncookies = 1 # 防止 SYN Flood 攻击
net.ipv4.tcp_max_syn_backlog = 65535 # SYN 队列长度
net.ipv4.tcp_tw_reuse = 1 # 复用 TIME_WAIT 连接
net.ipv4.tcp_tw_recycle = 0 # 不建议开启(NAT 环境有问题)
net.ipv4.tcp_fin_timeout = 30 # FIN-WAIT-2 超时时间
net.core.somaxconn = 65535 # 监听队列长度
net.core.netdev_max_backlog = 65535 # 网卡收包队列长度
net.ipv4.tcp_keepalive_time = 600 # keepalive 探测间隔
net.ipv4.tcp_max_tw_buckets = 32768 # TIME_WAIT 最大数量
# 应用配置
sysctl -p
七、实战场景
场景一:网站无法访问排查
bash
# 1. 检查本机网络是否通
ping 192.168.1.1 # 网关
ping 8.8.8.8 # 外网 IP
# 2. 检查 DNS 是否正常
dig example.com
nslookup example.com
# 3. 检查端口是否开放
ss -tlnp | grep :80
curl -I http://localhost # 本地测试
# 4. 检查防火墙
firewall-cmd --list-ports # CentOS
iptables -L -n # 通用
# 5. 检查路由
ip route get <target_ip>
traceroute <target_ip>
场景二:服务器端口不通排查
bash
# 1. 确认服务是否监听
ss -tlnp | grep :3306
# 2. 本地测试
nc -zv 127.0.0.1 3306
# 3. 检查防火墙规则
firewall-cmd --list-all
iptables -L -n --line-numbers
# 4. 检查是否只监听 127.0.0.1
# 如果是 127.0.0.1:3306 则外部无法连接
# 需要修改为 0.0.0.0:3306
场景三:配置双网卡双网关
bash
# 主网卡走默认网关
nmcli connection modify eth0 ipv4.addresses 192.168.1.100/24
nmcli connection modify eth0 ipv4.gateway 192.168.1.1
# 第二块网卡配置 IP,不走默认网关
nmcli connection modify eth1 ipv4.addresses 10.0.0.100/24
nmcli connection modify eth1 ipv4.gateway "" # 不设置网关
# 添加静态路由:10.x 网段走第二块网卡的网关
ip route add 10.0.0.0/8 via 10.0.0.1 dev eth1
# 永久生效:创建路由配置文件(CentOS)
cat > /etc/sysconfig/network-scripts/route-eth1 << 'EOF'
10.0.0.0/8 via 10.0.0.1 dev eth1
EOF
八、小结
本篇涵盖了网络配置(nmcli、配置文件、Netplan)和网络诊断工具(ping、traceroute、dig、curl、tcpdump 等)。网络排查是运维最频繁的工作之一,建议建立清晰的排查思路:从本机到网关到外网,从物理层到网络层到应用层。
上一篇 :05 - 软件包管理
下一篇 :07 - 磁盘管理与 LVM