(1.)是否接入到鏈路bash
(2.)是否啓用了相應的網卡服務器
(3.)本地網絡是否鏈接網絡
(4.)DNS故障tcp
(5.)可否路由到目標主機工具
(6.)遠程端口是否開放spa
2.若是是網絡速度慢,通常有如下幾個方式定位問題源:code
(1.)DNS是不是問題的源頭cdn
(2.)查看路由過程當中哪些節點是瓶頸blog
(3.) 查看帶寬的使用狀況排序
通常來講當存在網絡不通的故障時,訪問出端和入端的信息是咱們都要收集的,目的在於肯定問題所在的主機或者區段。假如a不能訪問c而b可以訪問c,那麼很明顯問題出在a或a到c的網絡上,而經過同一子網中的幾臺機器a、b能夠正常訪問網絡,卻不能訪問c,那麼多是這個網絡到c存在問題,或c存在問題。
一:物理鏈路是否連通
#ethtool eth0
例如:使用ethtool 查看 eth0 的物理鏈接 其中Speed: 1000Mb/s 顯示了當前網卡的速度;Duplex: Full顯示了當前網絡支持全雙工;Link detected: yes 顯示當前網卡和網絡的物理鏈接正常。一般網速和全/半雙工狀態是主機和網絡協議商自動協商的,例如這裏第8行的 auto-negotiation。若是發現Duplex行的雙工被設置成了Half,能夠手動將其改成全雙工網絡:
# ethtool -s eth0 autoneg off duplex full
複製代碼
二: 網卡是否正常啓用
通常網絡物理鏈接故障的狀況並很少見,當排除物理鏈接上的問題後,須要進一步查看網卡的工做狀態。
例如:使用ifconfig命令檢查網卡eth1狀態 輸出的信息中,第二行顯示了對該網卡的配置,包括IP,子網掩碼等,這裏能夠檢查是否出現錯配,若是這一行顯示不正確,那必定是網卡沒有正確配置開啓。
• 基於Debian的Linux的(永久)網絡配置文件在/etc/network/interfaces,
• 基於Red Hat的Linux的(永久)網絡配置文件在/etc/sysconfig/network_scripts/ifcfg-<interface>
複製代碼
三。是否正確設置網關
若是網卡已經正常啓動,須要確認目標網絡接口是否正確配置網關,同時主機和網關之間的鏈接沒有問題,經過route命令和ping命令結合完成這一階段的排查。 例如使用route命令查看內核路由表。
#route -n
複製代碼
route -n 以IP而不是主機名的形式顯示網關等信息,一方面更快,另外一方面不涉及DNS,經過route命令查看內核路由,檢驗具體的網卡是否鏈接到目標網路的路由,以後就能夠嘗試ping 網關,排查與網關之間的鏈接。 若是沒法ping通網關,多是網關限制了ICMP數據包,或者交換機設置的問題。
四. DNS工做情況
有些網絡問題是DNS故障或配置不當形成的,nslookup和dig命令可以用來排查DNS問題。若是這裏nslookup命令沒法解析目標域名,則頗有多是DNS配置不當,到/etc/resolv.conf文件中查看是否存在域名服務器的配置:
及時生效的DNS配置——/etc/resolv.conf文件。
永久生效的DNS配置——/etc/networks/interfaces文件
Dig 域名查詢工具
#dig +trace baidu.com
複製代碼
若是咱們的DNS服務器在一個子網內,而沒法ping通它,這個DNS服務器極可能已經宕機。
五。使用nmap工具檢測端口開放狀況
# nmap -p 22 220.181.111.188
複製代碼
一樣的服務器,使用nmap檢測,觀察到第7行,說明實際上該服務器是啓用了22端口的,可是防火牆過濾了數據包,若是端口真的沒有啓用,那麼第7行的STATE將顯示closed,而不是filtered。開放的端口其狀態將是open。這時就能夠了解,端口沒法鏈接的緣由是端口關閉仍是防火牆過濾了。
端口開啓的命令是:nc -lp 23 &(打開23端口,即telnet)
六.本機查看監聽端口
若是要在本地查看某個端口是否開放,可使用以下命令:
# netstat -lnp | grep PORT
複製代碼
其中,參數:
• -l,顯示正在監聽的套接字
• -p,顯示套接字所屬的進程ID和進程名
• -n,以數字形式顯示地址
其中第一列是套接字通訊協議,第2列和第3列顯示的是接收和發送隊列,第4列是主機監聽的本地地址,反映了該套接字監聽的網絡;第6列顯示當前套接字的狀態,最後一列顯示打開端口的進程。
七。查看防火牆規則
使用# iptables –L命令查看當前主機的防火牆。 使用# iptables –F命令清理當前主機的防火牆規則。
八。網絡較慢的排查。
網絡較慢的排查事實上比網絡不通的排查更有挑戰,由於不少時候多是運營商、DNS等的緣由,這些故障經常不在咱們的控制範圍以內,只能收集證據向其反饋或對其進行投訴。
(1.)mtr 不只能夠查看路由的正確性,還能夠查看網絡中每一跳的延時,從而定位延時最高的網絡區段。
mtr -r baidu.com
複製代碼
-r 選項是以報告的形式把返回結果顯示出來。
不只能夠查看路由的正確性,還能夠查看網絡中每一跳的延時,從而定位延時最高的網絡區段。
(2)iftop
iftop命令相似於top命令,查看哪些網絡鏈接佔用的帶寬較多。
該命令按照帶寬佔用高低排序,能夠肯定那些佔用帶寬的網絡鏈接,最上方的一行刻度是整個網絡的帶寬比例,下面第1列是源IP,第2列是目標IP,箭頭表示了兩者之間是否在傳輸數據,以及傳輸的方向。最後三列分別是2s、10s、40s時兩個主機之間的數據傳輸速率。
最下方的TX、RX分別表明發送、接收數據的統計,TOTAL則是數據傳輸總量。
• 使用 -n 選項直接顯示鏈接的IP,例11中看到的則是解析成域名後的結果。
• -i 選項能夠指定要查看的網卡,默認狀況下,iftop會顯示本身找到的第一個網卡;
• 在進入iftop的非交互界面後,按 p 鍵能夠打開或關閉顯示端口,按 s 鍵能夠顯示或隱藏源主機,而按 d 鍵則能夠顯示或隱藏目標主機。
(3)tcpdump
當一切排查手段都無濟於事時仍然不能找到網絡速度慢、丟包嚴重等緣由時,每每祭出殺手鐗——抓包。抓包的最佳手段是在通訊的雙方同時抓取,這樣能夠同時檢驗發出的數據包和收到的數據包,tcpdump是經常使用的抓包工具。
# tcpdump -n port N //只捕捉特定端口的流量
# tcpdump -n port N1 or port N2 //捕獲多個端口的流量
# tcpdump -w output.pcap //數據包轉儲,將原始數據包保留到output.pcap
# tcpdump -C 10 -w output.pcap //限制每一個轉儲文件的上限,達到上限後將文件分卷(以MB爲單位)
# tcpdump -C 10 -W 5 -w output.pcap //不只限制每一個卷的上限,並且限制卷的總數
# tcpdump -r output.pcap //重播已經保存的數據包記錄
複製代碼