建議收藏:常用網(wǎng)絡(luò)定位工具!說不定什么時(shí)候遇到網(wǎng)絡(luò)問題了呢?
項(xiàng)目日常運(yùn)維的過程中,經(jīng)常會遇到各種奇奇怪怪的網(wǎng)絡(luò)問題。那么排查網(wǎng)絡(luò)問題,就成為一個(gè)合格的程序員必備技能。這里列舉出一些常用的指令,用于日常工作中快速定位網(wǎng)絡(luò)問題。

ping
這個(gè)是大家經(jīng)常用到的一個(gè)小工具,用于檢查兩臺服務(wù)器之間是否能夠成功交換數(shù)據(jù)包。?ping指令向?qū)Ψ街鳈C(jī)發(fā)送?ICMP?報(bào)文。當(dāng)能成功?ping?通時(shí)表示兩臺主機(jī)之間的網(wǎng)絡(luò)鏈路是暢通的。如果?ping?不通,首先需要確認(rèn)對方是否關(guān)停了?ping?服務(wù),如果沒有關(guān)停,就需要檢查雙方的網(wǎng)絡(luò)鏈接問題了。
telnet
該指令主要用于檢查到對方端口的網(wǎng)絡(luò)聯(lián)通性,如果?telnet?能通,一般證明?TCP?三次握手已經(jīng)建立成功,也就是網(wǎng)絡(luò)層是暢通的。如果?telnet?不通,需要確認(rèn)對方是否已經(jīng)啟動(dòng)相應(yīng)服務(wù)端口,如果已啟動(dòng),那么就要檢查雙方的防火墻策略等問題。

ifconfig
ifconfig?指令除了可以查看網(wǎng)卡信息外,還可以修改網(wǎng)絡(luò)配置。比如查看網(wǎng)卡信息?ifconfig -a?;啟動(dòng)網(wǎng)卡?ifconfig eth0 up?;關(guān)停網(wǎng)卡?ifconfig eth0 down?等操作。
除了使用?ifconfig?查看及配置網(wǎng)卡信息外,還可以通過?ip link show?查看網(wǎng)卡信息,啟動(dòng)網(wǎng)卡信息?ip link set down eth0?; 關(guān)停網(wǎng)卡?ip link set up eth1?等操作。
注意:啟動(dòng)關(guān)停網(wǎng)卡在?SSH?鏈接的情況下,盡量不要操作。
route
route?指令一般用于查看和配置服務(wù)器路由信息。比如查看路由信息?route -n?或者?route -nee?添加或者刪除路由信息?route {add | del } -net {NETWORK-ADDRESS} netmask {NETMASK} dev {INTERFACE-NAME}?等等。
同樣,除了使用?route?指令外也可以使用?ip route show?查看路由信息;和?route -n?是等效的。這里更推薦使用?ip route?命令。
traceroute
該指令用于查看從源地址到目的地址的路由路徑。比如?traceroute www.baidu.com?用于判斷你和目標(biāo)地址之間經(jīng)過了哪些網(wǎng)絡(luò)設(shè)備。?windows?下是?tracert

netstat
這個(gè)指令比較強(qiáng)大,也是程序員日常用的比較多的一個(gè)指令。該指令可以顯示服務(wù)器的網(wǎng)絡(luò)狀態(tài),比如,顯示服務(wù)器當(dāng)前所有?socket?鏈接?netstat -a?; 顯示?UDP/TCP?端口的使用情況?netstat -apu/netstat -apt?; 顯示網(wǎng)絡(luò)統(tǒng)計(jì)信息?netstat -s?; 查看?8080?端口的狀態(tài)?netstat -anp|grep 8080?。
和?netstat?等價(jià)的指令是?ss?指令。?ss -l?列出所有本機(jī)已經(jīng)打開的端口。?ss -t/u -a?顯示所有?tcp/udp?鏈接。查看某個(gè)鏈接屬于哪個(gè)進(jìn)程?ss -tp?。查看本地的端口狀態(tài)?ss -t src ip:8080?。這里更推薦使用?ss?指令。
tcpdump
網(wǎng)絡(luò)抓包工具,當(dāng)遇到奇怪的網(wǎng)絡(luò)問題時(shí),通過?tcpdump?進(jìn)行網(wǎng)絡(luò)抓包,然后進(jìn)行分析定位問題。根據(jù)源IP進(jìn)行抓包?tcpdump -i eth2 src 192.168.199.100?即只抓取通過?eth2?這塊網(wǎng)卡的且源地址為?192.168.199.100?的網(wǎng)絡(luò)包。當(dāng)然也可以指定端口抓包,比如?tcpdump src port 8088???傊撁罘浅?qiáng)大,這里不做更多的詳細(xì)介紹,感興趣的可以自行了解。
nmap
這是一個(gè)網(wǎng)絡(luò)嗅探和掃描工具,做網(wǎng)絡(luò)安全的小伙伴會比較熟悉。經(jīng)常用來檢查對方主機(jī)開放了哪些端口。比如查看對方主機(jī)開放了哪些端口?nmap -PS 192.168.199.100?,還可以探測目標(biāo)IP的操作系統(tǒng)?nmap -O 192.168.199.100???傊撁钭鼍W(wǎng)絡(luò)安全的會用的比較多,程序員使用的會比較少一些,感興趣的可以深入研究,該指令及其強(qiáng)大。
總結(jié)
上面提到的小工具,對于有些問題的定位,可以通過兩個(gè)不同的指令達(dá)到同樣的效果。比如?ifconfig -a?和?ip link show?;?route -n?和?ip route show?;以及?netstat?和?ss?。出現(xiàn)這樣的情況是因?yàn)椋?ifconfig?和?netstat?等命令來自于?net-tools?工具包,而?ip link?和?ss等指令來自?iproute2?工具包。?net-tools?已經(jīng)停止開發(fā)了,在很多新版的操作系統(tǒng)里面已經(jīng)不是默認(rèn)自帶的工具包了,如果想使用需要單獨(dú)安裝。?iproute2?是用來替換?net-tools?的,很多新版?linux?都是默認(rèn)安裝的。而且?iproute2?包中的很多指令在功能和性能上都要比?net-tools包中提供的指令更強(qiáng)大。
我這里從網(wǎng)上找了一張圖片用來說明倆個(gè)工具包的指令對比。

最后還有句話是這么說的:栽一棵樹最好的時(shí)間是十年前,其次是現(xiàn)在。對于學(xué)習(xí)編程或者正在工作的朋友,如果你想更好的提升你的編程能力幫助你提升水平!筆者這里或許可以幫到你~
微信公眾號:C語言編程學(xué)習(xí)基地
分享(源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長比自己琢磨更快哦!
