9.11 strace:跟蹤進程的系統調用 、ltrace:跟蹤進程調用庫函數
strace
strace命令的參數選項及說明
-c 統計每一個系統調用所執行的時間、次數和出錯的次數等
-d 輸出strace關於標准錯誤的調試信息 -f 跟蹤目標進程,以及目標進程創建的所有子進程 -ff 如果提供-o filename,則將所有進程的跟蹤結果輸出到相應的filename.pid中,pid是各進程的進程號 -i 輸出系統調用的入口指針 -q 禁止輸出關於脫離的消息 -r 輸出每一個系統調用的相對時間 -t 在輸出中的每一行前加上時間信息。例如16:45:28 -tt 在輸出中的每一行前加上時間信息,精確到微秒。例如11:18:59.759546端 -ttt 在輸出中的每一行前加上時間信息,精確到微秒,而且時間表示為UNIX時間戳。例如1486111461.650434 -T 顯示每次系統調用所花費的時間 -v 對於某些相關調用,把完整的環境變量、文件stat結構等打印出來 -x 以十六進制形式輸出非標准字符率 -xx 所有字符串以十六進制形式輸出 -e expr 輸出過濾器,通過表達式,可以過濾掉你不想要的輸出 expr是一個表達式,用於控制如何跟蹤:[qualifier=][!][valuel[,value2].. 說明: ①qualifier 只能是trace、abbrev、verbose、raw、signal、read、write其中之一 ②value是用來限定的符號或數字 ③默認的qualifier是trace ④感嘆號是否定符號 例如: -e open等價於-e trace=open,表示只跟蹤open調用 而-e trace!=open表示跟蹤除了open以外的其他調用 常見選項: -e trace=[set] 只跟蹤指定的系統調用 -e trace=file 只跟蹤與文件操作有關的系統調用 -e trace=process 只跟蹤與進程控制有關的系統調用 -e trace-network 只跟蹤與網絡有關的系統調用 -e trace=signal 只跟蹤與系統信號有關的系統調用 -e trace=desc 只跟蹤與文件描述符有關的系統調用 -e trace=ipc 只跟蹤與進程通信有關的系統調用 -e abbrev=[set] 設定strace輸出的系統調用的結果集 -e raw=[set] 將指定的系統調用的參數以十六進制顯示 -e signal=[set] 指定跟蹤的系統信號 -e read=[set] 輸出從指定文件中讀出的數據 -e write=[set] 輸出寫入到指定文件中的數據 -o filename 將strace的輸出寫入文件filename -p pid 指定要跟蹤的進程pid,要同時跟蹤多個pid,重復多次p選項即可* -s strsize 指定輸出的字符串的最大長度,默認為32。並沒有將文件名視為字符串,默認全部輸出 -u username 以usemame的UID和GID執行所跟蹤的命令
排查Nginx403 forbidden錯誤
只跟蹤與文件操作有關的系統調用
通過pid 跟蹤進程
跟蹤系統調用統計
[root@bzhl ~]# which nginx /usr/bin/nginx [root@bzhl ~]# strace -c /usr/bin/nginx % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 22.33 0.001129 7 153 52 open 15.55 0.000786 6 123 close 10.80 0.000546 6 95 mmap 8.53 0.000431 13 32 write 7.66 0.000387 10 39 read 6.47 0.000327 7 48 mprotect 5.38 0.000272 12 22 munmap 4.35 0.000220 3 87 fstat 3.20 0.000162 32 5 nanosleep 2.87 0.000145 8 19 socket 2.67 0.000135 4 38 pread64 2.29 0.000116 29 4 4 connect 1.19 0.000060 4 15 15 bind 1.03 0.000052 3 16 5 stat 1.03 0.000052 9 6 getdents 0.99 0.000050 3 15 setsockopt 0.65 0.000033 11 3 openat 0.63 0.000032 2 15 ioctl 0.63 0.000032 5 6 6 mkdir 0.47 0.000024 2 12 fcntl 0.16 0.000008 8 1 statfs 0.14 0.000007 7 1 1 readlink 0.10 0.000005 5 1 epoll_create 0.08 0.000004 2 2 rt_sigaction 0.08 0.000004 2 2 uname 0.08 0.000004 2 2 gettimeofday 0.08 0.000004 4 1 futex 0.06 0.000003 3 1 poll 0.06 0.000003 3 1 lseek 0.06 0.000003 2 2 getrlimit 0.06 0.000003 3 1 getppid 0.06 0.000003 3 1 sched_getaffinity 0.04 0.000002 1 2 brk 0.04 0.000002 2 1 rt_sigprocmask 0.04 0.000002 2 1 getuid 0.04 0.000002 2 1 arch_prctl 0.04 0.000002 2 1 set_tid_address 0.04 0.000002 2 1 set_robust_list 0.02 0.000001 1 1 geteuid 0.00 0.000000 0 1 1 access 0.00 0.000000 0 1 execve ------ ----------- ----------- --------- --------- ---------------- 100.00 0.005055 779 84 total
上面的結果將清楚地告訴我們調用了哪些系統函數,調用的次數是多少,消耗了多少時間等信息,這對我們分析程序來說是非常有用的。
重定向輸出。
對系統調用進行計時
ltrace:跟蹤進程調用庫函數
ltrace命令的參數選項及說明
-c 統計庫函數每次調用的時間,最后程序退出時打印摘要
-C 解碼低級別名稱(內核級)為用戶級名稱 -d 打印調試信息 -e expr 輸出過濾器,通過表達式,可以過濾掉你不想要的輸出 -e printf 表示只查看printf函數調用 -e !printf 表示查看除printf函數以外的所有函數調用 -f 跟蹤子進程 -o filename 將ltrace的輸出寫入文件filename -p pid 指定要跟蹤的進程pid -r 輸出每一個調用的相對時間 -S 顯示系統調用 -t 在輸出中的每一行前加上時間信息。例如16:45:28 -tt 在輸出中的每一行前加上時間信息,精確到微秒。例如11:18:59.759546 -ttt 在輸出中的每一行前加上時間信息,精確到微秒,而且時間表示為UNIX時間截。例如1486111461.650434 -T 顯示每次調用所花費的時間 -u username 以username的UID和GID執行所跟蹤的命令
訪問Nginx出現狀態碼為403 forbidden原因及故障模擬
1) nginx配置文件里不配置默認首頁參數或者首頁文件在站點目錄下沒有
index index.php index.html index.htm;
1.
問題模擬示例:
[root@www extra]# cat www.conf
#www virtualhost by oldboy
server {
listen 80;
server_name www.etiantian.org;
location / {
root html/www;
#index index.html index.htm;#<==注釋首頁文件配置
}
access_log off;
}
[root@www extra]# ../../sbin/nginx -sreload
[root@www extra]# tail -1 /etc/hosts
10.0.0.8 www.etiantian.orgbbs.etiantian.org blog.etiantian.org etiantian.org
[root@www extra]# ll ../../html/www/
總用量 12
drwxr-xr-x 2 root root 4096 4月 15 14:20 blog
-rw-r--r-- 1 root root 4 4月 17 17:11index.html #<==存在首頁文件
drwxr-xr-x 2 root root 4096 4月 15 14:19 oldboy
[root@www extra]# curl -I -s 10.0.0.8|head-1
HTTP/1.1 403 Forbidden #<==問題是,Nginx沒有指定首頁文件的參數,因此訪問Nginx時不會把index.html當首頁,所以報403錯誤。
2)站點目錄下沒有配置文件里指定的首頁文件index.php index.html index.htm。
[root@www extra]# cat www.conf
#www virtualhost by oldboy
server {
listen 80;
server_name www.etiantian.org;
location / {
root html/www;
index index.htmlindex.htm; #<==配置首頁文件配置
}
access_log off;
}
[root@www extra]# ../../sbin/nginx -sreload
[root@www extra]# rm -f ../../html/www/index.html#<==刪除物理首頁文件
[root@www extra]# curl -I -s 10.0.0.8|head-1
HTTP/1.1 403 Forbidden
提示:以上1)和2)有一個參數可以解決這個問題就是:
autoindex on;
[root@www extra]# cat www.conf
#www virtualhost by oldboy
server {
listen 80;
server_name www.etiantian.org;
location / {
root html/www;
autoindex on; #<==當找不到首頁文件時,會展示目錄結構,這個功能一般不要用除非有需求。
}
access_log off;
}
效果如下:

3)站點目錄或內部的程序文件沒有Nginx用戶訪問權限。
[root@www extra]# echo test >../../html/www/index.html
[root@www extra]# chmod 700../../html/www/index.html #<==設置700讓nginx用戶無權讀取
[root@www extra]# ls -l ../../html/www/index.html
-rwx------ 1 root root 5 4月 17 17:15../../html/www/index.html
[root@www extra]# curl -I -s 10.0.0.8|head-1
HTTP/1.1 403 Forbidden #<==403錯誤
[root@www extra]# chmod 755../../html/www/index.html #<==設置755讓nginx用戶有權讀取
[root@www extra]# curl -I -s 10.0.0.8|head-1
HTTP/1.1 200 OK #<==200 OK了
4)Nginx配置文件中設置allow、deny等權限控制,導致客戶端沒有沒權限訪問。
[root@www extra]# cat www.conf
#www virtualhost by oldboy
server {
listen 80;
server_name www.etiantian.org;
location / {
root html/www;
index index.html index.htm;
allow 192.168.1.0/24;
deny all;
}
access_log off;
}
[root@www extra]# curl -I -s 10.0.0.8|head-1
HTTP/1.1 200 OK #<==設置755讓nginx用戶有權讀取
[root@www extra]# ../../sbin/nginx -sreload
[root@www extra]# curl -I -s 10.0.0.8|head-1
HTTP/1.1 403 Forbidden
提示:上述403問題並不是nginx才有,apache服務的Forbidden 403問題同樣也是這幾個問題導致的,只是參數細節略有區別而已,見 http://oldboy.blog.51cto.com/2561410/581383
https://blog.51cto.com/oldboy/1633952
9.13-15 runlevel & init & service
runlevel:輸出當前運行級別
init:初始化Linux進程
service:管理系統服務
查看當前服務狀態
[root@cs6 ~]# service --status-all
auditd (pid 1270) 正在運行... crond (pid 1451) 正在運行... 表格:filter Chain INPUT (policy ACCEPT) num target prot opt source destination 1 ACCEPT all ::/0 ::/0 state RELATED,ESTABLISHED 2 ACCEPT icmpv6 ::/0 ::/0 3 ACCEPT all ::/0 ::/0 4 ACCEPT udp ::/0 fe80::/64 state NEW udp dpt:546 5 ACCEPT tcp ::/0 ::/0 state NEW tcp dpt:22 6 REJECT all ::/0 ::/0 reject-with icmp6-adm-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all ::/0 ::/0 reject-with icmp6-adm-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination iptables:未運行防火牆。 iscsi 已停 iscsid 已停 lvmetad 已停 dmeventd 已停 mdmonitor 已停 multipathd 已停
管理系統服務
[root@cs6 ~]# service crond status
crond (pid 1451) 正在運行... [root@cs6 ~]# /etc/init.d/crond status crond (pid 1451) 正在運行...
11.5 vmstat:虛擬內存統計
vmstat
【語法格式】
【選項說明】
[root@lewen ~]# vmstat #<行如果省略“間隔時間”和“次數”的參數,則僅顯示一次報告后
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 2 0 0 2792792 2108 790956 0 0 15 20 61 146 0 0 99 0 0 以下是命令結果的詳細說明。 第1列:procs。 r列表示運行和等待CPU時間片的進程數。 b列表示正在等待資源的進程數。 第2列:memory。 swpd列表示使用虛擬內存的大小。 free列表示當前空閑的物理內存數量。 buff列表示buffers的內存數量。 cache列表示cache的內存數量。 第3列:swap。 si(swap in)列表示由磁盤調入內存,也就是內存進入內存交換區的數量。 so(swap out)列表示由內存調入磁盤,也就是內存交換區進入內存的數量。 第4列:I/O項顯示磁盤讀寫狀況。 bi列表示從塊設備讀入數據的總量(即讀磁盤)(塊/s)。 bo列表示寫入塊設備的數據總量(即寫磁盤)(塊/s)。 第5列:system顯示采集間隔內發生的中斷數。 in列表示在某一時間間隔中觀測到的每秒設備中斷數。 cs列表示每秒產生的上下文切換次數。 第6列:CPU項顯示了CPU的使用狀態。 us列顯示了用戶進程消耗的CPU時間百分比。 sy列顯示了系統(內核)進程消耗的CPU時間百分比。 id列顯示了CPU處在空閑狀態的時間百分比。 wa列顯示了I/0等待所占用的CPU時間百分比。 st列顯示了虛擬機占用的CPU時間的百分比。
顯示活躍和非活躍內存
[root@lewen ~]# vmstat -aS M 2 3 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free inact active si so bi bo in cs us sy id wa st 2 0 0 2727 290 657 0 0 15 20 61 146 0 0 99 0 0 0 0 0 2727 290 657 0 0 0 0 53 118 0 0 100 0 0 0 0 0 2727 290 657 0 0 0 0 51 112 1 1 99 0 0 使用-a選項顯示活躍和非活躍內存時,所顯示的內容除去增加了inact和active之外,其他顯示內容與范例11-12相同。 memory列增加了inact和active兩列,其說明具體如下。 inact:非活躍的內存大小(當使用-a選項時顯示)。 active:活躍的內存大小(當使用-a選項時顯示)。
查看內存使用的詳細信息
|
1
2
3
4
5
6
7
8
9
10
11
|
[root@lewen ~]
# vmstat -s
4026348 K total memory
440568 K used memory
673792 K active memory
297756 K inactive memory
2792680 K
free
memory
2108 K buffer memory
790992 K swap cache
這些信息分別來自於
/proc/meminfo
、
/proc/stat
和
/proc/vmstat
。
|
查看磁盤的讀/寫
[root@lewen ~]# vmstat -d
disk- ------------reads------------ ------------writes----------- -----IO------ total merged sectors ms total merged sectors ms cur sec sda 8333 8 673201 140450 21689 1376 907042 61431 0 73 sr0 18 0 2056 678 0 0 0 0 0 0 dm-0 6339 0 648333 139872 23055 0 902906 75051 0 73 dm-1 90 0 4920 7 0 0 0 0 0 0 這些信息主要來自於/proc/diskstats。其中的merged表示一次來自於合並的寫/讀請求,系統一般會把多個連接/鄰近的讀/寫請求合並到一起來操作。
查看/dev/sda1磁盤的讀寫統計信息
[root@lewen ~]# vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes
1799 12364 10 4136 這些信息主要來自於/proc/diskstats。各列的說明具體如下。 reads:來自於該分區的讀的次數。 read sectors:來自於該分區的讀扇區的次數。 writes:來自於該分區的寫的次數。 requested writes:來自於該分區的寫請求次數。
11.6 mpstat:CPU信息統計
顯示CPU信息統計。
顯示指定CPU信息的統計。
11.7 iostat: I/O信息統計
定時顯示所有信息
只顯示磁盤統計信息。
11.8 iotop:動態顯示磁盤I/O統計信息
s11.9 sar:收集系統信息
功能說明:
通過sar命令,可以全面地獲取系統的CPU、運行隊列、磁盤I/O、分頁(交換區)、內存、CPU中斷和網絡等性能數據。
語法格式
sar option interval count
sar 選項 時間間隔 次數
說明:
1)在sar命令及后面的選項里,每個元素之間都至少要有一個空格。
2)interval表示兩次輸出之間的間隔時間。
3)count表示按照interval指定的時間間隔統計的次數。
【選項說明】
查看系統CPU的整體負載狀況。
-A 顯示系統所有資源設備(CPU、內存、磁盤)的運行狀況
-u 顯示系統所有CPU在采樣時間內的負載狀態
-P 顯示當前系統中指定CPU的使用情況
-d 顯示系統所有硬盤設備在采樣時間內的使用狀況
-r 顯示在采樣時間內系統內存的使用狀況
-b 顯示在采樣時間內緩沖區的使用情況
-v 顯示索引節點、文件和其他內核表的狀態
-n 顯示網絡運行狀態
-q 顯示運行隊列的大小,它與系統當時的平均負載相同
-R 顯示進程在采樣時間內的活動情況
-y 顯示終端設備在采樣時間內的活動情況
-w 顯示系統交換活動在采樣時間內的狀態
-o filename 將命令結果以二進制格式存放在文件中,filename是文件名
使用范例
查看系統CPU的整體負載狀況
[root@lewen ~]# sar -u 2 3 Linux 3.10.0-957.el7.x86_64 (lewen) 2019年03月17日 _x86_64_ (1 CPU) 16時09分16秒 CPU %user %nice %system %iowait %steal %idle 16時09分18秒 all 0.00 0.00 0.50 0.00 0.00 99.50 16時09分20秒 all 0.00 0.00 0.00 0.00 0.00 100.00 16時09分22秒 all 0.50 0.00 0.50 0.00 0.00 99.00 平均時間: all 0.17 0.00 0.33 0.00 0.00 99.50 %user:用戶進程消耗的CPU時間百分比。 %nice:改變過優先級的進程占用的CPU時間百分比。 %system:系統(內核)進程消耗的CPU時間百分比。 %iowait:IO等待所占用的CPU時間百分比。 %steal:虛擬機強制CPU等待的時間百分比。 %idle:CPU處在空閑狀態的時間百分比。
顯示運行隊列的大小
[root@lewen ~]# sar -q 2 3 Linux 3.10.0-957.el7.x86_64 (lewen) 2019年03月17日 _x86_64_ (1 CPU) 16時25分06秒 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15 blocked 16時25分08秒 0 316 0.00 0.01 0.05 0 16時25分10秒 0 316 0.00 0.01 0.05 0 16時25分12秒 0 316 0.00 0.01 0.05 0 平均時間: 0 316 0.00 0.01 0.05 0 runq-sz:運行隊列的長度(等待運行的進程數)。 plist-sz:進程列表中進程(process)和線程(thread)的數量。 ldavg-1:最后1分鍾的系統平均負載(system load average)。 ldavg-5:過去5分鍾的系統平均負載。 ldavg-15:過去15分鍾的系統平均負載。
顯示系統內存的使用狀況
[root@lewen ~]# sar -r 2 3 Linux 3.10.0-957.el7.x86_64 (lewen) 2019年03月17日 _x86_64_ (1 CPU) 16時29分54秒 kbmemfree kbmemused %memused kbbuffers kbcached kbcommit %commit kbactive kbinact kbdirty 16時29分56秒 2794180 1232168 30.60 2108 643944 2014348 28.09 672264 297744 8 16時29分58秒 2794180 1232168 30.60 2108 643944 2014348 28.09 672268 297744 8 16時30分00秒 2794180 1232168 30.60 2108 643944 2014348 28.09 672268 297744 8 平均時間: 2794180 1232168 30.60 2108 643944 2014348 28.09 672267 297744 8 以下是命令結果的詳細說明。 kbmemfree:空閑物理內存量。 kbmemused:使用中的物理內存量。 %memused:物理內存量的使用率。 kbbuffers:內核中作為緩沖區使用的物理內存容量。 kbcached:內核中作為緩存使用的物理內存容量。 kbcommit:應用程序當前使用的內存大小。 %commit:應用程序當前使用的內存大小占總大小的使用百分比。
顯示緩沖區的使用情況
[root@doit ~]# sar -b 2 3 Linux 4.20.0-1.el7.elrepo.x86_64 (doit) 03/17/2019 _x86_64_ (2 CPU) 04:33:47 PM tps rtps wtps bread/s bwrtn/s 04:33:49 PM 0.50 0.00 0.50 0.00 4.00 04:33:51 PM 0.00 0.00 0.00 0.00 0.00 04:33:53 PM 0.00 0.00 0.00 0.00 0.00 Average: 0.17 0.00 0.17 0.00 1.33 tps:每秒鍾物理設備的I/O傳輸總量。 rtps:每秒鍾從物理設備讀入的數據總量。 wtps:每秒鍾向物理設備寫入的數據總量。 bread/s:每秒鍾從物理設備讀入的數據量,單位為塊/s。 bwrtn/s:每秒鍾向物理設備寫人的數據量,單位為塊/s。
顯示網絡的運行狀態
[root@doit ~]# sar -n DEV 2 3 Linux 4.20.0-1.el7.elrepo.x86_64 (doit) 03/17/2019 _x86_64_ (2 CPU) 04:35:59 PM IFACE rxpck/s txpck/s rxkB/s txkB/s rxcmp/s txcmp/s rxmcst/s 04:36:01 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 04:36:01 PM eth0 48.50 40.50 34.71 33.66 0.00 0.00 0.00 以下是命令結果的詳細說明。 IFACE:網絡接。 rxpck/s:每秒鍾接收的數據包。 txpck/s:每秒鍾發送的數據包。 rxkB/s:每秒鍾接收的字節數。 txkB/s:每秒鍾發送的字節數。 rxcmp/s:每秒鍾接收的壓縮數據包。 txcmp/s:每秒鍾發送的壓縮數據包。 rxmcst/s:每秒鍾接收的多播數據包。
下面的命令用來
顯示網絡錯誤的統計數據
[root@doit ~]# sar -n EDEV 2 3 Linux 4.20.0-1.el7.elrepo.x86_64 (doit) 03/17/2019 _x86_64_ (2 CPU) 04:39:26 PM IFACE rxerr/s txerr/s coll/s rxdrop/s txdrop/s txcarr/s rxfram/s rxfifo/s txfifo/s 04:39:28 PM lo 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 04:39:28 PM eth0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 以下是命令結果的詳細說明。 IFACE:網絡接。 rxerr/s:每秒鍾接收的壞數據包。 txerr/s:每秒鍾發送的壞數據包。 coll/s:每秒的沖突數。 rxdrop/s:因為緩沖充滿,每秒鍾丟棄的已接收數據包數。 txdrop/s:因為緩沖充滿,每秒鍾丟棄的已發送數據包數。 txcarr/s:發送數據包時,每秒載波錯誤數。 rxfram/s:每秒接收數據包的幀對齊錯誤數。 rxfifo/s:接收的數據包每秒FIFO過速的錯誤數。 txfifo/s:發送的數據包每秒FIFO過速的錯誤數。
下面的命令用於顯示套接字信息
[root@doit ~]# sar -n SOCK 2 3 Linux 4.20.0-1.el7.elrepo.x86_64 (doit) 03/17/2019 _x86_64_ (2 CPU) 04:42:06 PM totsck tcpsck udpsck rawsck ip-frag tcp-tw 04:42:08 PM 101 5 3 0 0 2 04:42:10 PM 101 5 3 0 0 2 04:42:12 PM 101 5 3 0 0 2 Average: 101 5 3 0 0 2 以下是命令結果的詳細說明。 totsck:使用的套接字總數量。 tcpsck:使用的TCP套接字數量。 udpsck:使用的UDP套接字數量。 rawsck:使用的raw套接字數量。 ip-frag:使用的IP段數量。 tcp-tw:處於TIME_WAIT狀態的TCP套接字數量。
查看系統磁盤的讀寫性能
[root@doit ~]# sar -d 2 3 Linux 4.20.0-1.el7.elrepo.x86_64 (doit) 03/17/2019 _x86_64_ (2 CPU) 04:43:34 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 04:43:36 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 04:43:36 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 04:43:38 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 04:43:38 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util 04:43:40 PM dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 Average: DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util Average: dev8-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 以下是命令結果的詳細說明。 DEV:表示磁盤的設備名稱。 tps:表示該設備每秒的傳輸次數,“一次傳輸”的意思是“一次I/O請求”,多個邏輯請求可能會被合並為“一次I/O請求”,“一次傳輸”請求的大小是未知的。 rd_sec/s:表示每秒從設備讀取的扇區數。 wr_sec/s;表示每秒寫入設備的扇區數目。 avgrq-sz:設備平均每次I/O操作的數據大小(扇區)。 avgqu-sz;平均I/0隊列長度。 await:設備平均每次1VO操作的等待時間(毫秒)。 svctm:設備平均每次I/O操作的服務時間(毫秒)。 %util:每秒鍾用於I/O操作的百分比。
11.11 ntsysv:管理開機服務

10.7 netstat:查看網絡狀態
netstat命令
用於顯示本機網絡的連接狀態、運行端口和路由表等信息。
netstat命令的參數選項及說明
-r 顯示路由表信息,該功能類似於前面學過的route 和ip route
-g 顯示多播功能群組成員,該功能類似於前面學過的ip maddr
-i 顯示網絡接口信息,該功能類似於前面學過的ip -s link
-s 顯示各類協議的統計信息
-n 顯示數字形式的地址而不是去解析主機、端口或用戶名。默認情況下,netstat命令會嘗試解析並顯示主機的主機名,這個過程通常比較長也是非必需的
-a 顯示處於監聽狀態和非監聽狀態的socket信息
-A 顯示指定網絡類型的網絡連接狀態
-c<秒數> 后面跟的秒數表示每隔幾秒就刷新顯示一次
-l 僅顯示連接狀態為“LISTEN”的服務的網絡狀態
-t 顯示所有的TCP連接情況
-u 顯示所有的UDP連接情況
-p 顯示socket所屬進程的PID和名稱
常用選項組合(一)
[root@cs6 ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 64 10.0.0.100:22 10.0.0.1:2827 ESTABLISHED
tcp 0 0 10.0.0.100:22 10.0.0.1:6358 ESTABLISHED
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:25 :::* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 8 [ ] DGRAM 12335 /dev/log
unix 2 [ ACC ] STREAM LISTENING 12689 public/cleanup
unix 2 [ ACC ] STREAM LISTENING 12697 private/tlsmgr
unix 2 [ ACC ] STREAM LISTENING 12702 private/rewrite
unix 2 [ ACC ] STREAM LISTENING 12706 private/bounce
unix 2 [ ACC ] STREAM LISTENING 12710 private/defer
unix 2 [ ACC ] STREAM LISTENING 12714 private/trace
unix 2 [ ACC ] STREAM LISTENING 12718 private/verify
unix 2 [ ACC ] STREAM LISTENING 12722 public/flush
unix 2 [ ACC ] STREAM LISTENING 12726 private/proxymap
針對該命令的第一行內容進行了說明。
第一行活動網絡連接說明
第一列 Proto socket使用的協議(TCP、UDP、RAW)
第二列 Recv-Q 接收到但是還未處理的字節數
第三列 Send-Q 已經發送但是未被遠程主機確認收到的字節數
第四列 Local Address 本地主機地址和端口
第五列 Foreign Address 遠程主機地址和端口
第六列 State socket的狀態,通常僅僅有TCP的狀態,狀態值可有ESTABLISHED、SYN_SENT、SYN_RECV、FIN_WAIT1、FIN_WAIT2、TIME_WAIT等
第6列 State狀態信息詳解
ESTABLISHED socket已經建立連接,表示處於連接的狀態,一般認為有一個ESTABLISHED 是一個服務的並發連接。
該連接狀態在生產場景中很重要,需要重點關注
SYN_SENT socket正在積極嘗試建立一個連接,即處於發送后連接前的一個等待但未匹配進入連接的狀態
SYN_RECV 已經從網絡上收到一個連接請求
FIN_WAIT1 socket已關閉,連接正在或正要關閉
FIN_WAIT2 連接已關閉,並且socket正在等待遠端結束
TIME_WAIT socket正在等待關閉處理仍在網絡上的教據包,這個連接狀態在生產場景中很重要,需要重點關注
CLOSED socket不再被占用了
CLOSE_WAIT 遠端已經結束,等待socket關閉
LAST_ACK 遠端已經結束,並且socket也已關閉,等待acknowledgement
LISTEN socket正在監聽連接請求
CLOSING socket關閉,但是我們仍舊沒有發送數據
UNKNOWN socket狀態未知
常用選項組合(二)
[root@cs6 ~]# netstat -lntup Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1358/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1437/master tcp 0 0 :::22 :::* LISTEN 1358/sshd tcp 0 0 ::1:25 :::* LISTEN 1437/master
以上命令語句的作用為顯示所有TCP和UDP正在監聽的連接信息。
-l:顯示所有LISTEN狀態的網絡連接。
-n:顯示IP地址,不進行DNS解析成主機名、域名。
-t:顯示所有TCP連接。
-u:顯示所有UDP連接。
-p:顯示進程號和進程名。
顯示當前系統的路由表
[root@cs6 ~]# netstat -rn Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface 10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0 172.16.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1 10.1.0.0 10.0.0.253 255.255.255.0 UG 0 0 0 eth0 169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0 0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0
選項-i顯示網絡的接口狀況。
[root@cs6 ~]# netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 5405 0 0 0 3518 0 0 0 BMRU eth1 1500 0 0 0 0 0 18 0 0 0 BMRU lo 65536 0 0 0 0 0 0 0 0 0 LRU
以下是命令結果解釋。
lface:表示網絡設備的接口名稱。
MTU:表示最大傳輸單元,單位為字節。
RX-OK/TX-OK:表示已經准確無誤地接收/發送了多少數據包。
RX-ERR/TX-ERR:表示接收/發送數據包時產生了多少錯誤。
RX-DRP/TX-DRP:表示接收/發送數據包時丟棄了多少數據包。
RX-OVR/TX-OVR:表示由於誤差而遺失了多少數據包。
Flg:表示接口標記,其中各標記含義具體如下。
L:表示該接口是個回環設備。
B:表示設置了廣播地址。
M:表示接收所有數據包。
R:表示接口正在運行。
U:表示接口處於活動狀態。
o:表示在該接口上禁用arp。
P:表示一個點到點的連接。
正常情況下,RX-ERR/TX-ERR、RX-DRP/TX-DRP和RX-OVR/TX-OVR的值都應該為0,如果這幾個選項的值不為0,並且很大,那么網絡質量肯定有問題,網絡傳輸性能也一定會下降。
[root@bzhl ~]# netstat -n|awk '/^tcp/ {++lewen[$NF]} END {for (a in lewen) print a ,lewen[a]}'
ESTABLISHED 5
TIME_WAIT 1
10.8 ss:查看網絡狀態
ss命令
ss命令的參數選項及說明
常用選項組合(一)
[root@cs6 ~]# ss -an
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *:* ESTAB 0 64 10.0.0.100:22 10.0.0.1:1821 [root@cs6 ~]# ss -an|column -t State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 :::22 :::* LISTEN 0 128 *:22 *:* LISTEN 0 100 ::1:25 :::* LISTEN 0 100 127.0.0.1:25 *:* ESTAB 0 64 10.0.0.100:22 10.0.0.1:1821
常用選項組合(二)
[root@cs6 ~]# ss -lntup|column -t #<=顯示所有正在監聽的TCP和UDP連接。 Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port tcp LISTEN 0 128 :::22 :::* users:(("sshd",1358,4)) tcp LISTEN 0 128 *:22 *:* users:(("sshd",1358,3)) tcp LISTEN 0 100 ::1:25 :::* users:(("master",1437,13)) tcp LISTEN 0 100 127.0.0.1:25 *:* users:(("master",1437,12))
顯示socket統計
[root@bzhl ~]# ss -s
Total: 318 (kernel 663) TCP: 17 (estab 5, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0 Transport Total IP IPv6 * 663 - - RAW 0 0 0 UDP 2 1 1 TCP 17 14 3 INET 19 15 4 FRAG 0 0 0
10.10 traceroute:追蹤數據傳輸路由狀況
traceroute命令
traceroute命令的參數選項及說明
[root@cs6 ~]# yum install traceroute.x86_64 -y [root@cs6 ~]# traceroute www.wenyule.top traceroute to www.wenyule.top (213.232.105.22), 30 hops max, 60 byte packets # 域名 IP地址 最大30跳(次) 60字節數據包 1 10.0.0.2 (10.0.0.2) 0.445 ms 0.214 ms 0.348 ms # <==第一個同關 第1次時間 第2次 第3次 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * *^C
命令結果說明具體如下。
加快查詢時間
[root@cs6 ~]# traceroute -In www.wenyule.top
traceroute to www.wenyule.top (213.232.105.22), 30 hops max, 60 byte packets 1 10.0.0.2 0.089 ms 0.056 ms 0.034 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 7 * * * 8 * * * 9 * * * 10 * * * 11 * * * 12 * * * 13 * * * 14 * * * 15 * * * 16 * * * 17 * * * 18 * * * 19 * * * 20 * * * 21 * * * 22 * * * 23 * 213.232.105.22 203.477 ms 203.017 ms
10.11 arping:發送arp請求
arping命令
arping 命令的參數選項及說明
測試目的主機是否存活
[root@cs6 ~]# arping -f 10.0.0.1 #<==使用-f選項收到第一個響應時就退出,用於檢測目的主機是否存活。 ARPING 10.0.0.1 from 10.0.0.100 eth0 #<==從10.0.0.100的eth0網卡向10,0.0.1發送arp報文。 Unicast reply from 10.0.0.1 [00:50:56:C0:00:08] 0.595ms <==從10.0.0.1單播回復它的MAC地址,並且顯示時是 Sent 1 probes (1 broadcast(s)) #<=發送1個廣播包 Received 1 response(s) [root@cs6 ~]# arping -f 10.0.0.11 #<==沒有運行的主機不會響應,命令一直等待,直到Ctr1+C終止。 ARPING 10.0.0.11 from 10.0.0.100 eth0 ^CSent 5 probes (5 broadcast(s)) Received 0 response(s)
Linux 負載均衡器宕機切換時arp緩存導致故障案例
10.13 nc:多功能網絡工具
nc命令
nc命令的參數選項及說明
[root@cs6 ~]# /etc/init.d/iptables status
表格:filter
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 5 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) num target prot opt source destination [root@cs6 ~]# /etc/init.d/iptables stop iptables:將鏈設置為政策 ACCEPT:filter [確定] iptables:清除防火牆規則: [確定] iptables:正在卸載模塊: [確定] [root@cs6 ~]# setenforce 0 [root@cs6 ~]# getenforce Permissive
模擬 TCP 連接並傳輸文本內容(遠程復制文件
[root@cs6 ~]# nc -l 12345 > lewen.nc #<=監聽12345端口,將數據寫入oldboy.nc #<=執行完上面的命令后,當前窗口掛起。 #<=新開一個窗口執行命令。 [root@cs6 ~]# cat lewen.nc #<=首先查看12345端口。 [root@cs6 ~]# netstat -lntup|grep 12345 tcp 0 0 0.0.0.0:12345 0.0.0.0:* LISTEN 2612/nc [root@cs6 ~]# cat lewen.log #<=待用的文件。 6.8.0 #<=文件中的內容 [root@cs6 ~]# nc 10.0.0.100 12345 < lewen.log #<=使用nc命令向10.0.0.100 主機12345 端口傳輸lewen.log文件 [root@cs6 ~]# netstat -lntup|grep 12345 #<==nc命令傳輸完數據后自動終止。 [root@cs6 ~]# cat lewen.nc #檢查結果 6.8.0
用Shell 模擬一個簡單的Web 服務器效果案例
[root@cs6 ~]# echo "I love linux www.wenyule.top" >test.txt [root@cs6 ~]# vim web.sh #!/bin/bash while true do nc -l 80 < test.txt # 一直監聽80端口,test.txt是發送給用戶的內容。 done [root@cs6 ~]# sh web.sh &>/dev/null & [1] 2685 [root@cs6 ~]# [root@cs6 ~]# netstat -lntup|grep 80 tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2686/nc [root@cs6 ~]# curl 127.0.0.1 I love linux www.wenyule.top
手動與HTTP服務器建立連接的例子。
[root@cs6 ~]# nc blog.oldboyedu.com 80 GET /about-us/ HTTP/1.1 <=粘貼這兩行語句,速度要快,如果慢了程序就會超時自動退出。 host:blog.oldboyedu.com <==HTTP/1.1的要求必須寫明hosto #<==敲兩次回車確認發送請求報文,下面就是響應報文的內容。 HTTP/1.1 301 Moved Permanently Server: nginx Date: Tue, 07 May 2019 13:40:50 GMT Content-Type: text/html Content-Length: 178 Connection: keep-alive Location: https://blog.oldboyedu.com/about-us/ <html> <head><title>301 Moved Permanently</title></head> <body bgcolor="white"> <center><h1>301 Moved Permanently</h1></center> <hr><center>nginx</center> </body> </html>
利用nc 進行端口掃描
[root@cs6 ~]# nc -z 10.0.0.100 20-30 Connection to 10.0.0.100 22 port [tcp/ssh] succeeded! [root@cs6 ~]# nc -z 10.0.0.100 22 Connection to 10.0.0.100 22 port [tcp/ssh] succeeded! [root@cs6 ~]# nc -zv 10.0.0.100 20-30 #<=使用-v選項詳細顯示掃描過程 nc: connect to 10.0.0.100 port 20 (tcp) failed: Connection refused nc: connect to 10.0.0.100 port 21 (tcp) failed: Connection refused Connection to 10.0.0.100 22 port [tcp/ssh] succeeded! nc: connect to 10.0.0.100 port 23 (tcp) failed: Connection refused nc: connect to 10.0.0.100 port 24 (tcp) failed: Connection refused nc: connect to 10.0.0.100 port 25 (tcp) failed: Connection refused nc: connect to 10.0.0.100 port 26 (tcp) failed: Connection refused nc: connect to 10.0.0.100 port 27 (tcp) failed: Connection refused nc: connect to 10.0.0.100 port 28 (tcp) failed: Connection refused nc: connect to 10.0.0.100 port 29 (tcp) failed: Connection refused nc: connect to 10.0.0.100 port 30 (tcp) failed: Connection refused
使用nc命令,模擬QQ聊天工具聊天
10.18 nslookup:域名查詢工具
功能說明
語法格式
【選項說明】
使用范例
交互模式
[root@k8s-node1 ~]# nslookup
> www.wenyule.top # 符號“>”是nslookup命令的提示。在此提示符下輸入要查詢的城名信息進行查詢。 Server: 10.0.0.2 # 默認DNS服務器。 Address: 10.0.0.2#53 #上面的DNS服務器的IP地址與端口號。 Non-authoritative answer: # 非授權域名服務器的應答,說明本域名服務器給出的城名解析信息是從其他域名服務器那里查詢所得到的信息,而非自己管理的域。 Name: www.wenyule.top Address: 66.154.120.110 #<顯示城名對應的IP地址。 > server 223.5.5.5 #指定解析域名的服務器地址,這個是阿里雲的公共DNS服務器 Default server: 223.5.5.5 Address: 223.5.5.5#53 > wenyule.top #輸入待解析的域名 Server: 223.5.5.5 Address: 223.5.5.5#53 Non-authoritative answer: Name: wenyule.top Address: 66.154.120.110 > > set type=ANY #查詢域名有關的所有信息: > www.baidu.com Server: 223.5.5.5 Address: 223.5.5.5#53 Non-authoritative answer: www.baidu.com canonical name = www.a.shifen.com. Authoritative answers can be found from: > set type=MX # 查詢郵件MX記錄: > baidu.com Server: 223.6.6.6 Address: 223.6.6.6#53 Non-authoritative answer: baidu.com mail exchanger = 10 mx.maillb.baidu.com. baidu.com mail exchanger = 20 mx50.baidu.com. baidu.com mail exchanger = 20 jpmx.baidu.com. baidu.com mail exchanger = 15 mx.n.shifen.com. baidu.com mail exchanger = 20 mx1.baidu.com. 可以直接在命令行指定解析域名的服務器地址,但是要注意寫法,不要少了“-”: [root@k8s-node1 ~]# nslookup - 223.5.5.5 > baidu.com Server: 223.5.5.5 Address: 223.5.5.5#53 Non-authoritative answer: Name: baidu.com Address: 123.125.114.144 Name: baidu.com Address: 220.181.57.216
非交互查模式
采用非交互查模式,指定域名服務器地址,查詢www.oldboyedu.com對應的域名記錄:
[root@k8s-node1 ~]# nslookup baidu.com 223.5.5.5 Server: 223.5.5.5 Address: 223.5.5.5#53 Non-authoritative answer: Name: baidu.com Address: 123.125.114.144 Name: baidu.com Address: 220.181.57.216
10.19 dig:域名查詢工具
dig命令
dig命令的參數選項及說明
查詢指定域名的IP地址
[root@cs6 ~]# dig www.wenyule.top
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.1 <<>> www.wenyule.top ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52108 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 18 ;; QUESTION SECTION: ;www.wenyule.top. IN A ;; ANSWER SECTION: www.wenyule.top. 5 IN A 213.232.105.22 #<=查詢結果。 ;; AUTHORITY SECTION: wenyule.top. 5 IN NS dns18.hichina.com. wenyule.top. 5 IN NS dns17.hichina.com. ;; ADDITIONAL SECTION: dns17.hichina.com. 5 IN A 140.205.41.27 dns17.hichina.com. 5 IN A 140.205.81.17 dns17.hichina.com. 5 IN A 140.205.81.27 dns17.hichina.com. 5 IN A 106.11.141.117 dns17.hichina.com. 5 IN A 106.11.141.127 dns17.hichina.com. 5 IN A 106.11.211.57 dns17.hichina.com. 5 IN A 106.11.211.67 dns17.hichina.com. 5 IN A 140.205.41.17 dns18.hichina.com. 5 IN A 106.11.211.68 dns18.hichina.com. 5 IN A 140.205.41.18 dns18.hichina.com. 5 IN A 140.205.41.28 dns18.hichina.com. 5 IN A 140.205.81.18 dns18.hichina.com. 5 IN A 140.205.81.28 dns18.hichina.com. 5 IN A 106.11.141.118 dns18.hichina.com. 5 IN A 106.11.141.128 dns18.hichina.com. 5 IN A 106.11.211.58 dns17.hichina.com. 5 IN AAAA 2400:3200:2000:36::1 dns18.hichina.com. 5 IN AAAA 2400:3200:2000:37::1 ;; Query time: 56 msec #<=查詢時間。 ;; SERVER: 10.0.0.2#53(10.0.0.2) #<=使用默認的DNS服務器。 ;; WHEN: Tue May 7 14:35:44 2019 ;; MSG SIZE rcvd: 412
反向域名解析例子
[root@cs6 ~]# dig -x 213.232.105.22 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.1 <<>> -x 213.232.105.22 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 45496 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0 ;; QUESTION SECTION: ;22.105.232.213.in-addr.arpa. IN PTR ;; AUTHORITY SECTION: 213.in-addr.arpa. 5 IN SOA pri.authdns.ripe.net. dns.ripe.net. 1557371861 3600 600 864000 3600 ;; Query time: 124 msec ;; SERVER: 10.0.0.2#53(10.0.0.2) ;; WHEN: Tue May 7 14:40:42 2019 ;; MSG SIZE rcvd: 105
查詢MX類型的域名信息
[root@cs6 ~]# dig -t MX oldboyedu.com #<=使用-t 選項選擇查詢的類型
; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.1 <<>> -t MX oldboyedu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: REFUSED, id: 13697 ;; flags: qr rd; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 0 ;; WARNING: recursion requested but not available ;; QUESTION SECTION: ;oldboyedu.com. IN MX ;; Query time: 5 msec ;; SERVER: 10.0.0.2#53(10.0.0.2) ;; WHEN: Tue May 7 14:42:57 2019 ;; MSG SIZE rcvd: 31
顯示完整的DNS解析過程
[root@cs6 ~]# dig @223.5.5.5 www.wenyule.top +trace ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.68.rc1.el6_10.1 <<>> @223.5.5.5 www.wenyule.top +trace ; (1 server found) ;; global options: +cmd . 195170 IN NS g.root-servers.net. . 195170 IN NS j.root-servers.net. . 195170 IN NS c.root-servers.net. . 195170 IN NS f.root-servers.net. . 195170 IN NS m.root-servers.net. . 195170 IN NS i.root-servers.net. . 195170 IN NS d.root-servers.net. . 195170 IN NS e.root-servers.net. . 195170 IN NS a.root-servers.net. . 195170 IN NS b.root-servers.net. . 195170 IN NS h.root-servers.net. . 195170 IN NS k.root-servers.net. . 195170 IN NS l.root-servers.net. #<=顯示全球13個根服務器a-m ;; Received 228 bytes from 223.5.5.5#53(223.5.5.5) in 127 ms top. 172800 IN NS a.zdnscloud.com. top. 172800 IN NS b.zdnscloud.com. top. 172800 IN NS c.zdnscloud.com. top. 172800 IN NS d.zdnscloud.com. top. 172800 IN NS f.zdnscloud.com. top. 172800 IN NS g.zdnscloud.com. top. 172800 IN NS i.zdnscloud.com. top. 172800 IN NS j.zdnscloud.com. ;; Received 326 bytes from 192.5.5.241#53(192.5.5.241) in 104 ms wenyule.top. 3600 IN NS dns17.hichina.com. wenyule.top. 3600 IN NS dns18.hichina.com. ;; Received 84 bytes from 203.99.27.1#53(203.99.27.1) in 43 ms www.wenyule.top. 600 IN A 213.232.105.22 ;; Received 49 bytes from 106.11.141.128#53(106.11.141.128) in 59 ms
精簡輸出例子
[root@cs6 ~]# dig +nocmd +nocomment +nostat www.wenyule.top
;www.wenyule.top. IN A
www.wenyule.top. 5 IN A 213.232.105.22 top. 5 IN NS f.zdnscloud.com. top. 5 IN NS g.zdnscloud.com. top. 5 IN NS b.zdnscloud.com. top. 5 IN NS i.zdnscloud.com. top. 5 IN NS d.zdnscloud.com. top. 5 IN NS j.zdnscloud.com. top. 5 IN NS a.zdnscloud.com. top. 5 IN NS c.zdnscloud.com. b.zdnscloud.com. 5 IN A 203.99.25.1 d.zdnscloud.com. 5 IN A 203.99.27.1 f.zdnscloud.com. 5 IN A 114.67.46.12 g.zdnscloud.com. 5 IN A 42.62.2.16 i.zdnscloud.com. 5 IN AAAA 2401:8d00:1::1 j.zdnscloud.com. 5 IN AAAA 2401:8d00:2::1 [root@cs6 ~]# dig +short www.wenyule.top 213.232.105.22
10.20 host:域名查詢工具
host命令
是用於查詢DNS的工具,它可以將指定主機名稱轉換為IP地址。
host命令的參數選項及說明
-a 顯示詳細的DNS信息
-t 指定查詢的域名信息類型,可以是“A”、“ALL”、“MX”和“NS”等
DNS查詢
[root@cs6 ~]# host www.wenyule.top
www.wenyule.top has address 213.232.105.22
查詢詳細信息
[root@cs6 ~]# host -a www.wenyule.top
Trying "www.wenyule.top"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 53480
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 18
;; QUESTION SECTION:
;www.wenyule.top. IN ANY
;; ANSWER SECTION:
www.wenyule.top. 5 IN A 213.232.105.22
;; AUTHORITY SECTION:
wenyule.top. 5 IN NS dns17.hichina.com.
wenyule.top. 5 IN NS dns18.hichina.com.
;; ADDITIONAL SECTION:
dns17.hichina.com. 5 IN A 140.205.81.17
dns17.hichina.com. 5 IN A 140.205.81.27
dns17.hichina.com. 5 IN A 106.11.141.117
dns17.hichina.com. 5 IN A 106.11.141.127
dns17.hichina.com. 5 IN A 106.11.211.57
dns17.hichina.com. 5 IN A 106.11.211.67
dns17.hichina.com. 5 IN A 140.205.41.17
dns17.hichina.com. 5 IN A 140.205.41.27
dns17.hichina.com. 5 IN AAAA 2400:3200:2000:36::1
dns18.hichina.com. 5 IN A 106.11.211.68
dns18.hichina.com. 5 IN A 140.205.41.18
dns18.hichina.com. 5 IN A 140.205.41.28
dns18.hichina.com. 5 IN A 140.205.81.18
dns18.hichina.com. 5 IN A 140.205.81.28
dns18.hichina.com. 5 IN A 106.11.141.118
dns18.hichina.com. 5 IN A 106.11.141.128
dns18.hichina.com. 5 IN A 106.11.211.58
dns18.hichina.com. 5 IN AAAA 2400:3200:2000:37::1
Received 412 bytes from 10.0.0.2#53 in 31 ms
指定DNS服務器查詢
[root@cs6 ~]# host -a www.wenyule.top 8.8.8.8
Trying "www.wenyule.top"
Using domain server:
Name: 8.8.8.8
Address: 8.8.8.8#53
Aliases:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20333
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 8, ADDITIONAL: 8
;; QUESTION SECTION:
;www.wenyule.top. IN ANY
;; ANSWER SECTION:
www.wenyule.top. 600 IN A 213.232.105.22
;; AUTHORITY SECTION:
top. 48532 IN NS j.zdnscloud.com.
top. 48532 IN NS a.zdnscloud.com.
top. 48532 IN NS d.zdnscloud.com.
top. 48532 IN NS g.zdnscloud.com.
top. 48532 IN NS c.zdnscloud.com.
top. 48532 IN NS f.zdnscloud.com.
top. 48532 IN NS i.zdnscloud.com.
top. 48532 IN NS b.zdnscloud.com.
;; ADDITIONAL SECTION:
a.zdnscloud.com. 703 IN A 203.99.24.1
b.zdnscloud.com. 2433 IN A 203.99.25.1
c.zdnscloud.com. 2366 IN A 203.99.26.1
d.zdnscloud.com. 769 IN A 203.99.27.1
f.zdnscloud.com. 2145 IN A 114.67.46.12
g.zdnscloud.com. 1039 IN A 42.62.2.16
i.zdnscloud.com. 175 IN AAAA 2401:8d00:1::1
j.zdnscloud.com. 1278 IN AAAA 2401:8d00:2::1
Received 342 bytes from 8.8.8.8#53 in 56 ms
按類進行查詢
[root@cs6 ~]# host -t MX wenyule.top wenyule.top mail is handled by 5 mxn.mxhichina.com. wenyule.top mail is handled by 10 mxw.mxhichina.com.
10.21 nmap:網絡探測工具和安全/端口掃描器
nmap命令
nmap命令的參數選項及說明
查看主機當前開放的端口
[root@cs6 ~]# nmap 10.0.0.100 Starting Nmap 5.51 ( http://nmap.org ) at 2019-05-07 16:49 CST Nmap scan report for 10.0.0.100 Host is up (0.0000040s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 6.83 seconds
掃描主機的指定端口
[root@cs6 ~]# nmap -p 1024-65535 10.0.0.100 Starting Nmap 5.51 ( http://nmap.org ) at 2019-05-07 17:01 CST Nmap scan report for 10.0.0.100 Host is up (0.0000040s latency). All 64512 scanned ports on 10.0.0.100 are closed Nmap done: 1 IP address (1 host up) scanned in 7.18 seconds
掃描局域網內所有的IP
[root@cs6 ~]# nmap 10.0.0.0/24 Starting Nmap 5.51 ( http://nmap.org ) at 2019-05-07 17:02 CST Nmap scan report for 10.0.0.1 Host is up (0.00023s latency). Not shown: 999 filtered ports PORT STATE SERVICE 3306/tcp open mysql MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 10.0.0.2 Host is up (0.00013s latency). Not shown: 999 closed ports PORT STATE SERVICE 53/tcp filtered domain MAC Address: 00:50:56:F4:FB:52 (VMware) Nmap scan report for 10.0.0.100 Host is up (0.0000040s latency). Not shown: 998 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http Nmap done: 256 IP addresses (3 hosts up) scanned in 25.94 seconds [root@cs6 ~]# nmap -sn 10.0.0.0/24 #<==使用-sn選項不掃描端口。 Starting Nmap 5.51 ( http://nmap.org ) at 2019-05-07 17:03 CST Nmap scan report for 10.0.0.1 Host is up (0.000089s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 10.0.0.2 Host is up (0.00013s latency). MAC Address: 00:50:56:F4:FB:52 (VMware) Nmap scan report for 10.0.0.100 Host is up. Nmap done: 256 IP addresses (3 hosts up) scanned in 21.05 seconds [root@cs6 ~]# nmap -sn 10.0.0.1-10 #<=可以使用這種地進范圍進行掃描。 Starting Nmap 5.51 ( http://nmap.org ) at 2019-05-07 17:04 CST Nmap scan report for 10.0.0.1 Host is up (0.000034s latency). MAC Address: 00:50:56:C0:00:08 (VMware) Nmap scan report for 10.0.0.2 Host is up (0.00015s latency). MAC Address: 00:50:56:F4:FB:52 (VMware) Nmap done: 10 IP addresses (2 hosts up) scanned in 6.77 seconds
探測目標主機的服務和操作系統的版本
[root@cs6 ~]# nmap -O -sV 10.0.0.100 Starting Nmap 5.51 ( http://nmap.org ) at 2019-05-07 17:05 CST Nmap scan report for 10.0.0.100 Host is up (0.000090s latency). Not shown: 998 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 5.3 (protocol 2.0) 80/tcp open http? 1 service unrecognized despite returning data. If you know the service/version, please submit the following fingerprint at http://www.insecure.org/cgi-bin/servicefp-submit.cgi : SF-Port80-TCP:V=5.51%I=7%D=5/7%Time=5CD14A57%P=x86_64-redhat-linux-gnu%r(N SF:ULL,1D,"I\x20love\x20linux\x20www\.wenyule\.top\n"); No exact OS matches for host (If you know what OS is running on it, see http://nmap.org/submit/ ). TCP/IP fingerprint: OS:SCAN(V=5.51%D=5/7%OT=22%CT=1%CU=35109%PV=Y%DS=0%DC=L%G=Y%TM=5CD14A63%P=x OS:86_64-redhat-linux-gnu)SEQ(SP=106%GCD=1%ISR=109%TI=Z%CI=Z%II=I%TS=A)OPS( OS:O1=MFFD7ST11NW7%O2=MFFD7ST11NW7%O3=MFFD7NNT11NW7%O4=MFFD7ST11NW7%O5=MFFD OS:7ST11NW7%O6=MFFD7ST11)WIN(W1=FFCB%W2=FFCB%W3=FFCB%W4=FFCB%W5=FFCB%W6=FFC OS:B)ECN(R=Y%DF=Y%T=40%W=FFD7%O=MFFD7NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A= OS:S+%F=AS%RD=0%Q=)T2(R=N)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q OS:=)T5(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A OS:%A=Z%F=R%O=%RD=0%Q=)T7(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y OS:%DF=N%T=40%IPL=164%UN=0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T OS:=40%CD=S) #<= -O 顯示系統版本,但是nmap命令是根據探測的TCP/IP指紋與自己的指紋庫進行對比的。如果不在指紋庫之內的系統就會無法識別。 Network Distance: 0 hops OS and Service detection performed. Please report any incorrect results at http://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 18.61 seconds
上面的輸出信息中不僅包含了端口號,而且還包括了服務的版本號。在網絡安全性要求較高的主機上,最好能夠屏蔽服務版本號,以防止黑客利用特定版本的服務漏洞進行攻擊。
10.22 tcpdump:監聽網絡流量
【功能說明】
【語法格式】
使用范例
不加參數運行tcpdump命令監聽網絡。
[root@lewen ~]# tcpdump #默認清況下,直接啟動tcpdump將監視第一個網絡接口上所有流過的數據包。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes ... 使用tcpdump命令時,如果不輸入過濾規則,則輸出的數據量將會很大。 精簡輸出信息。 [root@lewen ~]# tcpdump -q 04:08:32.963134 IP lewen.ssh > 10.0.0.1.10662: tcp 180 04:08:32.963256 IP lewen.ssh > 10.0.0.1.10662: tcp 116 04:08:32.963325 IP 10.0.0.1.10662 > lewen.ssh: tcp 0 04:08:32.963390 IP lewen.ssh > 10.0.0.1.10662: tcp 180 04:08:32.963492 IP lewen.ssh > 10.0.0.1.10662: tcp 116 04:08:32.964604 IP lewen.ssh > 10.0.0.1.10662: tcp 116 [root@lewen ~]# tcpdump -c 5 #使用-c選項指定監聽的數據包數量,這樣就不需要使用Ctrl+C了。 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 04:09:50.191752 IP lewen.ssh > 10.0.0.1.10662: Flags [P.], seq 3827665832:3827666044, ack 1911166938, win 274, length 212 04:09:50.192434 IP lewen.44182 > public1.alidns.com.domain: 5716+ PTR? 1.0.0.10.in-addr.arpa. (39) 04:09:50.245211 IP 10.0.0.1.10662 > lewen.ssh: Flags [.], ack 212, win 8212, length 0 04:09:50.257155 IP public1.alidns.com.domain > lewen.44182: 5716 NXDomain 0/1/0 (116) 04:09:50.258230 IP lewen.36787 > public1.alidns.com.domain: 45732+ PTR? 81.0.0.10.in-addr.arpa. (40) 5 packets captured 21 packets received by filter 0 packets dropped by kernel
監聽指定網卡收到的數據包
[root@lewen ~]# tcpdump -i eth0
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 04:11:33.924611 IP 10.0.0.1.10662 > lewen.ssh: Flags [.], ack 651624, win 8209, length 0 04:11:33.924679 IP lewen.ssh > 10.0.0.1.10662: Flags [P.], seq 651624:651884, ack 105, win 274, length 260 04:11:33.924776 IP lewen.ssh > 10.0.0.1.10662: Flags [P.], seq 651884:652048, ack 105, win 274, length 164 04:11:33.924834 IP 10.0.0.1.10662 > lewen.ssh: Flags [.], ack 652048, win 8207, length 0 04:11:33.924901 IP lewen.ssh > 10.0.0.1.10662: Flags [P.], seq 652048:652308, ack 105, win 274, length 260 04:11:33.929182 IP lewen.ssh > 10.0.0.1.10662: Flags [P.], seq 652308:652472, ack 105, win 274, length 164 04:11:33.931108 IP 10.0.0.1.10662 > lewen.ssh: Flags [.], ack 652472, win 8212, length 0 04:11:33.931140 IP lewen.ssh > 10.0.0.1.10662: Flags [P.], seq 652472:652636, ack 105, win 274, length 164 04:11:33.931140:當前時間,精確到微秒。 IP lewen.ssh > 10.0.0.1.10662:從主機lewen的SSH端口發送數據到10.0.0.1的10662端口,“>”代表數據流向。 Flags[P.]:TCP包中的標志信息,S是SYN標志的縮寫,F(FIN)、P(PUSH)、R(RST)、"."(沒有標記)。 seq:數據包中的數據的順序號。 ack:下次期望的順序號。 win:接收緩存的窗口大小。 length:數據包長度。
監聽指定主機的數據包
[root@lewen ~]# tcpdump -n host 10.0.0.1 #<=使用-n選項不進行DNS解析,加快顯示地度。監聽指定主機的關鍵字為host,后面直接接主機名或了IP地址即可。本行命令的作用是監聽所有10.0.0.1的主機收到的和發出的數據包。 [root@lewen ~]# tcpdump -n src host 10.0.0.1 #<-只監聽從10.0.0.1發出的數據包,即源地址為10.0.0.1,關鍵字為src(source,原地址)。 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 20:20:55.821984 IP 10.0.0.1.14389 > 10.0.0.7.ssh: Flags [.], ack 3862927143, win 4106, length 0 20:20:55.866408 IP 10.0.0.1.14389 > 10.0.0.7.ssh: Flags [.], ack 149, win 4105, length 0 20:20:55.907580 IP 10.0.0.1.14389 > 10.0.0.7.ssh: Flags [.], ack 297, win 4105, length 0 20:20:55.950705 IP 10.0.0.1.14389 > 10.0.0.7.ssh: Flags [.], ack 445, win 4104, length 0 20:20:55.991940 IP 10.0.0.1.14389 > 10.0.0.7.ssh: Flags [.], ack 593, win 4103, length 0 20:20:56.032129 IP 10.0.0.1.14389 > 10.0.0.7.ssh: Flags [.], ack 741, win 4103, length 0 [root@lewen ~]# tcpdump -n dst host 10.0.0.1 #<==只監聽10.0.0.1收到的數據包,即目標地址為10.0.0.1,關就字為dst(destination,目的地)。 20:22:13.074240 IP 10.0.0.7.ssh > 10.0.0.1.14389: Flags [P.], seq 506496:506660, ack 53, win 252, length 164 20:22:13.074331 IP 10.0.0.7.ssh > 10.0.0.1.14389: Flags [P.], seq 506660:506824, ack 53, win 252, length 164
監聽指定端口的數據包
[root@lewen ~]# tcpdump -nn port 22 #使用-n選項不進行DNS解析,但是其會將一些協議、端口進行轉換,比如22端口轉為ssh。因此本例使用nn 選項。監聽指定端口的關鍵字是port,后面接上端口號即可 20:24:26.193100 IP 10.0.0.1.14389 > 10.0.0.7.22: Flags [.], ack 556296, win 4101, length 0 20:24:26.193225 IP 10.0.0.7.22 > 10.0.0.1.14389: Flags [P.], seq 556296:556556, ack 105, win 252, length 260 20:24:26.193535 IP 10.0.0.7.22 > 10.0.0.1.14389: Flags [P.], seq 556556:556720, ack 105, win 252, length 164
監聽指定協議的數據包。
[root@lewen ~]# tcpdump -n arp #<--監聽ARP數據包,因此表達式直接寫arp即可。
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 20:26:43.219758 ARP, Request who-has 10.0.0.96 tell 10.0.0.210, length 46 20:26:43.511133 ARP, Request who-has 10.0.0.95 tell 10.0.0.210, length 46 20:26:44.224050 ARP, Request who-has 10.0.0.96 tell 10.0.0.210, length 46 20:26:44.512986 ARP, Request who-has 10.0.0.95 tell 10.0.0.210, length 46 20:26:45.230012 ARP, Request who-has 10.0.0.96 tell 10.0.0.210, length 46 [root@lewen ~]# tcpdump -n icmp #<-監聽icmp數據包(想要查着下面的監拉數據,可以使用其他機器ping本機即可) tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 20:27:31.377258 IP 10.0.0.210 > 10.0.0.2: ICMP 10.0.0.210 udp port 49207 unreachable, length 127 20:27:31.479590 IP 10.0.0.210 > 10.0.0.2: ICMP 10.0.0.210 udp port 48776 unreachable, length 135 常見的協議關鍵字有ip、arp、icmp、tcp、udp等類型。
多個過濾條件混合使用
前面的幾種方法都是使用單個過濾條件過濾數據包,其實過濾條件可以混合使用,因為tcpdump命令支持邏輯運算符and(與)、or(或)、!(非)。
[root@lewen ~]# tcpdump -n ip host 10.0.0.7 and ! 10.0.0.1 #<==獲取主機10.0.0.7與所有主機(除了主機10.0.0.1之外)通信的ip數據包。 tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 20:29:42.366445 IP 10.0.0.210.51642 > 10.0.0.7.zabbix-agent: Flags [S], seq 1999440710, win 29200, options [mss 1460,sackOK,TS val 75899232 ecr 0,nop,wscale 7], length 0 20:29:42.366483 IP 10.0.0.7.zabbix-agent > 10.0.0.210.51642: Flags [S.], seq 920922656, ack 1999440711, win 28960, options [mss 1460,sackOK,TS val 80531477 ecr 75899232,nop,wscale 7], length 0 20:29:42.366628 IP 10.0.0.210.51642 > 10.0.0.7.zabbix-agent: Flags [.], ack 1, win 229, options [nop,nop,TS val 75899232 ecr 80531477], length 0 20:29:42.366674 IP 10.0.0.210.51642 > 10.0.0.7.zabbix-agent: Flags [P.], seq 1:15, ack 1, win 229, options [nop,nop,TS val 75899232 ecr 80531477], length 14 20:29:42.366681 IP 10.0.0.7.zabbix-agent > 10.0.0.210.51642: Flags [.], ack 15, win 227, options [nop,nop,TS val 80531477 ecr 75899232], length 0 20:29:42.371129 IP 10.0.0.210.51644 > 10.0.0.7.zabbix-agent: Flags [S], seq 2767440940, win 29200, options [mss 1460,sackOK,TS val 75899236 ecr 0,nop,wscale 7], length 0 20:29:42.371153 IP 10.0.0.7.zabbix-agent > 10.0.0.210.51644: Flags [S.], seq 3632462468, ack 2767440941, win 28960, options [mss 1460,sackOK,TS val 80531482 ecr 75899236,nop,wscale 7], length 0 20:29:42.371313 IP 10.0.0.210.51644 > 10.0.0.7.zabbix-agent: Flags [.], ack 1, win 229, options [nop,nop,TS val 75899237 ecr 80531482], length 0 20:29:42.371397 IP 10.0.0.210.51644 > 10.0.0.7.zabbix-agent: Flags [P.], seq 1:25, ack 1, win 229, options [nop,nop,TS val 75899237 ecr 8
利用tcpdump抓包詳解tcp/ip 連接和斷開過程的案例。
-
TCP三次握手
-
數據傳送
-
TCP四次斷開
-
SYN:(同步序列編號,Synchronize Sequence Numbers)該標志僅在三次握手建立TCP連接時有效。表示一個新的TCP連接請求。
-
ACK:(確認編號,Acknowledgement Number)是對TCP請求的確認標志,同時提示對端系統已經成功接收了所有的數據。
-
FIN:(結束標志,FINish)用來結束一個TCP回話。但對應端口仍然處於開放狀態,准備接收后續數據。
[root@doit ~]# tcpdump tcp dst port 80 or src 104.243.30.169 -i eth0 -n tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 20:35:59.136119 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 2702154317:2702154529, ack 1793279353, win 501, length 212 20:35:59.136535 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 212:408, ack 1, win 501, length 196 20:35:59.137177 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 408:588, ack 1, win 501, length 180 20:35:59.137818 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 588:768, ack 1, win 501, length 180 20:35:59.138447 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 768:948, ack 1, win 501, length 180 20:35:59.139087 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 948:1128, ack 1, win 501, length 180 20:35:59.139729 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 1128:1308, ack 1, win 501, length 180 20:35:59.140360 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 1308:1488, ack 1, win 501, length 180 20:35:59.140996 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 1488:1668, ack 1, win 501, length 180 20:35:59.141636 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 1668:1848, ack 1, win 501, length 180 20:35:59.142273 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 1848:2028, ack 1, win 501, length 180 20:35:59.142908 IP 104.243.30.169.26038 > 111.40.18.151.14656: Flags [P.], seq 2028:2208, ack 1, win 501, length 180
