Linux-网络管理

网络管理

      • 1. 网络基础
        • 1.1 TCP/IP 协议栈(四层模型)
        • 1.2 网络设备配置与基础概念
        • 1.3 网络接口命名规则
        • 1.4 网络配置文件位置
      • 2. 常用网络配置命令
        • 2.1 查看网络接口信息
        • 2.2 配置 IP 地址
        • 2.3 启用/禁用网卡
        • 2.4 修改网卡 MAC 地址
        • 2.5 配置网卡的 MTU(最大传输单元)
      • 3. 配置网络服务
        • 3.1 静态 IP 配置
          • Debian 系列
          • RHEL 系列
        • 3.2 动态 IP 配置(DHCP)
          • Debian 系列
          • RHEL 系列
      • 综合案例
        • 一、目标与思路
        • 二、操作步骤总览
        • 三、详细步骤与命令
          • 1. 配置网络接口(让服务器“有网可上”)
            • Debian / Ubuntu
            • RHEL / CentOS / Rocky
          • 2. 配置防火墙(只开 80/443)
            • 方案 A:iptables(一次性,重启后需 save)
            • 方案 B:firewalld(持久化)
          • 3. 加固 SSH(换端口 + 禁用 root 密码)
          • 4. 连通性测试
            • 4.1 测试上网
            • 4.2 查看路由路径
          • 5. 配置验证(确保真正生效)
        • 四、一键脚本
        • 五、常见故障排查表
      • 常见面试问题及答案
        • 问题 1:如何查看 Linux 系统中所有网络接口的配置信息?
        • 问题 2:如何为 Linux 系统中的网络接口配置静态 IP 地址?
        • 问题 3:如何测试 Linux 系统中网络的连通性?
        • 问题 4:如何查看 Linux 系统中网络接口的硬件信息?
        • 问题 5:如何在 Linux 系统中配置防火墙规则?
        • 问题 6:如何在 Linux 系统中配置 SSH 服务?
      • 网络诊断与监控
        • 4.1 查看网络连接状态
          • ① netstat(传统工具,net-tools 包)
          • ② ss(iproute2 套件,比 netstat 快且功能更多)
        • 4.2 测试网络连通性
          • ping(IPv4/IPv6 连通性测试)
        • 4.3 跟踪路由
          • traceroute
        • 4.4 DNS 查询
          • nslookup
          • dig
        • 4.5 捕获和分析网络流量
          • tcpdump
          • **一个实际案例整合知识**
        • 5. VLAN 子接口
        • 6. Bridge(网桥)
        • 7. Bond(链路聚合)
        • 8. Promiscuous Mode(混杂模式)
        • 9. 防火墙(iptables)
        • 10. SSH 服务加固
        • 11. DNS 解析
        • 12. 网卡硬件信息与性能调优
      • 拓展
        • 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 交换机)
        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:显示简要的网络接口信息。
  • 示例
    ifconfig
    
    输出样例
    eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255ether 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 65536inet 127.0.0.1  netmask 255.0.0.0loop  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:显示或操作路由表。
  • 示例
    ip addr show
    
    输出样例
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ffinet 192.168.1.100/24 brd 192.168.1.255 scope global dynamic eth0valid_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(最大传输单元)。
  • 示例
    sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
    

ip

  • 作用:配置网络接口的 IP 地址。
  • 参数
    • add:添加 IP 地址。
    • del:删除 IP 地址。
  • 示例
    sudo ip addr add 192.168.1.100/24 dev eth0
    
2.3 启用/禁用网卡

ifconfig

  • 作用:启用或禁用网络接口。
  • 参数
    • up:启用网络接口。
    • down:禁用网络接口。
  • 示例
    sudo ifconfig eth0 up
    

ip

  • 作用:启用或禁用网络接口。
  • 参数
    • up:启用网络接口。
    • down:禁用网络接口。
  • 示例
    sudo ip link set eth0 up
    
2.4 修改网卡 MAC 地址

ifconfig

  • 作用:修改网络接口的 MAC 地址。
  • 参数
    • hw ether:设置网络接口的 MAC 地址。
  • 示例
    sudo ifconfig eth0 hw ether 00:11:22:33:44:55
    

ip

  • 作用:修改网络接口的 MAC 地址。
  • 参数
    • link set:设置网络接口的属性。
  • 示例
    sudo ip link set eth0 address 00:11:22:33:44:55
    
2.5 配置网卡的 MTU(最大传输单元)

ifconfig

  • 作用:配置网络接口的 MTU。
  • 参数
    • mtu:设置网络接口的 MTU。
  • 示例
    sudo ifconfig eth0 mtu 1500
    

ip

  • 作用:配置网络接口的 MTU。
  • 参数
    • mtu:设置网络接口的 MTU。
  • 示例
    sudo ip link set eth0 mtu 1500
    

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

功能/参数ifconfig 命令ip 命令
查看网络接口信息ifconfig
ifconfig -a
ip addr show
ip link show
启用网络接口ifconfig [interface] upip link set [interface] up
禁用网络接口ifconfig [interface] downip 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]
配置 MTUifconfig [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
  • 示例
    auto eth0
    iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 8.8.8.8 8.8.4.4
    
RHEL 系列
  • 文件位置/etc/sysconfig/network-scripts/ifcfg-eth0
  • 示例
    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
  • 示例
    auto eth0
    iface eth0 inet dhcp
    
RHEL 系列
  • 文件位置/etc/sysconfig/network-scripts/ifcfg-eth0
  • 示例
    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
sudo vim /etc/network/interfaces

写入:

auto eth0
iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 8.8.8.8 8.8.4.4

立即生效:

sudo ifdown eth0 && sudo ifup eth0
RHEL / CentOS / Rocky
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

重启网络:

sudo nmcli connection reload && sudo nmcli connection up eth0

2. 配置防火墙(只开 80/443)
方案 A:iptables(一次性,重启后需 save)
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(持久化)
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload

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

编辑配置文件:

sudo vim /etc/ssh/sshd_config

修改/新增:

Port 12345
PermitRootLogin no
PasswordAuthentication no

重启服务:

sudo systemctl restart sshd

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


4. 连通性测试
4.1 测试上网
ping -c 4 8.8.8.8

期望输出:

4 packets transmitted, 4 received, 0% packet loss
4.2 查看路由路径
traceroute 8.8.8.8

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


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

四、一键脚本

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

#!/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 sshdecho "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 系统中所有网络接口的配置信息?
  • 答案
    ifconfig
    
    ip addr show
    
问题 2:如何为 Linux 系统中的网络接口配置静态 IP 地址?
  • 答案
    对于 Debian 系列系统,编辑 /etc/network/interfaces 文件:
    auto eth0
    iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 8.8.8.8 8.8.4.4
    
    对于 RHEL 系列系统,编辑 /etc/sysconfig/network-scripts/ifcfg-eth0 文件:
    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 命令:
    ping -c 4 192.168.1.1
    
问题 4:如何查看 Linux 系统中网络接口的硬件信息?
  • 答案
    使用 lshw 命令:
    sudo lshw -C network
    
    或使用 ethtool 命令:
    sudo ethtool -i eth0
    
问题 5:如何在 Linux 系统中配置防火墙规则?
  • 答案
    使用 iptables 命令:
    sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    
    或使用 firewalld 命令:
    sudo firewall-cmd --permanent --add-port=80/tcp
    sudo firewall-cmd --reload
    
问题 6:如何在 Linux 系统中配置 SSH 服务?
  • 答案
    编辑 /etc/ssh/sshd_config 文件:
    Port 12345
    PermitRootLogin no
    PasswordAuthentication no
    
    然后重启 SSH 服务:
    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 监听端口(带进程名)

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不解析名称
-tTCP
-uUDP
-l仅监听
-p显示进程
-s打印统计摘要

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

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 SIZEICMP 数据部分大小(默认 56 字节)
-W T等待响应的超时时间(秒)
-4 / -6强制 IPv4/IPv6

示例 3:向 8.8.8.8 发送 4 个包

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,速度更快
-mmax-hops,默认 30,可手动改小改大
-I用 ICMP Echo 而不是 UDP 数据包(穿透部分防火墙)
-T用 TCP SYN 探测(常用于 80/443)

示例

sudo traceroute -n -m 5 8.8.8.8

输出

traceroute to 8.8.8.8 (8.8.8.8), 5 hops max, 60 byte packets1  192.168.1.1    0.504 ms  0.458 ms  0.432 ms2  10.10.10.1     2.351 ms  2.123 ms  2.089 ms3  172.16.0.1     5.630 ms  5.487 ms  5.321 ms4  202.96.199.1   7.125 ms  7.012 ms  6.893 ms5  * * *

解读

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

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

示例

nslookup -type=MX example.com

输出

Server:  8.8.8.8
Address: 8.8.8.8#53Non-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 记录 + 简短输出

dig example.com A +short

输出:

93.184.216.34

示例 2:完整迭代追踪

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 端口

示例

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 测试

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

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

    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
    # 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
    # 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
    # 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
    # 开启混杂
    sudo ip link set eth0 promisc on# 验证标志出现 PROMISC
    ip link show eth0
    

9. 防火墙(iptables)
  • What
    内核包过滤框架,四表五链。
  • Why
    最小权限原则:只让必要流量进出。
  • When
    任何对外暴露服务的主机;上线前。
  • How
    # 追加一条规则:放行入向 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
    # 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
    # 临时把 /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
    # 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

点击跳转

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/89408.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/89408.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux锁的概念及线程同步

目录 1.常见锁概念 死锁 死锁四个必要条件 避免死锁 避免死锁算法 2. Linux线程同步 条件变量 同步概念与竞态条件 条件变量函数 初始化 销毁 等待条件满足 唤醒等待 简单案例&#xff1a; 条件变量使用规范 1.常见锁概念 死锁 死锁是指在一组进程中的各个进程均占有不会释放的…

docker更换国内加速器-更换华为加速器2025-717亲测可用docker 拉取镜像出错

[rootlocalhost ~]# docker pull nginx Using default tag: latest Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)报错原因就是…

Unity VR多人手术模拟恢复2:客户端移动同步问题分析与解决方案

Unity VR多人手术模拟恢复2&#xff1a;客户端移动同步问题分析与解决方案 &#x1f3af; 问题背景 在开发基于Unity Mirror网络架构的VR多人手术模拟系统时&#xff0c;我们遇到了一个复杂的客户端移动同步问题&#xff1a; 主要操作者&#xff08;第一个客户端&#xff09;&a…

uni-app开发的页面跳转全局加载中

uni-app开发的页面跳转全局加载中首先需要下载插件创建加载中页面组件app.vue页面中监听跳转首先需要下载插件 https://ext.dcloud.net.cn/plugin?id20613 创建加载中页面组件 <!-- 全局自定义加载中 --> <template><view v-if"visible" class&qu…

XXE漏洞4-XXE无回显文件读取-PentesterLab靶场搭建

一.PentesterLab靶场搭建(实验环境搭建)介绍&#xff1a;PentesterLab 是一个全面的漏洞演示平台&#xff0c;但是它是收费的&#xff0c;我们这里只使用它的 xxe 演示案例。安装 PentesterLab 虚拟机:下载好镜像&#xff1a; 1.打开VMware新建虚拟机&#xff0c;选择典型就行。…

【机器学习】图片分类中增强常用方式详解以及效果展示

图片增强常用方式详解 引言 图片数据的质量和多样性对模型的训练效果起着至关重要的作用。然而&#xff0c;实际获取的图片数据往往存在数量不足、分布不均衡等问题。图片增强技术应运而生&#xff0c;它通过对原始图片进行一系列变换&#xff0c;生成更多具有多样性的图片&…

【URL 转换为PDF】HTML转换为PDF

1、方法1 pdfkit 安装依赖 # 安装 wkhtmltopdf&#xff08;系统级&#xff09; # Ubuntu/Debian sudo apt install wkhtmltopdf# macOS brew install wkhtmltopdf# Windows 下载安装&#xff1a;https://wkhtmltopdf.org/downloads.html# 安装 Python 库 pip install pdfkitimp…

单链表的定义、插入和删除

一、定义一个单链表 struct LNode{ //定义单链表节点类型ElemType data; //存放节点数据元素struct LNode *next; //指针指向下一个结点 }; //增加一个新节点&#xff1a;在内存中申请一个结点所需空间&#xff0c;并用指针p指向这个结点 struct LNode * p (struc…

Nextjs官方文档异疑惑

第一个区别&#xff1a;不同的页面对应的路由器设定&#xff01; 继续用 app 路由器&#xff08;推荐&#xff0c;Next.js 未来主流&#xff09; 路由规则&#xff1a;app 目录下&#xff0c;文件夹 page.tsx 对应路由。例如&#xff1a; app/page.tsx → 对应 / 路由&#xf…

突破AI模型访问的“光标牢笼”:长上下文处理与智能环境隔离实战

> 当AI模型面对浩瀚文档却只能处理零星片段,当关键信息散落各处而模型“视而不见”,我们该如何打破这堵无形的墙? 在自然语言处理领域,**输入长度限制**(常被称为“光标区域限制”)如同一个无形的牢笼,严重制约了大型语言模型(LLM)在真实场景中的应用潜力。无论是分…

AI 智能质检系统在汽车制造企业的应用​

某知名汽车制造企业在其庞大且复杂的生产流程中&#xff0c;正面临着棘手的汽车零部件质检难题。传统的人工质检方式&#xff0c;完全依赖人工的肉眼观察与简单工具测量。质检员们长时间处于高强度的工作状态&#xff0c;精神高度集中&#xff0c;即便如此&#xff0c;由于人工…

设计模式》》门面模式 适配器模式 区别

// 复杂子系统 class CPU {start() { console.log("CPU启动"); } } class Memory {load() { console.log("内存加载"); } } class HardDrive {read() { console.log("硬盘读取"); } }// 门面 class ComputerFacade {constructor() {this.cpu ne…

windows内核研究(驱动开发 第一个驱动程序和调试环境搭建)

驱动开发 第一个驱动程序 驱动的开发流程 1.编写代码 -> 生成.sys文件 -> 部署 -> 启动 -> 停止 ->卸载 // 编写我们的第一个驱动程序 #include<ntddk.h>// 卸载函数 VOID DrvUnload(PDRIVER_OBJECT DriverObject) {DbgPrint("我被卸载了\n"…

ABP VNext + 多级缓存架构:本地 + Redis + CDN

ABP VNext 多级缓存架构&#xff1a;本地 Redis CDN &#x1f4da; 目录ABP VNext 多级缓存架构&#xff1a;本地 Redis CDN一、引言 &#x1f680;二、环境与依赖 &#x1f6e0;️三、架构概览 &#x1f310;请求全链路示意 &#x1f6e3;️四、本地内存缓存层 &#x1…

RGBA图片格式转换为RGB格式(解决convert转换的失真问题)

使用convert转换的问题 OpenCV 的 cv2.cvtColor(…, cv2.COLOR_BGRA2GRAY) 会直接忽略 Alpha 通道的含义&#xff0c;将它当作第四个颜色通道来处理。 转换公式如下&#xff1a; gray 0.114*255 0.587*0 0.299*0 ≈ 29也就是说&#xff0c;即使 Alpha 为 0&#xff08;完全透…

Spring AI之Prompt开发

文章目录1 提示词工程1_核心策略2_减少模型“幻觉”的技巧2 提示词攻击防范1_提示注入&#xff08;Prompt Injection&#xff09;2_越狱攻击&#xff08;Jailbreaking&#xff09;3 数据泄露攻击&#xff08;Data Extraction&#xff09;4 模型欺骗&#xff08;Model Manipulat…

Java面试(基础篇) - 第二篇!

未看第一篇的&#xff0c;这里可以直达 Java面试(基础篇) - 第一篇 Integer对象可以用判断吗&#xff1f;为什么&#xff1f; 回答 不可以&#xff0c;因为 比较的是对象的实例&#xff08;内存地址&#xff09;&#xff0c;Integer是有一个缓存机制的&#xff0c;它会将-1…

【C# in .NET】11. 探秘泛型:类型参数化革命

探秘泛型:类型参数化革命 泛型是 C# 和.NET框架中一项革命性的特性,它实现了 “编写一次,多处复用” 的抽象能力,同时保持了静态类型的安全性和高性能。与 C++ 模板等其他语言的泛型机制不同,.NET 泛型在 CLR(公共语言运行时)层面提供原生支持,这使得它兼具灵活性、安…

菜单权限管理

菜单管理系统的整体架构1.Menu 菜单表2.role 角色表3.role_menu 角色菜 单关联表&#xff08;多对多 &#xff09;要找role_id为3的角色能用哪个菜单:SELECT *FROM sys_menu a LEFT JOIN sys_role_menu b ON a.menu_id b.menu_id WHERE role_id3拆分开就是4.user 用户表5.user…

SQL FOREIGN KEY:详解及其在数据库设计中的应用

SQL FOREIGN KEY:详解及其在数据库设计中的应用 引言 在数据库设计中,数据完整性是至关重要的。SQL FOREIGN KEY(外键)是实现数据完整性的一种有效手段。本文将详细解释SQL FOREIGN KEY的概念、用途以及在实际数据库设计中的应用。 外键概述 1. 定义 外键(FOREIGN KE…