使用wireshark能解決許多網路問題,將側錄下來的封包傳至Elasticsearch上方便分析製作及時報表。tshark為wireshark的命令模式,方便編寫腳本運作。

情境:

有一些國外雲Cloud(A,B)提供當地服務local(a,b),想要偵測當地客戶連至服務不穩時,將客戶引導流量至另一個雲端服務(ISP之間不穩定等問題)。全世界的ISP業者數量眾多,利用第三方平台icmp監控仍會有遺漏,或有防火牆阻斷無法直接對客戶做偵測。

方法:

利用封包在重傳時會有RTO(Retransmission TimeOut 計算重傳超過多少時間斷開)這個資訊,可以知道雙方傳送有問題。

elastic+tshark analysis RTO

1.mirror Cloud封包至執行tshark的server

2.利用"tcp.analysis.retransmission"將封包作分析,過濾出有重傳的

3.利用filebeet將過濾後的json檔傳至Elasticsearch做收集及二次分析

4.依需求搜尋,例如各Cloud RTO次數大於平常次數發送告警

TSHARK操作放在另一篇文章 HTTPS://ETSAYCOOD.WORDPRESS.COM/2017/09/09/WIRESHARK-TSHARK/

./tshark -i ens160 -T json > /tmp/packets.json

vi /tmp/packets.json

2017-09-07_140655.png

利用Wireshark IO Graphs 分析RTO狀態

COUNT FRAMES(*) tcp.analysis.retransmission

2017-09-07_112902

./tshark -r /tmp/packets.pcap -V -2 -R “tcp.analysis.retransmission" -T json

DEMO

收集封包轉成json格式

1
tshark -i 4 -c 100000 -t ad -T json > /tmp/packets .json

設定elasticsearch的template

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
curl -XPUT 172.16.8.177:9200 /_template/packets -d '
{
   "template" : "packets-*" ,
   "mappings" : {
     "pcap_file" : {
       "dynamic" : "false" ,
       "properties" : {
         "timestamp" : {
           "type" : "date"
         },
         "layers" : {
           "properties" : {
             "frame" : {
               "properties" : {
                 "frame_frame_len" : {
                   "type" : "long"
                 },
                 "frame_frame_protocols" : {
                   "type" : "keyword"
                 }
               }
             },
             "ip" : {
               "properties" : {
                 "ip_ip_src" : {
                   "type" : "ip"
                 },
                 "ip_ip_dst" : {
                   "type" : "ip"
                 }
               }
             },
             "udp" : {
               "properties" : {
                 "udp_udp_srcport" : {
                   "type" : "integer"
                 },
                 "udp_udp_dstport" : {
                   "type" : "integer"
                 }
               }
             }
           }
         }
       }
     }
   }
}
'

將json傳送至elasticsearch

1
curl -s -H "Content-Type: application/x-ndjson" -XPOST "172.16.8.177:9200/_bulk?<span                data-mce-type=" bookmark "                id=" mce_SELREST_start "              data-mce-style=" overflow:hidden;line-height:0 "              style=" overflow:hidden;line-height:0 "           ></span>pipeline=packets" --data-binary "@packets.json"

將RTO值大於0.01秒的顯示出來,依時間點RTO次數計算

2017-09-09_121623

進階運用可以對目的IP做分組,可以知道各時間點到該服務的狀況

結論:

將收集的封包存檔,傳送到到其他Server做分析,利用這種架構可以避免單台server開wireshark處理負擔過重的問題,並可有多種分析方式,方便做成儀表版做實時監控。