Linux-网络管理

网络管理

      • [1. 网络基础](#1. 网络基础)
        • [1.1 TCP/IP 协议栈(四层模型)](#1.1 TCP/IP 协议栈(四层模型))
        • [1.2 网络设备配置与基础概念](#1.2 网络设备配置与基础概念)
        • [1.3 网络接口命名规则](#1.3 网络接口命名规则)
        • [1.4 网络配置文件位置](#1.4 网络配置文件位置)
      • [2. 常用网络配置命令](#2. 常用网络配置命令)
        • [2.1 查看网络接口信息](#2.1 查看网络接口信息)
        • [2.2 配置 IP 地址](#2.2 配置 IP 地址)
        • [2.3 启用/禁用网卡](#2.3 启用/禁用网卡)
        • [2.4 修改网卡 MAC 地址](#2.4 修改网卡 MAC 地址)
        • [2.5 配置网卡的 MTU(最大传输单元)](#2.5 配置网卡的 MTU(最大传输单元))
      • [3. 配置网络服务](#3. 配置网络服务)
        • [3.1 静态 IP 配置](#3.1 静态 IP 配置)
          • [Debian 系列](#Debian 系列)
          • [RHEL 系列](#RHEL 系列)
        • [3.2 动态 IP 配置(DHCP)](#3.2 动态 IP 配置(DHCP))
          • [Debian 系列](#Debian 系列)
          • [RHEL 系列](#RHEL 系列)
      • 综合案例
        • 一、目标与思路
        • 二、操作步骤总览
        • 三、详细步骤与命令
          • [1. 配置网络接口(让服务器"有网可上")](#1. 配置网络接口(让服务器“有网可上”))
            • [Debian / Ubuntu](#Debian / Ubuntu)
            • [RHEL / CentOS / Rocky](#RHEL / CentOS / Rocky)
          • [2. 配置防火墙(只开 80/443)](#2. 配置防火墙(只开 80/443))
            • [方案 A:iptables(一次性,重启后需 save)](#方案 A:iptables(一次性,重启后需 save))
            • [方案 B:firewalld(持久化)](#方案 B:firewalld(持久化))
          • [3. 加固 SSH(换端口 + 禁用 root 密码)](#3. 加固 SSH(换端口 + 禁用 root 密码))
          • [4. 连通性测试](#4. 连通性测试)
            • [4.1 测试上网](#4.1 测试上网)
            • [4.2 查看路由路径](#4.2 查看路由路径)
          • [5. 配置验证(确保真正生效)](#5. 配置验证(确保真正生效))
        • 四、一键脚本
        • 五、常见故障排查表
      • 常见面试问题及答案
        • [问题 1:如何查看 Linux 系统中所有网络接口的配置信息?](#问题 1:如何查看 Linux 系统中所有网络接口的配置信息?)
        • [问题 2:如何为 Linux 系统中的网络接口配置静态 IP 地址?](#问题 2:如何为 Linux 系统中的网络接口配置静态 IP 地址?)
        • [问题 3:如何测试 Linux 系统中网络的连通性?](#问题 3:如何测试 Linux 系统中网络的连通性?)
        • [问题 4:如何查看 Linux 系统中网络接口的硬件信息?](#问题 4:如何查看 Linux 系统中网络接口的硬件信息?)
        • [问题 5:如何在 Linux 系统中配置防火墙规则?](#问题 5:如何在 Linux 系统中配置防火墙规则?)
        • [问题 6:如何在 Linux 系统中配置 SSH 服务?](#问题 6:如何在 Linux 系统中配置 SSH 服务?)
      • 网络诊断与监控
        • [4.1 查看网络连接状态](#4.1 查看网络连接状态)
          • [① netstat(传统工具,net-tools 包)](#① netstat(传统工具,net-tools 包))
          • [② ss(iproute2 套件,比 netstat 快且功能更多)](#② ss(iproute2 套件,比 netstat 快且功能更多))
        • [4.2 测试网络连通性](#4.2 测试网络连通性)
          • [ping(IPv4/IPv6 连通性测试)](#ping(IPv4/IPv6 连通性测试))
        • [4.3 跟踪路由](#4.3 跟踪路由)
        • [4.4 DNS 查询](#4.4 DNS 查询)
        • [4.5 捕获和分析网络流量](#4.5 捕获和分析网络流量)
        • [5. VLAN 子接口](#5. VLAN 子接口)
        • [6. Bridge(网桥)](#6. Bridge(网桥))
        • [7. Bond(链路聚合)](#7. Bond(链路聚合))
        • [8. Promiscuous Mode(混杂模式)](#8. Promiscuous Mode(混杂模式))
        • [9. 防火墙(iptables)](#9. 防火墙(iptables))
        • [10. SSH 服务加固](#10. SSH 服务加固)
        • [11. DNS 解析](#11. DNS 解析)
        • [12. 网卡硬件信息与性能调优](#12. 网卡硬件信息与性能调优)
      • 拓展
        • [1. 局域网构建+VLAN 划分 + 端口 MAC-IP 绑定 + 静态 DHCP](#1. 局域网构建+VLAN 划分 + 端口 MAC-IP 绑定 + 静态 DHCP)

1. 网络基础

1.1 TCP/IP 协议栈(四层模型)

TCP/IP 是互联网通信的基础,分为四层(从下往上):

  1. 链路层(Link Layer)

    • 负责物理设备间的通信(如以太网、Wi-Fi)。
    • 关键概念:MAC 地址(设备物理地址)、ARP 协议(通过 IP 找 MAC)。
  2. 网络层(Internet Layer)

    • 负责跨网络的数据传输,核心协议是 IP(如 IPv4/IPv6)。
    • 关键概念:IP 地址(逻辑地址)、子网掩码(划分网络范围)、路由(决定数据包路径)。
  3. 传输层(Transport Layer)

    • 提供端到端的通信,主要协议是 TCP (可靠连接)和 UDP(无连接)。
    • 关键概念:端口号(区分不同服务,如 HTTP=80,SSH=22)。
  4. 应用层(Application Layer)

    • 用户直接接触的协议,如 HTTP(网页)、FTP(文件传输)、DNS(域名解析)。

1.2 网络设备配置与基础概念

1. 路由器(Router)

  • 作用 :连接不同网络,根据 路由表 决定数据包的下一跳。
  • 关键配置
    • 静态路由 :手动指定路径(如 ip route 192.168.2.0 255.255.255.0 10.0.0.1)。
    • 动态路由:通过协议(如 OSPF、RIP)自动学习路径。

2. 交换机(Switch)

  • 作用 :在局域网(LAN)内根据 MAC 地址 转发数据,避免广播风暴。
  • 关键配置
    • VLAN(虚拟局域网) :将一个物理交换机逻辑划分为多个广播域。
      • 示例:将端口 1-10 划入 VLAN 10(财务部),端口 11-20 划入 VLAN 20(技术部)。

      • 命令(Cisco 交换机)

        bash 复制代码
        vlan 10
        name Finance
        interface range fa0/1-10
        switchport mode access
        switchport access vlan 10

3. 子网划分(Subnetting)

  • 作用:将一个大的 IP 网络划分为多个小网络,减少广播流量,提高安全性。
  • 关键概念
    • 子网掩码 :如 255.255.255.0(/24)表示前 24 位是网络号,后 8 位是主机号。
    • 示例
      • 公司需要 50 台主机,可分配 192.168.1.0/26(子网掩码 255.255.255.192),可用主机范围:
        192.168.1.1 ~ 192.168.1.62

1.3 网络接口命名规则

在 Linux 系统中,网络接口的命名规则如下:

  • 传统命名规则eth0eth1 等,通常用于较旧的系统。
  • 现代命名规则enp0s3enp2s0 等,这种命名方式更描述性,便于识别接口的物理位置。
1.4 网络配置文件位置
  • Debian 系列/etc/network/interfaces
  • RHEL 系列/etc/sysconfig/network-scripts/ifcfg-*

2. 常用网络配置命令

以下是 2. 常用网络配置命令 的参数列表及输出样例:

2.1 查看网络接口信息

ifconfig

  • 作用:显示网络接口的配置信息。

  • 参数

    • -a:显示所有网络接口的信息,包括未激活的接口。
    • -s:显示简要的网络接口信息。
  • 示例

    bash 复制代码
    ifconfig

    输出样例

    复制代码
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
            ether 00:11:22:33:44:55  txqueuelen 1000  (Ethernet)
            RX packets 123456  bytes 123456789 (117.7 MiB)
            TX packets 654321  bytes 987654321 (941.9 MiB)
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 1234  bytes 123456 (120.6 KiB)
            TX packets 1234  bytes 123456 (120.6 KiB)
  1. 接口名称和标志

    • eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
      • eth0:网络接口名称,表示以太网接口。
      • flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
        • UP:接口已启用。
        • BROADCAST:支持广播功能。
        • RUNNING:接口正在运行。
        • MULTICAST:支持多播功能。
      • mtu 1500:最大传输单元(MTU)为 1500 字节。
  2. IPv4 配置

    • inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
      • inet:表示 IPv4 地址。
      • 192.168.1.100:接口的 IP 地址。
      • netmask 255.255.255.0:子网掩码。
      • broadcast 192.168.1.255:广播地址。
  3. MAC 地址和队列长度

    • ether 00:11:22:33:44:55 txqueuelen 1000 (Ethernet)
      • ether:表示以太网接口的 MAC 地址。
      • 00:11:22:33:44:55:接口的 MAC 地址。
      • txqueuelen 1000:发送队列长度。
      • (Ethernet):接口类型为以太网。
  4. 接收和发送统计

    • RX packets 123456 bytes 123456789 (117.7 MiB)
      • RX packets:接收的数据包数量。
      • bytes:接收的字节数。
      • (117.7 MiB):接收的字节数换算成兆字节。
    • TX packets 654321 bytes 987654321 (941.9 MiB)
      • TX packets:发送的数据包数量。
      • bytes:发送的字节数。
      • (941.9 MiB):发送的字节数换算成兆字节。
  5. 环回接口

    • lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
      • lo:环回接口(loopback)。
      • flags=73<UP,LOOPBACK,RUNNING>
        • UP:接口已启用。
        • LOOPBACK:环回接口。
        • RUNNING:接口正在运行。
      • mtu 65536:环回接口的 MTU 为 65536 字节。
    • inet 127.0.0.1 netmask 255.0.0.0
      • inet:环回接口的 IPv4 地址。
      • 127.0.0.1:环回地址。
      • netmask 255.0.0.0 :子网掩码。
        ip
  • 作用:显示和操作路由、网络设备、接口等网络信息。

  • 参数

    • addra:显示或操作 IP 地址。
    • linkl:显示或操作网络设备。
    • router:显示或操作路由表。
  • 示例

    bash 复制代码
    ip addr show

    输出样例

    复制代码
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
        link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
        inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
           valid_lft 86399sec preferred_lft 86399sec
  1. 接口索引和名称

    • 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
      • 1::接口索引号。
      • lo:接口名称,表示环回接口。
      • <LOOPBACK,UP,LOWER_UP>
        • LOOPBACK:环回接口。
        • UP:接口已启用。
        • LOWER_UP:接口处于低层活动状态。
      • mtu 65536:环回接口的 MTU 为 65536 字节。
      • qdisc noqueue :队列调度器类型为 noqueue
      • state UNKNOWN:接口状态未知。
      • group default:接口属于默认组。
      • qlen 1000:队列长度。
  2. 环回接口的链路信息

    • link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      • link/loopback:环回接口的链路类型。
      • 00:00:00:00:00:00:环回接口的 MAC 地址。
      • brd 00:00:00:00:00:00:广播地址。
  3. 环回接口的 IPv4 配置

    • inet 127.0.0.1/8 scope host lo
      • inet:表示 IPv4 地址。
      • 127.0.0.1/8:环回接口的 IP 地址和子网掩码(CIDR 表示法)。
      • scope host:地址作用范围为本地主机。
      • lo:所属接口名称。
    • valid_lft forever preferred_lft forever
      • valid_lft:地址的有效生命周期。
      • preferred_lft:地址的优先使用生命周期。
  4. 以太网接口

    • 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
      • 2::接口索引号。
      • eth0:接口名称,表示以太网接口。
      • <BROADCAST,MULTICAST,UP,LOWER_UP>
        • BROADCAST:支持广播功能。
        • MULTICAST:支持多播功能。
        • UP:接口已启用。
        • LOWER_UP:接口处于低层活动状态。
      • mtu 1500:接口的 MTU 为 1500 字节。
      • qdisc pfifo_fast :队列调度器类型为 pfifo_fast
      • state UP:接口状态为启用。
      • group default:接口属于默认组。
      • qlen 1000:队列长度。
  5. 以太网接口的链路信息

    • link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
      • link/ether:以太网接口的链路类型。
      • 00:11:22:33:44:55:接口的 MAC 地址。
      • brd ff:ff:ff:ff:ff:ff:广播地址。
  6. 以太网接口的 IPv4 配置

    • inet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0
      • inet:表示 IPv4 地址。
      • 192.168.1.100/24:接口的 IP 地址和子网掩码(CIDR 表示法)。
      • brd 192.168.1.255:广播地址。
      • scope global:地址作用范围为全局。
      • dynamic:地址是动态分配的。
      • eth0:所属接口名称。
    • valid_lft 86399sec preferred_lft 86399sec
      • valid_lft:地址的有效生命周期为 86399 秒。
      • preferred_lft:地址的优先使用生命周期为 86399 秒。
  • ifconfig 输出更简洁,适合快速查看网络接口的基本信息。
  • ip addr show 输出更详细,包含更多技术细节(如队列调度器类型、地址生命周期等),适合用于更复杂的网络配置和调试。
2.2 配置 IP 地址

ifconfig

  • 作用:配置网络接口的 IP 地址。

  • 参数

    • up:启用网络接口。
    • down:禁用网络接口。
    • hw ether:设置网络接口的 MAC 地址。
    • mtu:设置网络接口的 MTU(最大传输单元)。
  • 示例

    bash 复制代码
    sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0

ip

  • 作用:配置网络接口的 IP 地址。

  • 参数

    • add:添加 IP 地址。
    • del:删除 IP 地址。
  • 示例

    bash 复制代码
    sudo ip addr add 192.168.1.100/24 dev eth0
2.3 启用/禁用网卡

ifconfig

  • 作用:启用或禁用网络接口。

  • 参数

    • up:启用网络接口。
    • down:禁用网络接口。
  • 示例

    bash 复制代码
    sudo ifconfig eth0 up

ip

  • 作用:启用或禁用网络接口。

  • 参数

    • up:启用网络接口。
    • down:禁用网络接口。
  • 示例

    bash 复制代码
    sudo ip link set eth0 up
2.4 修改网卡 MAC 地址

ifconfig

  • 作用:修改网络接口的 MAC 地址。

  • 参数

    • hw ether:设置网络接口的 MAC 地址。
  • 示例

    bash 复制代码
    sudo ifconfig eth0 hw ether 00:11:22:33:44:55

ip

  • 作用:修改网络接口的 MAC 地址。

  • 参数

    • link set:设置网络接口的属性。
  • 示例

    bash 复制代码
    sudo ip link set eth0 address 00:11:22:33:44:55
2.5 配置网卡的 MTU(最大传输单元)

ifconfig

  • 作用:配置网络接口的 MTU。

  • 参数

    • mtu:设置网络接口的 MTU。
  • 示例

    bash 复制代码
    sudo ifconfig eth0 mtu 1500

ip

  • 作用:配置网络接口的 MTU。

  • 参数

    • mtu:设置网络接口的 MTU。
  • 示例

    bash 复制代码
    sudo ip link set eth0 mtu 1500

以下是 ifconfigip 命令的参数对比表格:

功能/参数 ifconfig 命令 ip 命令
查看网络接口信息 ifconfig ifconfig -a ip addr show ip link show
启用网络接口 ifconfig [interface] up ip link set [interface] up
禁用网络接口 ifconfig [interface] down ip link set [interface] down
配置 IP 地址 ifconfig [interface] [IP] netmask [MASK] ip addr add [IP]/[CIDR] dev [interface]
删除 IP 地址 ifconfig [interface] del [IP] ip addr del [IP]/[CIDR] dev [interface]
修改 MAC 地址 ifconfig [interface] hw ether [MAC] ip link set [interface] address [MAC]
配置 MTU ifconfig [interface] mtu [MTU] ip link set [interface] mtu [MTU]
支持 IPv6 需单独配置 IPv6 地址 支持 IPv6 配置
高级功能支持 不支持 VLAN、隧道、策略路由等 支持 VLAN、隧道、策略路由等
  • ifconfig 是较传统的网络配置工具,功能相对简单,主要用于 IPv4 配置。
  • ip 命令功能更强大,支持 IPv4 和 IPv6,适用于现代复杂网络环境。

3. 配置网络服务

3.1 静态 IP 配置
Debian 系列
  • 文件位置/etc/network/interfaces

  • 示例

    plaintext 复制代码
    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
RHEL 系列
  • 文件位置/etc/sysconfig/network-scripts/ifcfg-eth0

  • 示例

    plaintext 复制代码
    BOOTPROTO=static
    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
3.2 动态 IP 配置(DHCP)
Debian 系列
  • 文件位置/etc/network/interfaces

  • 示例

    plaintext 复制代码
    auto eth0
    iface eth0 inet dhcp
RHEL 系列
  • 文件位置/etc/sysconfig/network-scripts/ifcfg-eth0

  • 示例

    plaintext 复制代码
    BOOTPROTO=dhcp

综合案例

假设您需要为一个 Linux 服务器配置网络,使其能够访问外部网络,并且需要配置防火墙规则以允许 HTTP 和 HTTPS 流量,同时禁用 root 用户的 SSH 登录。

适用系统

• Debian 系列:Ubuntu 18/20/22、Debian 10/11/12

• RHEL 系列:CentOS 7/8、Rocky Linux 8/9、AlmaLinux 8/9


一、目标与思路

目标 技术手段
服务器能上网 静态 IP + 网关 + DNS
对外提供 Web 防火墙放行 80/TCP、443/TCP
远程管理安全 改 SSH 端口、禁止 root 密码登录
配置可验证 ping、traceroute、ss、tcpdump

二、操作步骤总览

  1. 配置网络接口
  2. 配置防火墙
  3. 配置 SSH
  4. 连通性测试
  5. 配置验证

三、详细步骤与命令

1. 配置网络接口(让服务器"有网可上")
Debian / Ubuntu
bash 复制代码
sudo vim /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

立即生效:

bash 复制代码
sudo ifdown eth0 && sudo ifup eth0
RHEL / CentOS / Rocky
bash 复制代码
sudo vim /etc/sysconfig/network-scripts/ifcfg-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

重启网络:

bash 复制代码
sudo nmcli connection reload && sudo nmcli connection up eth0

2. 配置防火墙(只开 80/443)
方案 A:iptables(一次性,重启后需 save)
bash 复制代码
sudo iptables -A INPUT -p tcp --dport 80  -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4
方案 B:firewalld(持久化)
bash 复制代码
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

3. 加固 SSH(换端口 + 禁用 root 密码)

编辑配置文件:

bash 复制代码
sudo vim /etc/ssh/sshd_config

修改/新增:

复制代码
Port 12345
PermitRootLogin no
PasswordAuthentication no

重启服务:

bash 复制代码
sudo systemctl restart sshd

⚠️ 在退出当前会话前,请先另开窗口验证能否密钥登录!


4. 连通性测试
4.1 测试上网
bash 复制代码
ping -c 4 8.8.8.8

期望输出:

复制代码
4 packets transmitted, 4 received, 0% packet loss
4.2 查看路由路径
bash 复制代码
traceroute 8.8.8.8

确认数据包经过的网关及延迟正常。


5. 配置验证(确保真正生效)
检查项 命令 期望结果
本机监听端口 sudo ss -tulnp 80、443、12345 均出现
防火墙规则 sudo iptables -L -nsudo firewall-cmd --list-all 80/tcp、443/tcp 为 ACCEPT
实时抓包 sudo tcpdump -i eth0 host 8.8.8.8 -c 5 可见正常 ICMP 或 HTTP 流量

四、一键脚本

保存为 setup.sh,root 执行即可(需自行改接口名):

bash 复制代码
#!/bin/bash
set -e
# 1. 静态 IP
cat >/etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
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
EOF
nmcli connection reload && nmcli connection up eth0

# 2. 防火墙
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

# 3. SSH
sed -ri 's/^#?Port .*/Port 12345/' /etc/ssh/sshd_config
sed -ri 's/^#?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -ri 's/^#?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd

echo "Done. 请使用密钥登录测试!"

五、常见故障排查表

现象 排查思路
ping 不通外网 检查网关/掩码/DNS、路由表 ip r
80 端口拒绝 ss -lntp 看 nginx/apache 是否启动;防火墙是否放行
SSH 连不上 确认端口 telnet IP 12345;SELinux、云安全组是否放行新端口
DNS 解析慢 换 DNS echo nameserver 1.1.1.1 > /etc/resolv.conf

常见面试问题及答案

问题 1:如何查看 Linux 系统中所有网络接口的配置信息?
  • 答案

    bash 复制代码
    ifconfig

    bash 复制代码
    ip addr show
问题 2:如何为 Linux 系统中的网络接口配置静态 IP 地址?
  • 答案
    对于 Debian 系列系统,编辑 /etc/network/interfaces 文件:

    plaintext 复制代码
    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

    对于 RHEL 系列系统,编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件:

    plaintext 复制代码
    BOOTPROTO=static
    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
问题 3:如何测试 Linux 系统中网络的连通性?
  • 答案
    使用 ping 命令:

    bash 复制代码
    ping -c 4 192.168.1.1
问题 4:如何查看 Linux 系统中网络接口的硬件信息?
  • 答案
    使用 lshw 命令:

    bash 复制代码
    sudo lshw -C network

    或使用 ethtool 命令:

    bash 复制代码
    sudo ethtool -i eth0
问题 5:如何在 Linux 系统中配置防火墙规则?
  • 答案
    使用 iptables 命令:

    bash 复制代码
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

    或使用 firewalld 命令:

    bash 复制代码
    sudo firewall-cmd --permanent --add-port=80/tcp
    sudo firewall-cmd --reload
问题 6:如何在 Linux 系统中配置 SSH 服务?
  • 答案
    编辑 /etc/ssh/sshd_config 文件:

    plaintext 复制代码
    Port 12345
    PermitRootLogin no
    PasswordAuthentication no

    然后重启 SSH 服务:

    bash 复制代码
    sudo systemctl restart sshd

网络诊断与监控

4.1 查看网络连接状态
① netstat(传统工具,net-tools 包)
常用组合 含义
-a 列出所有 socket(监听 + 已连接)
-n 不做反向解析,IP 和端口都以数字显示
-t 仅显示 TCP
-u 仅显示 UDP
-p 把拥有 socket 的进程 PID/名字也打印出来
-l 只看处于 LISTEN 状态的 socket

示例 1:查看当前所有 TCP 监听端口(带进程名)

bash 复制代码
sudo netstat -lntp

真实输出

复制代码
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State  PID/Program name
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN 1058/sshd
tcp        0      0 127.0.0.1:5432          0.0.0.0:*               LISTEN 1821/postgres
tcp6       0      0 :::80                   :::*                    LISTEN 1247/nginx

逐行解读

  • Proto:协议,tcptcp6
  • Recv-Q:LISTEN 状态下表示已完成三次握手、等待应用 accept 的半连接队列长度。
  • Send-Q:LISTEN 状态下表示半连接队列的最大容量。
  • Local Address:0.0.0.0:22 表示本机所有 IPv4 地址都监听 22 端口;127.0.0.1:5432 只监听回环。
  • State:LISTEN 表示正在等待连接。
  • PID/Program name:哪个进程占用了该 socket。

② ss(iproute2 套件,比 netstat 快且功能更多)
常用组合 含义
-a 所有 socket
-n 不解析名称
-t TCP
-u UDP
-l 仅监听
-p 显示进程
-s 打印统计摘要

示例 2:查看所有 UDP 监听端口(带进程号)

bash 复制代码
sudo ss -unlp

真实输出

复制代码
State  Recv-Q Send-Q Local Address:Port  Peer Address:Port Process
UNCONN 0      0          0.0.0.0:68        0.0.0.0:*      users:(("dhclient",pid=987,fd=6))
UNCONN 0      0          0.0.0.0:111       0.0.0.0:*      users:(("rpcbind",pid=680,fd=5))

逐行解读

  • State UNCONN:UDP 无连接,所以不是 LISTEN,而是"未连接"。
  • Local Address:Port 0.0.0.0:68:本机 68 端口(DHCP 客户端)。
  • users:进程 PID + 名字 + 文件描述符。

4.2 测试网络连通性
ping(IPv4/IPv6 连通性测试)
常用参数 含义
-c N 发送 N 个 ICMP Echo 后退出
-i S 每 S 秒发送一次(默认 1s)
-s SIZE ICMP 数据部分大小(默认 56 字节)
-W T 等待响应的超时时间(秒)
-4 / -6 强制 IPv4/IPv6

示例 3:向 8.8.8.8 发送 4 个包

bash 复制代码
ping -c 4 8.8.8.8

真实输出

复制代码
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=28.4 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=27.9 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=117 time=28.1 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=117 time=27.8 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 27.809/28.043/28.411/0.233 ms

逐行解读

  • 56(84) bytes:ICMP 数据 56 字节 + 8 字节 ICMP 头 + 20 字节 IP 头 = 84。
  • icmp_seq:第几个 Echo 请求。
  • ttl=117:剩余跳数(从 128 开始,128-117=11 跳)。
  • time=28.4 ms:往返时延。
  • 最后统计:发送 4 个,收到 4 个,丢包 0%,平均延迟 28.043 ms。

场景 推荐命令
查看本机所有监听端口 sudo ss -tulnp(或 netstat -tulnp
查某端口被谁占用 sudo ss -lntp sport = :80
测试到外网通不通 ping -c 4 8.8.8.8
查看路由 ip r(取代 netstat -r

4.3 跟踪路由
traceroute
常用参数 含义
-n 不做 DNS 反查,直接显示 IP,速度更快
-m max-hops,默认 30,可手动改小改大
-I 用 ICMP Echo 而不是 UDP 数据包(穿透部分防火墙)
-T 用 TCP SYN 探测(常用于 80/443)

示例

bash 复制代码
sudo traceroute -n -m 5 8.8.8.8

输出

复制代码
traceroute to 8.8.8.8 (8.8.8.8), 5 hops max, 60 byte packets
 1  192.168.1.1    0.504 ms  0.458 ms  0.432 ms
 2  10.10.10.1     2.351 ms  2.123 ms  2.089 ms
 3  172.16.0.1     5.630 ms  5.487 ms  5.321 ms
 4  202.96.199.1   7.125 ms  7.012 ms  6.893 ms
 5  * * *

解读

  • 第 1 列:跳数编号。
  • 第 2 列:该跳的 IP(因 -n 没做 DNS)。
  • 后面 3 个时间:traceroute 默认发 3 个包,RTT 分别列出。
  • * * *:第 5 跳超时,可能 ICMP 被丢弃或 TTL 已到达目标但目标不回应。

4.4 DNS 查询
nslookup
交互式参数 含义
-type=A / -type=MX / -type=TXT 指定查询记录类型
-debug 显示整个响应包内容

示例

bash 复制代码
nslookup -type=MX example.com

输出

复制代码
Server:  8.8.8.8
Address: 8.8.8.8#53

Non-authoritative answer:
example.com     mail exchanger = 10 mail.example.com.

解读

  • Server/Address:本机当前使用的 DNS 服务器。
  • Non-authoritative:非权威回答,说明来自缓存。
  • 10:MX 优先级,数字越小越优先。
  • mail.example.com:真正负责收邮件的主机。

dig
常用参数 含义
+short 仅显示结果,不显示 flags、headers
+trace 逐级迭代查询,从根开始
+norecurse 不请求递归,可测权威服务器
@8.8.8.8 临时指定 DNS 服务器

示例 1:A 记录 + 简短输出

bash 复制代码
dig example.com A +short

输出:

复制代码
93.184.216.34

示例 2:完整迭代追踪

bash 复制代码
dig example.com +trace

输出(截取关键行):

复制代码
.            518400  IN  NS  a.root-servers.net.
;; Received 525 bytes from 127.0.0.53#53(127.0.0.53)
com.         172800  IN  NS  a.gtld-servers.net.
;; Received 828 bytes from 198.41.0.4#53(a.root-servers.net)
example.com. 172800  IN  NS  a.iana-servers.net.
;; Received 700 bytes from 192.5.6.30#53(a.gtld-servers.net)
example.com. 86400   IN  A   93.184.216.34

解读

  • 每段以 ;; 开头的是注释,告诉你"刚才向谁查到了什么"。
  • 从上到下,依次是:根 → TLD(.com) → 目标域的权威服务器 → 最终 A 记录。

4.5 捕获和分析网络流量
tcpdump
常用参数 含义
-i any 监听所有接口
-i eth0 指定接口
-n 不解析域名和端口名
-nn 连端口号也不解析
-v / -vv / -vvv 逐级增加详细度
-w file.pcap 写入文件供 Wireshark 分析
-c 100 抓 100 个包后自动停止
host 8.8.8.8 只抓与 8.8.8.8 相关的流量
port 80 只抓 80 端口

示例

bash 复制代码
sudo tcpdump -i eth0 -nn -c 3 host 8.8.8.8

输出

复制代码
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
15:21:12.123456 IP 192.168.1.100.54321 > 8.8.8.8.53: UDP, length 64
15:21:12.124789 IP 8.8.8.8.53 > 192.168.1.100.54321: UDP, length 80
15:21:12.125012 IP 192.168.1.100.54322 > 8.8.8.8.53: UDP, length 64
3 packets captured

解读

  • 时间戳:微秒级。
  • 192.168.1.100.54321:源 IP.源端口。
  • 8.8.8.8.53:目的 IP.目的端口(53 即 DNS)。
  • UDP:协议,length 表示载荷字节数。

步骤/工具 目的(一句话完整描述)
4.1 ① netstat 通过列出所有监听端口、已建立连接及其所属进程信息,帮助管理员快速确认哪些服务正在运行、哪些端口被占用,是传统网络排查的入门级工具。
4.1 ② ss 利用内核 netlink 接口高速输出套接字统计,比 netstat 更快速、更详细地展示 TCP/UDP/RAW 连接状态、队列长度和进程 PID,适用于高并发场景下的端口监控与故障定位。
4.2 ping 发送 ICMP Echo 请求并统计往返时延和丢包率,用于验证本地到目标主机在 IPv4/IPv6 层的可达性以及链路质量,是最简单直观的网络连通性测试手段。
4.3 traceroute 通过递增 TTL 逐跳发送探测包并记录每一跳返回的 ICMP 超时或端口不可达报文,从而绘制出完整的路由路径并发现潜在的高延迟或丢包节点。
4.4 nslookup 以交互或命令行方式向指定 DNS 服务器查询各类记录(A、AAAA、MX、TXT 等),帮助管理员快速判断域名解析是否正确、权威 DNS 是否生效。
4.4 dig 提供丰富的 DNS 诊断选项(+trace、+short、@server),可完整展示从根到权威服务器的迭代查询过程,精确定位解析故障、缓存污染或 TTL 问题。
4.5 tcpdump 在网络接口上实时捕获并解码链路层到应用层的原始数据包,支持灵活过滤表达式,用于深度故障排查、性能分析与安全取证。

一个实际案例整合知识

场景:用户投诉无法访问互联网,如何排查?

  1. ping 测试

    bash 复制代码
    ping 8.8.8.8
    • 如果 不通:可能是本地网络、路由器或 ISP 问题。
    • 如果 通但域名不通 :可能是 DNS 问题(如 ping www.baidu.com 失败)。
  2. traceroute 定位

    bash 复制代码
    traceroute 8.8.8.8
    • 如果卡在 第一跳 (如 192.168.1.1):检查路由器是否故障。
    • 如果卡在 中间某跳:联系 ISP 报障。
  3. netstat 检查本机

    bash 复制代码
    netstat -rn    # 查看路由表,确认是否有默认网关(如 0.0.0.0 -> 192.168.1.1)

总结

  • 协议栈:从下往上理解数据如何封装、传输、解封装。
  • 工具ping 测连通性、traceroute 追路径、netstat 看连接。
  • 设备与概念:路由器跨网络,交换机隔离冲突域,VLAN 隔离广播域,子网划分优化 IP 使用。

5. VLAN 子接口
  • What
    在一张物理网卡上虚拟出带 802.1Q tag 的子接口。

  • Why
    交换机 trunk 打 tag,服务器需要识别不同 VLAN。

  • When
    需要把一台服务器同时放进多个二层网段。

  • How

    bash 复制代码
    # 1. 基于 eth0 创建 VLAN ID 100 的子接口 eth0.100
    sudo ip link add link eth0 name eth0.100 type vlan id 100
    
    # 2. 给子接口配置 IP
    sudo ip addr add 192.168.100.10/24 dev eth0.100
    
    # 3. 启用接口
    sudo ip link set eth0.100 up
    
    # 4. 验证 tag 与状态
    ip -d link show eth0.100

6. Bridge(网桥)
  • What
    把多张网卡变成一台虚拟交换机。

  • Why
    让虚拟机/容器直接出现在物理网络,或做简单二层转发。

  • When
    KVM、Docker、LXC 需要桥接;或把多端口当交换机用。

  • How

    bash 复制代码
    # 1. 创建名为 br0 的网桥
    sudo ip link add br0 type bridge
    
    # 2. 把 eth0 塞进 br0
    sudo ip link set eth0 master br0
    
    # 3. 先启物理口再启桥
    sudo ip link set eth0 up
    sudo ip link set br0 up
    
    # 4. 验证端口归属与 STP 状态
    bridge -d link

7. Bond(链路聚合)
  • What
    把 ≥2 张物理网卡聚合成一个逻辑口。

  • Why
    冗余(active-backup)或带宽叠加(LACP)。

  • When
    交换机支持 LACP/静态聚合;或需要故障秒级切换。

  • How

    bash 复制代码
    # 1. 创建 mode=1(active-backup) 的 bond0
    sudo ip link add bond0 type bond mode active-backup
    
    # 2. 先把从接口关掉,避免抖动
    sudo ip link set eth0 down
    sudo ip link set eth1 down
    
    # 3. 把从接口加入 bond
    sudo ip link set eth0 master bond0
    sudo ip link set eth1 master bond0
    
    # 4. 依次启接口
    sudo ip link set eth0 up
    sudo ip link set eth1 up
    sudo ip link set bond0 up
    
    # 5. 验证主备状态
    cat /proc/net/bonding/bond0

8. Promiscuous Mode(混杂模式)
  • What
    网卡不再按 MAC 过滤,全部收包。

  • Why
    抓包、IDS、网络虚拟化必备。

  • When
    tcpdump、Wireshark、Docker bridge、Open vSwitch。

  • How

    bash 复制代码
    # 开启混杂
    sudo ip link set eth0 promisc on
    
    # 验证标志出现 PROMISC
    ip link show eth0

9. 防火墙(iptables)
  • What
    内核包过滤框架,四表五链。

  • Why
    最小权限原则:只让必要流量进出。

  • When
    任何对外暴露服务的主机;上线前。

  • How

    bash 复制代码
    # 追加一条规则:放行入向 TCP/22
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    
    # 查看规则并带行号,方便删除
    sudo iptables -L INPUT -n --line-number

10. SSH 服务加固
  • What
    改端口、禁 root 密码、强制密钥。

  • Why
    减少爆破面,符合合规。

  • When
    公网云主机、生产跳板机。

  • How

    bash 复制代码
    # 1. 先备份原配置
    sudo cp /etc/ssh/sshd_config{,.bak}
    
    # 2. 改端口为 2222(行内注释:-i 就地替换)
    sudo sed -ri 's/^#?Port.*/Port 2222/' /etc/ssh/sshd_config
    
    # 3. 禁止 root 用密码登录
    sudo sed -ri 's/^#?PermitRootLogin.*/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config
    
    # 4. 重启生效
    sudo systemctl restart sshd
    
    # 5. 验证监听端口
    sudo ss -lntp | grep 2222

11. DNS 解析
  • What
    把域名解析成 IP。

  • Why
    系统需要外部域名;调试 CDN/内部 DNS。

  • When
    新装系统、临时科学上网、测试新 DNS。

  • How

    bash 复制代码
    # 临时把 /etc/resolv.conf 改成 1.1.1.1
    echo "nameserver 1.1.1.1" | sudo tee /etc/resolv.conf
    
    # 验证
    systemd-resolve --status | grep -A 3 "DNS Servers"

12. 网卡硬件信息与性能调优
  • What
    查看驱动/固件/PCI 地址,调 Ring Buffer。

  • Why
    定位兼容性、丢包、性能瓶颈。

  • When
    千兆跑不满、升级内核后。

  • How

    bash 复制代码
    # 1. 查看驱动与固件
    sudo ethtool -i eth0
    
    # 2. 查看当前 Ring Buffer
    ethtool -g eth0
    
    # 3. 把 RX/TX 队列都调到 4096(需网卡支持)
    sudo ethtool -G eth0 rx 4096 tx 4096
    
    # 4. 验证已生效
    ethtool -g eth0 | grep -A2 "Current hardware settings"


拓展

1. 局域网构建+VLAN 划分 + 端口 MAC-IP 绑定 + 静态 DHCP

点击跳转

相关推荐
花小璇学linux2 小时前
imx6ull-驱动开发篇14——原子操作
linux·驱动开发·嵌入式软件
君科程序定做2 小时前
Linux 内核发包流程与路由控制实战
linux·运维·服务器
Lovyk2 小时前
NFS 服务器
linux·服务器
遇见尚硅谷9 小时前
C语言:20250805学习(文件预处理)
服务器·c语言·学习
wdfk_prog10 小时前
[Linux]学习笔记系列 -- [arm][debug]
linux·运维·arm开发·笔记·学习
Arthurmoo10 小时前
Linux系统之Docker命令与镜像、容器管理
linux·docker·eureka
Hadesls12 小时前
Almalinux 10安装L20显卡驱动
linux·运维
Mr_wilson_liu12 小时前
网络拨测和业务拨测是什么意思
linux·网络
ccLianLian12 小时前
计算机基础·linux系统
linux·运维·服务器
ζั͡山 ั͡有扶苏 ั͡✾13 小时前
Elasticsearch 单节点迁移实战指南:从旧服务器到新环境的完整流程
服务器·elasticsearch·jenkins