Linux網絡故障排查命令(ifconfig、ping、telnet、netstat、lsof、nc、curl、tcpdump)

目錄

    • ifconfig
      • -s,顯示網卡信息的精簡列表
      • -a、up、down
      • 將IP地址綁定到某個網卡,以及解綁操作
    • ping
    • telnet
    • netstat
    • lsof
    • nc
      • 模擬一個服務器程序和客戶端程序進行通信
      • 發送文件
    • curl
    • tcpdump
      • 參數
      • 連接一個正常的監聽端口

ifconfig

該命令用來查看當前系統的網卡和IP地址信息

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ ifconfig
enp1s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500ether b4:a9:fc:80:03:03  txqueuelen 1000  (以太網)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536inet 127.0.0.1  netmask 255.0.0.0inet6 ::1  prefixlen 128  scopeid 0x10<host>loop  txqueuelen 1000  (本地環回)RX packets 15831  bytes 3201620 (3.2 MB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 15831  bytes 3201620 (3.2 MB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0wlp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.1.109  netmask 255.255.255.0  broadcast 192.168.1.255inet6 fe80::c1dc:2b2b:b4d4:d4bd  prefixlen 64  scopeid 0x20<link>ether 4c:eb:bd:0c:f8:f5  txqueuelen 1000  (以太網)RX packets 4486  bytes 2191259 (2.1 MB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 2383  bytes 643251 (643.2 KB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我們來解釋一下上面的輸出信息:
以上顯示了
本機當前激活的網卡信息:如lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
每個激活的網卡的IPv4、IPv6地址:如inet 127.0.0.1 、inet6 fe80::c1dc:2b2b:b4d4:d4bd
子網掩碼:如netmask 255.0.0.0
廣播地址:如broadcast 192.168.1.255

-s,顯示網卡信息的精簡列表

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ ifconfig -s
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR Flg
enp1s0    1500        0      0      0 0             0      0      0      0 BMU
lo       65536   113980      0      0 0        113980      0      0      0 LRU
wlp2s0    1500    10199      0      0 0          4491      0      0      0 BMRU

-a、up、down

ifconfig只會顯示激活的網卡信息,-a選項可以顯示所有網卡信息。

ifconfig Iface up	# 激活名為Iface的網卡
ifconfig Iface down	# 禁用名為Iface的網卡

將IP地址綁定到某個網卡,以及解綁操作

# 將指定ip地址綁定到某個網卡上
ifconfig 網卡名 add IP地址
# 從某個網卡解綁指定的IP地址
ifconfig 網卡名 del IP地址

ping

ping命令一般用于偵測本機到目標主機的網絡是否暢通。

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ ping 120.55.94.78
PING 120.55.94.78 (120.55.94.78) 56(84) bytes of data.
64 比特,來自 120.55.94.78: icmp_seq=1 ttl=55 時間=9.87 毫秒
64 比特,來自 120.55.94.78: icmp_seq=2 ttl=55 時間=6.61 毫秒
64 比特,來自 120.55.94.78: icmp_seq=3 ttl=55 時間=6.93 毫秒
64 比特,來自 120.55.94.78: icmp_seq=4 ttl=55 時間=10.4 毫秒
64 比特,來自 120.55.94.78: icmp_seq=5 ttl=55 時間=6.67 毫秒
64 比特,來自 120.55.94.78: icmp_seq=6 ttl=55 時間=6.96 毫秒
64 比特,來自 120.55.94.78: icmp_seq=7 ttl=55 時間=6.97 毫秒
64 比特,來自 120.55.94.78: icmp_seq=8 ttl=55 時間=6.96 毫秒
64 比特,來自 120.55.94.78: icmp_seq=9 ttl=55 時間=6.94 毫秒
64 比特,來自 120.55.94.78: icmp_seq=10 ttl=55 時間=6.93 毫秒
64 比特,來自 120.55.94.78: icmp_seq=11 ttl=55 時間=6.98 毫秒
64 比特,來自 120.55.94.78: icmp_seq=12 ttl=55 時間=6.92 毫秒
64 比特,來自 120.55.94.78: icmp_seq=13 ttl=55 時間=6.59 毫秒
64 比特,來自 120.55.94.78: icmp_seq=14 ttl=55 時間=6.89 毫秒
64 比特,來自 120.55.94.78: icmp_seq=15 ttl=55 時間=6.97 毫秒
64 比特,來自 120.55.94.78: icmp_seq=16 ttl=55 時間=8.31 毫秒
64 比特,來自 120.55.94.78: icmp_seq=17 ttl=55 時間=7.80 毫秒
64 比特,來自 120.55.94.78: icmp_seq=18 ttl=55 時間=6.95 毫秒
64 比特,來自 120.55.94.78: icmp_seq=19 ttl=55 時間=10.3 毫秒
64 比特,來自 120.55.94.78: icmp_seq=20 ttl=55 時間=10.2 毫秒
64 比特,來自 120.55.94.78: icmp_seq=21 ttl=55 時間=9.88 毫秒
^C
--- 120.55.94.78 ping 統計 ---
已發送 21 個包, 已接收 21 個包, 0% 包丟失, 耗時 20028 毫秒
rtt min/avg/max/mdev = 6.587/7.762/10.386/1.374 ms

上面輸出顯示了目標網絡可達。在linux上,如果目標網絡不可達,則使用ping命令會一直發送而無輸出結果,如:

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ ping 120.55.94.79
PING 120.55.94.79 (120.55.94.79) 56(84) bytes of data.
^C
--- 120.55.94.79 ping 統計 ---
已發送 5 個包, 已接收 0 個包, 100% 包丟失, 耗時 4080 毫秒

ping的目標也可以是個域名:

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ ping https://www.baidu.com/
ping: https://www.baidu.com/: 未知的名稱或服務
dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ ping www.baidu.com
PING www.a.shifen.com (36.152.44.95) 56(84) bytes of data.
64 比特,來自 36.152.44.95 (36.152.44.95): icmp_seq=1 ttl=56 時間=32.5 毫秒
64 比特,來自 36.152.44.95 (36.152.44.95): icmp_seq=2 ttl=56 時間=11.9 毫秒
64 比特,來自 36.152.44.95 (36.152.44.95): icmp_seq=3 ttl=56 時間=10.4 毫秒
^C
--- www.a.shifen.com ping 統計 ---
已發送 3 個包, 已接收 3 個包, 0% 包丟失, 耗時 2003 毫秒
rtt min/avg/max/mdev = 10.444/18.269/32.466/10.056 ms

ping命令是通過發送ICMP數據包實現的。

telnet

如果一個服務程序對外開啟了監聽,我們可以使用telnet ip port的方式連接上去:
Web服務器默認的端口號是80,所以我們可以連接成功

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ telnet www.baidu.com 80
Trying 36.152.44.95...
Connected to www.a.shifen.com.
Escape character is '^]'.

也就是說我們可以通過telnet命令檢測指定IP地址和端口號的監聽服務是否存在
為了檢測一個服務是否正常對外服務,一般先用ping檢測是否能到達該IP地址,然后再用telnet檢測是否能連接上去。

netstat

該命令經常用于查看網絡連接狀態
下面是它的一些參數:

-a:顯示所有選項
-t:僅顯示tcp相關選項
-u:僅顯示udp相關選項
-n:不顯示別名
-l:僅列出處于監聽狀態下的服務
-p:顯示建立相關鏈接的程序名
-r:顯示路由信息、路由表
-e:顯示擴展信息,如uid
-s:按各個協議進行統計
-c:每隔一段事件執行netstat

對于一些有別名的IP地址和端口號,如127.0.0.1的別名是localhost、80的端口會被顯示成http,加上n之后就只會顯示數字了:
在這里插入圖片描述

lsof

lsof(list opened filedescriptor):列出已經打開的文件描述符
一般來說,lsof的輸出較多,可以使用grep命令來過濾如:

lsof -i | grep xxx

在這里插入圖片描述
也可以使用-p來過濾出指定pid的進程

lsof -p pid

nc

nc即netcat命令,常用語模擬一個服務器程序被其他客戶端連接,或者模擬一個客戶端連接其他服務器,連接之后就可以進行數據收發。默認使用TCP,加上-u選項使用的就是UDP

模擬一個服務器程序和客戶端程序進行通信

使用-l,在某個ip地址和端口上開啟一個監聽服務,以便讓其他客戶端連接,為了顯示詳細信息,可以加上-v

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ nc -v -l 0.0.0.0 6000
Listening on 0.0.0.0 6000

啟動了一個監聽服務器,監聽IP地址為0.0.0.0,這樣機器就可以被外網訪問了,監聽端口為6000
模擬客戶端程序不需要加-l,直接寫上IP地址和端口號即可:

在這里插入圖片描述

發送文件

這里接受文件方是服務器,發送文件方是客戶端。
服務端,接受命令

nc -l IP地址 端口號 > 接受后存儲的文件名

客戶端,發送命令

nc IP地址 端口號 < 發送的文件名

使用的時候先開服務端的監聽再開客戶端。

curl

用法:

curl 某個url
curl http://www.baidu.com

在這里插入圖片描述
這樣的結果就是將目標網頁的內容輸出到shell窗口上,當然也可以保存:

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ curl http://www.baidu.com > ./Desktop/testBaidu.html% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed
100  2381  100  2381    0     0  58073      0 --:--:-- --:--:-- --:--:-- 58073

HTTP常用的請求方式是GET和POST,我們可以使用-X選項顯式指定方式,不指定的時候默認是GET方式:

dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ curl -X GET http://www.baidu.com/index.php?s=9
<!DOCTYPE html>
<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div class=s_form> <div class=s_form_wrapper> <div id=lg> <img hidefocus=true src=//www.baidu.com/img/bd_logo1.png width=270 height=129> </div> <form id=form name=f action=//www.baidu.com/s class=fm> <input type=hidden name=bdorz_come value=1> <input type=hidden name=ie value=utf-8> <input type=hidden name=f value=8> <input type=hidden name=rsv_bp value=1> <input type=hidden name=rsv_idx value=1> <input type=hidden name=tn value=baidu><span class="bg s_ipt_wr"><input id=kw name=wd class=s_ipt value maxlength=255 autocomplete=off autofocus></span><span class="bg s_btn_wr"><input type=submit id=su value=百度一下 class="bg s_btn"></span> </form> </div> </div> <div id=u1> <a href=http://news.baidu.com name=tj_trnews class=mnav>新聞</a> <a href=http://www.hao123.com name=tj_trhao123 class=mnav>hao123</a> <a href=http://map.baidu.com name=tj_trmap class=mnav>地圖</a> <a href=http://v.baidu.com name=tj_trvideo class=mnav>視頻</a> <a href=http://tieba.baidu.com name=tj_trtieba class=mnav>貼吧</a> <noscript> <a href=http://www.baidu.com/bdorz/login.gif?login&amp;tpl=mn&amp;u=http%3A%2F%2Fwww.baidu.com%2f%3fbdorz_come%3d1 name=tj_login class=lb>登錄</a> </noscript> <script>document.write('<a href="http://www.baidu.com/bdorz/login.gif?login&tpl=mn&u='+ encodeURIComponent(window.location.href+ (window.location.search === "" ? "?" : "&")+ "bdorz_come=1")+ '" name="tj_login" class="lb">登錄</a>');</script> <a href=//www.baidu.com/more/ name=tj_briicon class=bri style="display: block;">更多產品</a> </div> </div> </div> <div id=ftCon> <div id=ftConw> <p id=lh> <a href=http://home.baidu.com>關于百度</a> <a href=http://ir.baidu.com>About Baidu</a> </p> <p id=cp>&copy;2017&nbsp;Baidu&nbsp;<a href=http://www.baidu.com/duty/>使用百度前必讀</a>&nbsp; <a href=http://jianyi.baidu.com/ class=cp-feedback>意見反饋</a>&nbsp;京ICP證030173號&nbsp; <img src=//www.baidu.com/img/gs.gif> </p> </div> </div> </div> </body> </html>dyy@dyy-Lenovo-ThinkBook-14-IIL:~$ curl -X POST -d 'somepostdata' 'https://www.somesite.com/api/vl/chat'
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>openresty/1.13.6.1</center>
</body>
</html>

tcpdump

參數

tcpdump是一個linux上的抓包工具,在sudo權限下使用
常用命令選項如下:
1、-i:指定要捕獲的目標網卡名字,網卡名可以使用ifconfig獲得,如果要抓取所有網卡上的包,使用any關鍵字:

## 抓取網卡lo上的包
tcpdump -i lo
## 抓取所有網卡上的包
tcpdump -i any

2、-X:以ASCII和十六進制形式輸出捕獲的數據包內容,減去鏈路層的包頭信息;
-XX:以ASCII和十六進制形式輸出捕獲的數據包內容,包括鏈路層的包頭信息;
3、-n:不要將IP地址顯示成別名
-nn:不要將IP地址和端口顯示成別名
4、-S:以絕對值顯示包的ISN(包序列號),默認以上一個包的偏移量顯示
5、-vv-vvv:顯示詳細抓包數據
6、-w:將抓取的包的原始信息,寫入文件中

tcpdump -i any -w filename

7、-r:從保存的文件包中讀取數據包信息

tcpdump命令還支持各種數據包過濾的表達式:

## 僅僅顯示經過8888端口的數據包,包括tcp和udp的8888
tcpdump -i any 'port 8888'
## 僅僅顯示經過tcp 8888 渡口的數據包
tcpdump -i any 'tp port 8888'
## 僅僅顯示源端口是tcp 8888的數據包
tcpdump -i any 'tcp src port 8888'
## 僅僅顯示源端口tcp8888或者目標端口是udp 8888的數據包
tcpdump -i any 'tcp src port 8888 or udp dst port 8888'

連接一個正常的監聽端口

創建一個服務器監聽程序:

nc -v -l 127.0.0.1 12345

在另外一個窗口,對12345端口進行抓包

 tcpdump -i any 'port 12345' -XSX -nn -vv

在另外一個窗口創建一個客戶端發送數據:

nc -v 127.0.0.1 12345

在這里插入圖片描述
在沒有發送數據之前,有三個包:
在這里插入圖片描述
就是TCP連接的三次握手數據包。三次握手的過程:
客戶端先向服務器發送一個SYN;
服務器應答一個SYN+ACK,應答的序列號遞增1
客戶端應答一個ACK。
我們可以關注一下上面的
Flags:
S -> S. ->.
seq 和 ack:
1737383646
->
2670654383, 1737383647
->
1737383647, 2670654384
顯然是正確的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/376802.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/376802.shtml
英文地址,請注明出處:http://en.pswp.cn/news/376802.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

My Oracle Support Metalink站點最近將放棄flash界面轉而使用ADF HTML

根據oracle官方博客的報道《The New My Oracle Support User Interface (HTML-based) 》&#xff0c; MY ORACLE SUPPORT開發team會在最近將support.oracle.com站點從原來的flash界面遷移到基于ADF HTML的用戶界面上。 實際上在2012年的 January 27&#xff0c; MOS開發team就…

BF算法

BF(Brute Force)算法是普通的模式匹配算法&#xff0c;BF算法的思想就是將目標串S的第一個字符與模式串T的第一個字符進行匹配&#xff0c;若相等&#xff0c;則繼續比較S的第二個字符和 T的第二個字符&#xff1b;若不相等&#xff0c;則比較S的第二個字符和T的第一個字符&…

心跳檢測以及應用層心跳包機制設計

博主聯系方式&#xff1a; QQ:1540984562 微信&#xff1a;wxid_nz49532kbh9u22 QQ交流群&#xff1a;750313950&#xff08;嵌入式方向&#xff09; QQ交流群&#xff1a;856398158&#xff08;后端方向&#xff09; 目錄心跳檢測應用場景死連接情況保活傳遞有效業務數據心跳包…

【APUE】孤兒進程與僵死進程

基本概念&#xff1a; 在unix/linux中&#xff0c;正常情況下&#xff0c;子進程是通過父進程創建的&#xff0c;子進程在創建新的進程。子進程的結束和父進程的運行是一個異步過程,即父進程永遠無法預測子進程 到底什么時候結束。 當一個 進程完成它的工作終止之后&#xff0c…

一個DBA的工作寫照

一個DBA的工作寫照&#xff0c; 一個DBA的內心 Know the DBA Mind! DBA也是 IT民工啊&#xff0c; 民工何苦為難民工&#xff01; 轉載于:https://www.cnblogs.com/macleanoracle/archive/2013/03/19/2968227.html

使用mutex和條件變量實現信號量

c提供了互斥量&#xff1a;mutex和條件變量&#xff1a;condition_variable&#xff0c;但是并沒有信號量&#xff1a;semaphore。而linux和windows系統庫會提供的。下面簡單介紹一下信號量的特性&#xff0c;然后給出一個簡單的demo&#xff0c;使用mutex condition_variable…

2014-07-28 使用Axure RP進行手機端BBS的原型設計

今天是在吾索實習的第14天。因本公司的微信公眾號需要有一個對外的技術交流平臺&#xff0c;所以我們小組打算設計一個手機端的BBS以滿足其要求。首先&#xff0c;我們需要做的是進行數據庫設計與原型設計&#xff0c;然后提交給經理驗收&#xff0c;看看是否合理&#xff0c;是…

jquery exif + lazyload實現延遲加載并顯示相片exif信息

對一個攝影愛好者來說&#xff0c;從高手的作品中學習是非常有用的。而照片的光圈&#xff0c;快門&#xff0c;感光度等信息是關注的重點。 上代碼&#xff1a; 1 <script src"../js/jquery.js" type"text/javascript"></script>2 <script…

undefined reference to `pthread_create‘(linux下Clion使用thread報錯)

完整報錯&#xff1a; [ Build | AsyncLogger | Debug ] /snap/clion/169/bin/cmake/linux/bin/cmake --build /home/dyy/CLionProjects/AsyncLogger/cmake-build-debug --target AsyncLogger -- -j 6 [ 50%] Linking CXX executable AsyncLogger /usr/bin/ld: CMakeFiles/Asy…

UVALive 6257 Chemist's vows --一道題的三種解法(模擬,DFS,DP)

題意&#xff1a;給一個元素周期表的元素符號&#xff08;114種&#xff09;&#xff0c;再給一個串&#xff0c;問這個串能否有這些元素符號組成&#xff08;全為小寫&#xff09;。 解法1&#xff1a;動態規劃 定義&#xff1a;dp[i]表示到 i 這個字符為止&#xff0c;能否有…

.NET開發相關使用工具和框架【轉載】

開發類 visual_studio 2005-2012系列----------語言開發工具 Visio 2003 / Power Desiger -----------建模工具 Dreamweaver_CS5 --------------網頁設計 ExpressionStudio 4 / blend 4 -------------wpf/silverlight設計工具 開發輔助類 SVN 主程序 ---------------文件控制 I…

JAVA數組的定義及用法

數組是有序數據的集合&#xff0c;數組中的每一個元素具有同樣的數組名和下標來唯一地確定數組中的元素。 1. 一維數組 1.1 一維數組的定義 type arrayName[]; type[] arrayName; 當中類型(type)能夠為Java中隨意的數據類型&#xff0c;包含簡單類型組合類型&#xff0c;數組名…

php操作httpsqs

php初始化httpsqs: include_once("httpsqs_client.php");$httpsqs new httpsqs("127.0.0.1", 1218, "mypass123", "utf-8"); php操作httpsqs:常用命令 操作入隊&#xff1a; $result $httpsqs->put(xiongwei2, test1); 獲取隊列中…

異步日志系統設計demo

目錄簡單版本1優化版本1優化版本2對于QPS要求很高或者對性能有一定要求的服務器程序&#xff0c;同步寫日志會對服務的關鍵性邏輯的快速執行和及時響應帶來一定的性能損失&#xff0c;因為寫日志時等待磁盤IO完成工作也需要一定時間。為了減少這種損失&#xff0c;一般采用異步…

js unix時間戳轉換

一、unix時間戳轉普通時間&#xff1a; var unixtime1358932051; var unixTimestamp new Date(unixtime* 1000); commonTime unixTimestamp.toLocaleString(); alert("普通時間為&#xff1a;"commonTime); 二、普通時間轉unix時間戳 var str "2013-01-01 00…

hdu 1025(最長非遞減子序列的n*log(n)求法)

題目鏈接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1025 經典題。。。最長非遞減序列的n*log(n)求法。。。orz... View Code 1 #include<iostream>2 const int N500007;3 using namespace std;4 int city[N];5 int dp[N];//dp[i]保存的是長度為i的最長不降…

消息隊列重要機制講解以及MQ設計思路(kafka、rabbitmq、rocketmq)

目錄《Kafka篇》簡述kafka的架構設計原理&#xff08;入口點&#xff09;消息隊列有哪些作用&#xff08;簡單&#xff09;消息隊列的優缺點&#xff0c;使用場景&#xff08;基礎&#xff09;消息隊列如何保證消息可靠傳輸死信隊列是什么&#xff1f;延時隊列是什么&#xff1…

js判斷手機瀏覽器

最新瀏覽器識別合并。 demo&#xff1a;http://v.qq.com -> http://v.qq.com/h5    http://v.qq.com/ -> http://v.qq.com/h5    http://v.qq.com/h5 -> http://v.qq.com/h5 <script type"text/javascript"> (function(W){ …

數據庫歸檔模式

1、在sys身份下登陸oracle&#xff0c;執行命令archive log list; SQL> archive log list; Database log mode Archive Mode Automatic archival Enabled Archive destination USE_DB_RECOVERY_FILE_DEST Oldest online log sequence …

轉載|網絡編程中阻塞式函數的底層邏輯

逛知乎看到的&#xff0c;覺得寫的挺透徹的&#xff0c;轉載一下&#xff0c;原文鏈接&#xff1a;Unix網絡編程里的阻塞是在操作系統的內核態創建一個線程來死循環嗎&#xff1f; 原文以阻塞式的recv函數作為講解&#xff0c;但是所有阻塞式的api底層邏輯基本相通。 下面是正文…