1. 如果是網路不通,要定位具體的問題,一般是不斷嘗試排除不可能故障的地方,最終定位問題根源。一般需要查看 是否接入到鏈路 是否啟用了相應的網卡 本地網路是否連接 DNS故障 能否路由到目標主機 遠程埠是否開放 2. 如果是網路速度慢,一般有以下幾個方式定位問題源: DNS是否是問題的源頭 查看路由程序中哪些節點是瓶頸 查看帶寬的使用情況
一般來說當存在網路不通的故障時,訪問出端和入端的資訊是我們都要收集的,目的在于確定問題所在的主機或者區段。假如a不能訪問c而b能夠訪問c,那么很明顯問題出在a或a到c的網路上,而通過同一子網中的幾臺機器a、b可以正常訪問網路,卻不能訪問c,那么可能是這個網路到c存在問題,或c存在問題。 定位了問題所在的主機,一般有一些步驟來逐漸縮小問題范圍,最終定位問題:
1.物理鏈路是否連通
即檢查網卡與網路是否物理連通,網線是否插好且連接可用,很多時候不能立刻到機房看一下,可用用命令查看。
#ethtool eth0
例如:使用ethtool 查看 eth0 的物理連接
其中Speed: 1000Mb/s 顯示了當前網卡的速度;Duplex: Full顯示了當前網路支持全雙工;Link detected: yes 顯示當前網卡和網路的物理連接正常。通常網速和全/半雙工狀態是主機和網路協議商自動協商的,例如這里第8行的 auto-negotiation。如果發現Duplex行的雙工被設定成了Half,可以手動將其改為全雙工網路:
# ethtool -s eth0 autoneg off duplex full
2. 網卡是否正常啟用
一般網路物理連接故障的情況并不多見,當排除物理連接上的問題后,需要進一步查看網卡的作業狀態。
例如:使用ifconfig命令檢查網卡eth1狀態
輸出的資訊中,第二行顯示了對該網卡的配置,包括IP,子網掩碼等,這里可以檢查是否出現錯配,如果這一行顯示不正確,那一定是網卡沒有正確配置開啟。
? 基于Debian的Linux的(永久)網路組態檔在/etc/network/interfaces,
? 基于Red Hat的Linux的(永久)網路組態檔在/etc/sysconfig/network_scripts/ifcfg-<interface>
3. 是否正確設定網關
如果網卡已經正常啟動,需要確認目標網路介面是否正確配置網關,同時主機和網關之間的連接沒有問題,通過route命令和ping命令結合完成這一階段的排查。
例如使用route命令查看內核路由表。
#route -n
route -n 以IP而不是主機名的形式顯示網關等資訊,一方面更快,另一方面不涉及DNS,通過route命令查看內核路由,檢驗具體的網卡是否連接到目標網路的路由,之后就可以嘗試ping 網關,排查與網關之間的連接。
如果無法ping通網關,可能是網關限制了ICMP資料包,或者交換機設定的問題。
4. DNS作業狀況
有些網路問題是DNS故障或配置不當造成的,nslookup和dig命令能夠用來排查DNS問題。如果這里nslookup命令無法決議目標域名,則很有可能是DNS配置不當,到/etc/resolv.conf檔案中查看是否存在域名服務器的配置:
及時生效的DNS配置——/etc/resolv.conf檔案。
永久生效的DNS配置——/etc/networks/interfaces檔案
如果我們的DNS服務器在一個子網內,而無法ping通它,這個DNS服務器很可能已經宕機。 4. 使用nmap工具檢測埠開放情況
# nmap -p 22 220.181.111.188
同樣的服務器,使用nmap檢測,觀察到第7行,說明實際上該服務器是啟用了22埠的,但是防火墻過濾了資料包,如果埠真的沒有啟用,那么第7行的STATE將顯示closed,而不是filtered。開放的埠其狀態將是open。這時就可以了解,埠無法連接的原因是埠關倍訓是防火墻過濾了。
埠開啟的命令是:nc -lp 23 &(打開23埠,即telnet)
5. 本機查看監聽埠
如果要在本地查看某個埠是否開放,可以使用如下命令:
# netstat -lnp | grep PORT 其中,引數:
? -l,顯示正在監聽的套接字
? -p,顯示套接字所屬的行程ID和行程名
? -n,以數字形式顯示地址
其中第一列是套接字通信協議,第2列和第3列顯示的是接收和發送佇列,第4列是主機監聽的本地地址,反映了該套接字監聽的網路;第6列顯示當前套接字的狀態,最后一列顯示打開埠的行程。 6. 查看防火墻規則
使用# iptables –L命令查看當前主機的防火墻。
使用# iptables –F命令清理當前主機的防火墻規則。
7. 網路較慢的排查。
網路較慢的排查事實上比網路不通的排查更有挑戰,因為很多時候可能是運營商、DNS等的原因,這些故障常常不在我們的控制范圍之內,只能收集證據向其反饋或對其進行投訴。 如果不想受到DNS的影響,上面提到的命令可以添加 -n 選項,-n選項可以阻止試圖將IP決議為主機名,從而繞過DNS。
(1.)mtr
不僅可以查看路由的正確性,還可以查看網路中每一跳的延時,從而定位延時最高的網路區段。
(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 //重播已經保存的資料包記錄
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/40559.html
標籤:網絡維護與管理
下一篇:ospf路由重分發問題
