日常使用的網(wǎng)絡(luò)工具分享
前言
作為嵌入式linux開(kāi)發(fā)中我們經(jīng)常會(huì)調(diào)試網(wǎng)絡(luò),這個(gè)時(shí)候需要一些網(wǎng)絡(luò)工具輔助我們的工作,有一些是命令工具有些是GUI工具,這些生產(chǎn)力工具如何使用呢,今天做一個(gè)小分享(本篇文章主要介紹命令行工具)。
作者:良知猶存
轉(zhuǎn)載授權(quán)以及圍觀:歡迎關(guān)注微信公眾號(hào):羽林君
或者添加作者個(gè)人微信:become_me
wpa_cli wpa_supplicant命令 使用
這兩個(gè)工具使用是用來(lái)進(jìn)行手動(dòng)配置網(wǎng)絡(luò)的,平時(shí)遇到非UI界面的設(shè)備,機(jī)器本身聯(lián)網(wǎng)機(jī)制比較復(fù)雜的時(shí)候,我們可以使用wpa工具進(jìn)行手動(dòng)聯(lián)網(wǎng)(前提是設(shè)備里面支持)。
Wireless Tools、wpa_supplicant是兩種無(wú)線網(wǎng)絡(luò)配置工具,這里我使用了wpa_supplicant工具。
wpa_supplicant 是 wifi 客戶端(client)加密認(rèn)證工>具,并且是一個(gè)開(kāi)源的項(xiàng)目,已經(jīng)被移植到 Linux、Windows 以及很多嵌入式系統(tǒng)上。它是 WPA 的應(yīng)用層認(rèn)證客戶端,負(fù)責(zé)完成認(rèn)證相關(guān)的登錄、加密等工作。
wpa_supplicant是一個(gè)連接、配置WIFI的工具,它主要包含wpa_supplicant與wpa_cli兩個(gè)程序。wpa_supplicant是服務(wù)端,wap_cli是客戶端,一般情況下使用wpa_cli就可以操作WiFi。但是它不支持所有的驅(qū)動(dòng),可以瀏覽wpa_supplicant網(wǎng)站獲得它所支持的驅(qū)動(dòng)列表。另外,wpa_supplicant目前只能連接到那些你已經(jīng)配置好SSID的無(wú)線網(wǎng)絡(luò),也就是使用前需要配置好wpa_supplicant的配置文件wpa_supplicant.conf
wpa_supplicant 和 wpa_cli 的關(guān)系就像服務(wù)和客戶端的關(guān)系,后臺(tái)運(yùn)行 wpa_supplicant,使用 wpa_cli 來(lái)搜索、設(shè)置、和連接網(wǎng)絡(luò)。不過(guò) wpa_cli 并不是必須的軟件。
wpa_supplicant 是一個(gè)獨(dú)立運(yùn)行的守護(hù)進(jìn)程,其核心是一個(gè)消息循環(huán),在消息循環(huán)中處理 WPA 狀態(tài)機(jī)、控制命令、驅(qū)動(dòng)事件、配置信息等。
wpa_cli 有命令和交互的方式進(jìn)行操作
wpa_cli -i wlan0 scan //搜索附件wifi熱點(diǎn)
wpa_cli -i wlan0 scan_result //顯示搜索wifi熱點(diǎn)
wpa_cli -i wlan0 status //當(dāng)前WPA/EAPOL/EAP通訊狀態(tài)
執(zhí)行操作示例:我進(jìn)行了一個(gè)網(wǎng)絡(luò)的斷開(kāi)和重連
wpa_cli -i wlan0 disable_network 0 // 與network id 0的網(wǎng)絡(luò)斷開(kāi)
wpa_cli -i wlan0 list_network //列舉保存過(guò)得連接
wpa_cli -i wlan0 enable_network 0 //使能制定的ssid network id 0
wpa_cli -i wlan0 select_network <network id> //連接指定的ssid
wpa_cli -i wlan0 remove_network <network id> //將指定的網(wǎng)絡(luò)移除掉,必須先斷開(kāi)才行
wpa_cli -i wlan0 save_config //信息保存到默認(rèn)的配置文件中,/etc/wpa_supplicant.conf
斷開(kāi)連接
除此之外,我還會(huì)進(jìn)行wpa_supplicant.conf配置文件的修改,來(lái)配合聯(lián)網(wǎng)和斷網(wǎng),其中修改用vim操作,聯(lián)網(wǎng)使用wpa_supplicant命令。
ifconfig wlan0 up //打開(kāi)wlan0
wpa_supplicant -B -D nl80211 -i wlan0 -c /etc/wpa_supplicant.conf //指定.conf 配置文件連接
除了我這里簡(jiǎn)單的描述使用,大家也可以參考更詳細(xì)的文章:https://www.cnblogs.com/hokori/p/14168584.html
fuser、netstat、lsof端口占用查看工具使用
上面是網(wǎng)絡(luò)的連接,很多時(shí)候我們還要查看網(wǎng)絡(luò)端口占用的情況,下面有三個(gè)linux工具可以參考:
fuser可以顯示出當(dāng)前哪個(gè)程序在使用磁盤(pán)上的某個(gè)文件、掛載點(diǎn)、甚至網(wǎng)絡(luò)端口,并給出程序進(jìn)程的詳細(xì)信息。
netstat 命令用于顯示各種網(wǎng)絡(luò)相關(guān)信息,如網(wǎng)絡(luò)連接,路由表,接口狀態(tài) (Interface Statistics),masquerade 連接,多播成員 (Multicast Memberships) 等等。
lsof 命令可以查看進(jìn)程打開(kāi)的文件、目錄,還可以查看進(jìn)程監(jiān)聽(tīng)的端口等 socket 相關(guān)的信息。
fuser 查看端口占用
ps $(fuser 6666/tcp) 組合ps查看進(jìn)程信息
fuser 6666/tcp //查看tcp端口占用進(jìn)程
fuser 6000/udp //查看udp端口占用進(jìn)程

netstat 查看端口占用
netstat -tunlp | grep 40999 // 查看端口占用
-t (tcp) 僅顯示tcp相關(guān)選項(xiàng)
-u (udp)僅顯示udp相關(guān)選項(xiàng)
-n 拒絕顯示別名,能顯示數(shù)字的全部轉(zhuǎn)化為數(shù)字
-l 僅列出在Listen(監(jiān)聽(tīng))的服務(wù)狀態(tài)
-p 顯示建立相關(guān)鏈接的程序名

sudo lsof -i:6000 或者使用lsof -i查看全部端口占用
這樣我們知道了進(jìn)程占用的端口。以上這三者工具都有豐富的功能,我只是使用的它們其中一些功能,詳細(xì)可以參考這些文章
https://www.cnblogs.com/Sungeek/p/11857549.html https://www.jianshu.com/p/70be9a5694ef https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.HTML
更詳細(xì)的使用大家也可以自行搜索。
tcpdump使用
端口占用工具使用之后,我們需要進(jìn)行更深層次的數(shù)據(jù)分析,這個(gè)時(shí)候我們需要進(jìn)行網(wǎng)絡(luò)tcp和udp層次的數(shù)據(jù)分析,這個(gè)時(shí)候有很多工具例如Wireshark、Network Monitor和tcpdump,今天主要介紹tcpdump的使用。
tcpdump 是一款強(qiáng)大的網(wǎng)絡(luò)抓包工具,它使用 libpcap 庫(kù)來(lái)抓取網(wǎng)絡(luò)數(shù)據(jù)包,這個(gè)庫(kù)在幾乎在所有的 Linux/Unix 中都有。它的命令組合起來(lái)很豐富,今天只是介紹幾個(gè)工作中使用的命令,詳細(xì)大家可以參考這篇文章:https://juejin.cn/post/6844904084168769549
我們會(huì)多的使用tcpdump的基本數(shù)據(jù)命令,但是有時(shí)候我們需要詳細(xì)信息打印的捕獲比較,這個(gè)時(shí)候有以下命令可以幫助我們?cè)诮K端上詳細(xì)輸出信息:
tcpdump udp port 18290 -XX -vvv -nn
-v:當(dāng)分析和打印的時(shí)候,產(chǎn)生詳細(xì)的輸出。
-vv:產(chǎn)生比-v更詳細(xì)的輸出。
-vvv:產(chǎn)生比-vv更詳細(xì)的輸出。
-XX:輸出包的頭部數(shù)據(jù),會(huì)以16進(jìn)制和ASCII兩種方式同時(shí)輸出。
-nn :直接以IP以及PORT number顯示,而非主機(jī)名與服務(wù)名稱
下面是我比較常用的命令組合分享:
tcpdump -i wlan0 port 6666 //捕獲6666端口數(shù)據(jù)
tcpdump -i wlan0 host 192.168.1.111 //指定IP捕獲
tcpdump -i wlan0 port 6666 -XX -vvv -nn //詳細(xì)信息捕獲
tcpdump -i wlan0 dst 192.1168.1.111 -XX -vvv -nn //控制輸出ip篩選
tcpdump -i wlan0 net 192.168.1 -XX -vvv -nn //控制總網(wǎng)段捕獲
tcpdump -i wlan0 dst net 192.168.1 -XX -vvv -nn 、、控制輸出網(wǎng)段捕獲
示例:sudo tcpdump -i lo portrange 5000-8000 -vv -XX -nn 5000-8000端口進(jìn)行捕獲數(shù)據(jù),檢查雙方鏈路通信
此外我還可以做tcp網(wǎng)路的連接捕獲:
這個(gè)是三次握手
tcp 協(xié)議的三次握手過(guò)程,第一條就是 SYN 報(bào)文,這個(gè)可以通過(guò) Flags [S] 看出,而第二條數(shù)據(jù)的 [S.] 表示 SYN-ACK,就是 SYN 報(bào)文的應(yīng)答報(bào)文。下面是常見(jiàn)的 TCP 報(bào)文的 Flags:
[S] : SYN(開(kāi)始連接)
[.] : 沒(méi)有 Flag
[P] : PSH(推送數(shù)據(jù))
[F] : FIN (結(jié)束連接)
[R] : RST(重置連接)
這個(gè)是四次揮手

結(jié)語(yǔ)
這就是我自己的一些網(wǎng)絡(luò)工具使用分享。如果大家有更好的想法和需求,也歡迎大家加我好友交流分享哈。
作者:良知猶存,白天努力工作,晚上原創(chuàng)公號(hào)號(hào)主。公眾號(hào)內(nèi)容除了技術(shù)還有些人生感悟,一個(gè)認(rèn)真輸出內(nèi)容的職場(chǎng)老司機(jī),也是一個(gè)技術(shù)之外豐富生活的人,攝影、音樂(lè) and 籃球。關(guān)注我,與我一起同行。
???????????????? END ????????????????
推薦閱讀
【1】jetson nano開(kāi)發(fā)使用的基礎(chǔ)詳細(xì)分享
【2】Linux開(kāi)發(fā)coredump文件分析實(shí)戰(zhàn)分享
【3】CPU中的程序是怎么運(yùn)行起來(lái)的 必讀
【4】cartographer環(huán)境建立以及建圖測(cè)試
【5】設(shè)計(jì)模式之簡(jiǎn)單工廠模式、工廠模式、抽象工廠模式的對(duì)比
本公眾號(hào)全部原創(chuàng)干貨已整理成一個(gè)目錄,回復(fù)[ 資源 ]即可獲得。
