【Linux运维极简教程】06-网络配置与管理

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

相关推荐
ACP广源盛139246256731 小时前
IX8024@ACP# 搭配此芯 AI 服务器 + 爱芯元智产品完整方案
大数据·运维·服务器·人工智能·分布式·嵌入式硬件
探索云原生3 小时前
终于搞懂 Kueue:5 个核心对象一次讲透
linux·docker·ai·云原生·kubernetes
huainingning4 小时前
交换机通过ftp下载文件或者传输文件到ftp服务器
运维·服务器·网络
An_s4 小时前
机器学习python之识别图中物品信息
java·linux·开发语言
edwarddamon4 小时前
CentOS 7 国内安装 Docker CE(阿里云源)
运维
Championship.23.245 小时前
Linux 3.0 LVDS驱动开发详解
linux·运维·驱动开发·lvds
小池先生5 小时前
Windows服务器如何备份
运维·服务器
风向决定发型丶6 小时前
Shell中的特殊变量
linux·运维·bash
FII工业富联科技服务6 小时前
灯塔工厂用例详解:AR 远程巡检与智能运维闭环落地实践
运维·ar