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
英文地址,請注明出處:http://en.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…