網絡管理
- 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 是互聯網通信的基礎,分為四層(從下往上):
-
鏈路層(Link Layer)
- 負責物理設備間的通信(如以太網、Wi-Fi)。
- 關鍵概念:MAC 地址(設備物理地址)、ARP 協議(通過 IP 找 MAC)。
-
網絡層(Internet Layer)
- 負責跨網絡的數據傳輸,核心協議是 IP(如 IPv4/IPv6)。
- 關鍵概念:IP 地址(邏輯地址)、子網掩碼(劃分網絡范圍)、路由(決定數據包路徑)。
-
傳輸層(Transport Layer)
- 提供端到端的通信,主要協議是 TCP(可靠連接)和 UDP(無連接)。
- 關鍵概念:端口號(區分不同服務,如 HTTP=80,SSH=22)。
-
應用層(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
- VLAN(虛擬局域網):將一個物理交換機邏輯劃分為多個廣播域。
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
。
- 公司需要 50 臺主機,可分配
- 子網掩碼:如
1.3 網絡接口命名規則
在 Linux 系統中,網絡接口的命名規則如下:
- 傳統命名規則:
eth0
、eth1
等,通常用于較舊的系統。 - 現代命名規則:
enp0s3
、enp2s0
等,這種命名方式更描述性,便于識別接口的物理位置。
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)
-
接口名稱和標志
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
eth0
:網絡接口名稱,表示以太網接口。flags=4163<UP,BROADCAST,RUNNING,MULTICAST>
:UP
:接口已啟用。BROADCAST
:支持廣播功能。RUNNING
:接口正在運行。MULTICAST
:支持多播功能。
mtu 1500
:最大傳輸單元(MTU)為 1500 字節。
-
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
:廣播地址。
-
MAC 地址和隊列長度
ether 00:11:22:33:44:55 txqueuelen 1000 (Ethernet)
ether
:表示以太網接口的 MAC 地址。00:11:22:33:44:55
:接口的 MAC 地址。txqueuelen 1000
:發送隊列長度。(Ethernet)
:接口類型為以太網。
-
接收和發送統計
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)
:發送的字節數換算成兆字節。
-
環回接口
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
- 作用:顯示和操作路由、網絡設備、接口等網絡信息。
- 參數:
addr
或a
:顯示或操作 IP 地址。link
或l
:顯示或操作網絡設備。route
或r
:顯示或操作路由表。
- 示例:
輸出樣例: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: 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
:隊列長度。
-
環回接口的鏈路信息
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
:廣播地址。
-
環回接口的 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
:地址的優先使用生命周期。
-
以太網接口
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
:隊列長度。
-
以太網接口的鏈路信息
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
:廣播地址。
-
以太網接口的 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
以下是 ifconfig
和 ip
命令的參數對比表格:
功能/參數 | 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
- 示例:
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 |
二、操作步驟總覽
- 配置網絡接口
- 配置防火墻
- 配置 SSH
- 連通性測試
- 配置驗證
三、詳細步驟與命令
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 -tulnp | 80、443、12345 均出現 |
防火墻規則 | sudo iptables -L -n 或 sudo 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 執行即可(需自行改接口名):
#!/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
文件:
對于 RHEL 系列系統,編輯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
/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
文件:
然后重啟 SSH 服務:Port 12345 PermitRootLogin no PasswordAuthentication no
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:協議,
tcp
或tcp6
。 - 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 監聽端口(帶進程號)
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 個包
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) |
示例
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 | 在網絡接口上實時捕獲并解碼鏈路層到應用層的原始數據包,支持靈活過濾表達式,用于深度故障排查、性能分析與安全取證。 |
一個實際案例整合知識
場景:用戶投訴無法訪問互聯網,如何排查?
-
用
ping
測試:ping 8.8.8.8
- 如果 不通:可能是本地網絡、路由器或 ISP 問題。
- 如果 通但域名不通:可能是 DNS 問題(如
ping www.baidu.com
失敗)。
-
用
traceroute
定位:traceroute 8.8.8.8
- 如果卡在 第一跳(如
192.168.1.1
):檢查路由器是否故障。 - 如果卡在 中間某跳:聯系 ISP 報障。
- 如果卡在 第一跳(如
-
用
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
點擊跳轉