目錄
- 零. 概要
- 一. ping
- 二. ip命令
- 2.1 ip address
- 2.2 ip route
- 2.3 ip neighbour
- 三. traceroute
- 四. DNS查詢
- 4.1 nslookup
- 4.2 dig
- 五. ss 查看網絡連接狀態
零. 概要
?在Linux系統中有2套用于網絡管理的工具集
net-tools
- 早期網絡管理的主要工具集,缺乏對 IPv6、網絡命名空間等現代特性的支持,可能存在與新內核不兼容的問題。
- 在新版的Ubuntu系統中已經不再默認安裝,安裝命令:
sudo apt install net-tools
- 適合處理簡單網絡任務,或用于維護舊系統。
iproute2
- 現代網絡管理標準:支持新特性,如網絡命名空間(namespace)、多路徑路由等。
- 工具整合:單個工具(如 ip)涵蓋多個功能(如管理 IP 地址、路由、鏈路等)。
- 性能優越:直接與內核交互,效率高。
- 跨協議支持:支持 IPv4、IPv6、SCTP、DCCP 等。
- Ubuntu系統內置
?兩套工具集對比
功能 | iproute2 命令 | net-tools 命令 |
---|---|---|
查看接口信息 | ip link show | ifconfig |
啟用/禁用接口 | ip link set dev eth0 up/down | ifconfig eth0 up/down |
查看 IP 地址 | ip addr show | ifconfig |
添加 IP 地址 | ip addr add 192.168.1.1/24 dev eth0 | ifconfig eth0 192.168.1.1 netmask 255.255.255.0 |
刪除 IP 地址 | ip addr del 192.168.1.1/24 dev eth0 | 不支持直接刪除 |
查看路由表 | ip route show | route -n |
添加/刪除路由 | ip route add/del ... | route add/del ... |
查看套接字信息 | ss -tuln | netstat -tuln |
查看 ARP 表 | ip neigh show | arp -a |
???下圖來源于網絡工程師波哥???
一. ping
?測試網絡連通性
- ping 會連續發送 ICMP 數據包,直到被手動中斷(通常按 Ctrl+C)。
- 默認每秒發送一個數據包,顯示結果包括往返時間(RTT)、數據包丟失率等信息。
ping www.example.com
選項 | 功能 | 示例 |
---|---|---|
-c <次數> | 指定發送數據包的數量 | ping -c 5 www.example.com |
-i <間隔> | 設置每次發送數據包的時間間隔(默認 1 秒) | ping -i 0.5 www.example.com |
-w <時間> | 設置最大等待時間(秒) | ping -w 10 www.example.com |
-s <大小> | 指定 ICMP 數據包的大小(字節) | ping -s 128 www.example.com |
-t <值> | 設置 IP 數據包的 TTL(Time to Live) | ping -t 64 www.example.com |
-4 | 強制使用 IPv4 | ping -4 www.example.com |
-6 | 強制使用 IPv6 | ping -6 www.example.com |
💥注意事項
一些服務器為了安全性可能禁用了 ICMP 協議(不響應 ping 請求),但這并不一定說明網絡有問題。
二. ip命令
?在 Linux 系統中,ip 命令是 iproute2 工具集中最重要的網絡管理工具之一,用于查看和管理網絡接口、地址、路由等網絡配置。
它功能強大,已經取代了許多傳統的網絡命令(如 ifconfig、route、arp 等)。
?基本用法
OPTIONS
:命令的全局選項(如 -4、-6,表示 IPv4 或 IPv6)OBJECT
:操作的網絡對象(如 addr、link、route)COMMAND
:對象的具體操作(如 add、del、show)
ip [OPTIONS] OBJECT {COMMAND | help}
2.1 ip address
?查看所有接口的IP地址
# 完整寫法
ip address show
# 簡寫
ip addr
?簡潔的查看模式 → ip -br addr
- 第1列:接口名稱
lo
:這是回環接口(loopback interface),用于本地通信,通常僅限于 127.0.0.1 地址。ens33
:這是物理或虛擬網絡接口的名稱,具體名字因系統和網絡適配器配置而異。這里指的是一塊以太網接口。
- 第2列:接口狀態
UNKNOWN
:接口的狀態未知,通常這是回環接口的默認狀態。UP
:接口處于激活狀態,能夠發送和接收網絡流量。
- 第3列:IP 地址信息
-
?IPv4 地址
127.0.0.1/8
:lo 的 IPv4 地址,是本地回環地址,子網掩碼為/8
(即子網范圍為 127.0.0.0 至 127.255.255.255)。192.168.118.136/24
:ens33 的 IPv4 地址,是局域網中的地址,子網掩碼為/24
(即子網范圍為 192.168.118.0 至 192.168.118.255)。
-
?IPv6 地址
::1/128
:lo 的 IPv6 地址,是本地回環地址,子網掩碼為 /128,即只包含自身。fe80::20c:29ff:fe86:f265/64
:ens33 的 IPv6 鏈路本地地址(link-local address),作用域是當前鏈接,子網掩碼為/64
。
-
?metric
- metric 是路由表中用于決定路徑優先級的一個值。它在網絡中主要用于路由選擇。
多個路由指向同一個目標時,metric 值較低的路由優先被選擇。 - 僅部分接口包含
- metric 100:網絡接口的優先級,值越小優先級越高(通常用于路由選擇時)。
- metric 是路由表中用于決定路徑優先級的一個值。它在網絡中主要用于路由選擇。
-
apluser@ubuntu24-01:~$ ip -br addr
lo UNKNOWN 127.0.0.1/8 ::1/128
ens33 UP 192.168.118.136/24 metric 100 fe80::20c:29ff:fe86:f265/64
?僅顯示 IPv4 地址
ip -4 addr
?僅顯示 IPv6 地址
ip -6 addr
2.2 ip route
?ip route
是 Linux 系統中用于查看和管理路由表的命令。路由表決定了網絡流量如何被發送到目標地址。通過 ip route
,可以
- 查看當前的路由信息
- 添加或修改路由規則
- 以及優化網絡連接。
?基本概念
- ?
路由表
:- 路由表存儲了從主機到不同網絡的路徑。
- 每條路由記錄包含目標網絡、網關(下一跳)、子網掩碼、網絡接口等信息。
- ?
默認網關
:- 如果目標地址不在任何已知的子網中,流量會被發送到默認網關。
?用法示例
默認路由
:將未知目標的流量發送到網關 192.168.118.2。子網路由
:通過本地子網 192.168.118.0/24 內的設備時,直接通過接口 ens33 發送,無需網關。網關路由
:網關 192.168.118.2 是通過 ens33 接口直接訪問的設備。
主機當前網絡配置正常,主要通過網關 192.168.118.2 和外部通信,同時能與 192.168.118.0/24 子網中的其他設備直接通信。
apluser@ubuntu24-01:~$ ip route show
default via 192.168.118.2 dev ens33 proto dhcp src 192.168.118.136 metric 100
192.168.118.0/24 dev ens33 proto kernel scope link src 192.168.118.136 metric 100
192.168.118.2 dev ens33 proto dhcp scope link src 192.168.118.136 metric 100
default
:表示默認路由,當目標地址無法匹配其他更具體的路由時,流量將使用此路由。via 192.168.118.2
:表示流量會通過網關(網關 IP 地址是192.168.118.2
)發送。dev ens33
:指定通過網絡接口ens33
發送數據。proto dhcp
:表示這條路由是通過 DHCP 動態分配的。src 192.168.118.136
:表示默認使用源地址(本機的IP地址)192.168.118.136
。metric 100
:表示路由的優先級,數值越小優先級越高。這里100
是一個默認的路由優先級值。- 👉這是系統的默認路由,所有不匹配其他路由表規則的流量會通過網關
192.168.118.2
,從接口ens33
發出。👈
default via 192.168.118.2 dev ens33 proto dhcp src 192.168.118.136 metric 100
192.168.118.0/24
:表示這是一個子網路由,負責192.168.118.0
到192.168.118.255
之間的地址。dev ens33
:數據包通過ens33
接口發送。proto kernel
:表示這是由內核自動添加的路由。scope link
:路由的作用域是本地鏈路(即只能到達本地子網中的設備)。src 192.168.118.136
:本接口的源地址是192.168.118.136
。metric 100
:路由優先級是 100。- 👉這是本地子網的路由,流量目標是同一子網的設備時,直接通過
ens33
接口發送,不需要經過網關。👈
192.168.118.0/24 dev ens33 proto kernel scope link src 192.168.118.136 metric 100
192.168.118.2
:表示這是到網關192.168.118.2
的路由。dev ens33
:通過ens33
接口發送數據。proto dhcp
:這條路由由 DHCP 動態配置。scope link
:作用域是本地鏈路。src 192.168.118.136
:使用192.168.118.136
作為源地址。metric 100
:路由優先級是 100。- 👉這是到網關設備
192.168.118.2
的路由,通過接口ens33
發出數據。👈
192.168.118.2 dev ens33 proto dhcp scope link src 192.168.118.136 metric 100
2.3 ip neighbour
?ip neighbour
命令用于顯示當前網絡接口的鄰居表(ARP 表或 NDP 表),它列出了本機網絡接口與其直接連接的設備之間的映射關系,同時顯示了與這些網絡設備的通信狀態。
例如:
- IP 地址
- 設備接口
- 硬件地址(MAC 地址)
- 網絡鄰居條目的狀態
ip neighbour
是現代系統中管理鄰居條目的工具,替代了傳統的 arp
命令。
?示例
apluser@ubuntu24-01:~$ ip neighbour
192.168.118.2 dev ens33 lladdr 00:50:56:ea:9e:5f STALE
192.168.118.1 dev ens33 lladdr 00:50:56:c0:00:08 REACHABLE
192.168.118.254 dev ens33 lladdr 00:50:56:ec:2c:8b STALE
192.168.118.2
:網絡鄰居設備的 IP 地址。dev ens33
:表示鄰居設備是通過網絡接口ens33
訪問的。lladdr 00:50:56:ea:9e:5f
:鄰居設備的硬件地址(MAC 地址)。STALE
:表示鄰居狀態為“陳舊”,系統已經知道該設備的 MAC 地址,但最近沒有與其通信。如果需要時,系統會重新驗證它。
192.168.118.2 dev ens33 lladdr 00:50:56:ea:9e:5f STALE
192.168.118.1
:鄰居設備的 IP 地址。dev ens33
:通過接口ens33
訪問。lladdr 00:50:56:c0:00:08
:設備的 MAC 地址。REACHABLE
:表示鄰居設備是可達的,最近系統已經成功與其通信。
192.168.118.1 dev ens33 lladdr 00:50:56:c0:00:08 REACHABLE
三. traceroute
traceroute
是一個網絡診斷工具,用于顯示從本地主機到目標主機之間的路徑及經過的所有中間節點(路由器或設備)。
該命令會顯示中間的路由器或網關,并提供每一跳的延遲信息,是排查網絡問題和了解網絡路徑的重要工具。
-I
:使用 ICMP Echo 請求(類似 ping),代替默認的 UDP 數據包。- 如果 traceroute 顯示
*
,可能是以下原因- 路由器禁用了 ICMP 響應。
- 數據包被防火墻阻攔。
- TTL 已到達但沒有返回響應。
- 遇到防火墻阻攔時,可以嘗試
-T
使用 TCP 探測。
root@ubuntu24-01:~# traceroute -I www.baidu.com
traceroute to www.baidu.com (119.63.197.151), 30 hops max, 60 byte packets1 _gateway (192.168.118.2) 0.079 ms 0.046 ms *2 * * *3 * * *4 * * *5 * * *6 * * *7 * * *8 * * *9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 119.63.197.151 (119.63.197.151) 7.820 ms 7.796 ms 7.772 ms
四. DNS查詢
?nslookup
和dig
是linux系統中用于查詢DNS的命令行工具。
特性 | nslookup | dig |
---|---|---|
復雜度 | 簡單,適合快速查詢 | 功能強大,適合高級用戶 |
輸出詳細信息 | 較少,僅限查詢結果 | 輸出完整的 DNS 消息結構 |
記錄類型支持 | 支持,但不如 dig 強大 | 支持多種記錄類型和自定義查詢 |
腳本支持 | 較弱,輸出格式固定 | 較強,支持自定義輸出 |
可用性 | 默認內置于 Windows 和 Unix | 通常需要額外安裝(如 bind-utils ) |
4.1 nslookup
- nslookup 是一個命令行工具,用于查詢域名系統(DNS)記錄。
- 允許你檢查域名到 IP 地址的解析、IP 地址到域名的反向解析,以及其他 DNS 信息。
apluser@ubuntu24-01:~$ nslookup www.google.com
Server: 127.0.0.53
Address: 127.0.0.53#53Non-authoritative answer:
Name: www.google.com
Address: 142.250.199.100
Name: www.google.com
Address: 2404:6800:4004:823::2004
4.2 dig
?dig
(Domain Information Groper)是一個功能更強大的工具,用于查詢 DNS 信息。它能顯示更多詳細信息,比如
- DNS 消息頭、
- TTL、
- 查詢時間
是網絡管理員的首選工具。
?dig命令示例
apluser@ubuntu24-01:~$ dig www.google.com; <<>> DiG 9.18.28-0ubuntu0.24.04.1-Ubuntu <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 44293
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 9;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.google.com. IN A;; ANSWER SECTION:
www.google.com. 5 IN A 172.217.31.132;; AUTHORITY SECTION:
google.com. 5 IN NS ns1.google.com.
google.com. 5 IN NS ns3.google.com.
google.com. 5 IN NS ns2.google.com.
google.com. 5 IN NS ns4.google.com.;; ADDITIONAL SECTION:
ns1.google.com. 5 IN AAAA 2001:4860:4802:32::a
ns2.google.com. 5 IN AAAA 2001:4860:4802:34::a
ns3.google.com. 5 IN AAAA 2001:4860:4802:36::a
ns4.google.com. 5 IN AAAA 2001:4860:4802:38::a
ns1.google.com. 5 IN A 216.239.32.10
ns2.google.com. 5 IN A 216.239.34.10
ns3.google.com. 5 IN A 216.239.36.10
ns4.google.com. 5 IN A 216.239.38.10;; Query time: 8 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Sun Dec 22 11:40:12 UTC 2024
;; MSG SIZE rcvd: 307
?只想獲取查詢結果而忽略其他信息
apluser@ubuntu24-01:~$ dig +short www.google.com
142.251.42.132
五. ss 查看網絡連接狀態
ss
是 Linux 系統上一個強大的命令行工具,用于顯示套接字統計信息。
它的功能類似于傳統的 netstat
,但性能更高,且支持更多功能。
ss
是 iproute2
工具包的一部分,適用于查看網絡連接狀態、套接字信息和網絡統計數據。
-l
:僅顯示監聽的套接字。-t
:顯示 TCP 連接。
apluser@ubuntu24-01:~$ ss -lt
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 4096 127.0.0.53%lo:domain 0.0.0.0:*
LISTEN 0 4096 127.0.0.54:domain 0.0.0.0:*
LISTEN 0 4096 *:ssh *:*
apluser@ubuntu24-01:~$
?僅顯示狀態為已建立的 TCP 連接
ss -t state ESTABLISHED
?配合 watch 命令實時監控
watch -n 1 ss -t state ESTABLISHED
?顯示所有源端口為 80 的 TCP 連接
- sport(source port):表示源端口。
ss -t sport = :80
?顯示所有目標端口為 443 的 TCP 連接
- dport(destination port):表示目標端口。
ss -t dport = :443