tcpdump

1.ip地址簡單換算

如:100.0.0.16/28

  1. 該ip指前28位爲網絡地址,100.0.0就是網絡地址。後面8位中有4位也做網絡地址。2的4次方等於16,因此該4位網絡地址可劃分16個網段,256/16=16,每個網段有16個子網。因此後面網段劃分大概爲0-15 16-31 32-47等等 ,100.0.0.16在 16-31網段中,因此該ip 網段範圍 100.0.0.16-100.0.0.31
  2. 該ip最後8位子網掩碼位11110000,因此換算成2的7次方+2的6次方+2的5次方+2的4次方=240
  3. 結果 :網關爲網段中一個地址,廣播地址拿範圍最後一個地址
    子網掩碼:255.255.255.240
    網關地址:100.0.0.17
    網段範圍:100.0.0.16-100.0.0.31
    廣播地址:100.0.0.31
  4. 用ipcalc來檢查結果
    [root@centos7 ~]#ipcalc -nmb 100.0.0.16/28
    NETMASK=255.255.255.240
    BROADCAST=100.0.0.31
    NETWORK=100.0.0.16

2.tcpdump

  1. 基本格式
    tcpdump 抓包選項 協議類型 數據包方向 端口號類型
  2. 基本選項
    -c:指定要抓取的包數量
    -i interface:指定tcpdump需要監聽的接口
    -n:對地址以數字方式顯式,也就是不做主機名解析
    -nn:把端口顯示爲數值,否則顯示端口服務名,不解析端口和地址
    -s snaplen 指定抓包的長度,如果爲0那麼抓完整的包
    -w file 抓包的內容保存在指定的文件中
    -e:輸出的每行中都將包括數據鏈路層頭部信息,例如源MAC和目標MAC
    -q:快速打印明顯是簡單信息
    -X:輸出包的頭部數據,會以16進制和ASCII兩種方式同時輸出
    -XX:輸出包的頭部數據,會以16進制和ASCII兩種方式同時輸出,更詳細
    -v:當分析和打印的時候,產生詳細的輸出
    -vv:產生比-v更詳細的輸出
    -vvv:產生比-vv更詳細的輸出
    -x 打印出數據包的內容
    -xx 更加詳細的打印出數據包的內容
    -X 用ASCII碼的形式打印出數據包的內容
    -XX 同上,不過打印出來的信息內容更加詳盡
    -D:列出可用於抓包的接口,將會列出接口的數值編號和接口名,它們都可以用於"-i"後
    -r file :從給定的數據包文件中讀取數據
  3. 協議類型
    一般有tcp、udp、arp、ip、ether、icmp等,若未給定協議類型,則匹配所有可能的類型。如"tcp port 23","udp portrange 7005-7009"。
  4. 數據包方向
    一般包括src/dst/src or dst/src and dst,默認爲src or dst。如,"src dcrfan"表示源主機爲dcrfan的數據包,"dst net 128.3"表示目標網絡爲128.3的數據包,"src or dst port 22"表示源或目的端口爲22的數據包
  5. 端口類型
    一般值有host/net/port/portrange,如"host dcrfan","net 128.3","port 20","portrange 6000-6008",默認的type爲host host包括ip地址

  6. 表達式單元之間可以使用操作符" and / or / not / "進行連接
  7. 示例
    1. 顯示可監聽端口
      [root@centos7 ~]#tcpdump -D
      1.eth0
      2.virbr0
      3.bluetooth0 (Bluetooth adapter number 0)
      4.nflog (Linux netfilter log (NFLOG) interface)
      5.nfqueue (Linux netfilter queue (NFQUEUE) interface)
      6.eth1
      7.usbmon1 (USB bus number 1)
      8.eth2
      9.usbmon2 (USB bus number 2)
      10.any (Pseudo-device that captures on all interfaces)
      11.lo [Loopback]
    2. 抓取本機22端口的包
      [root@centos7 ~]#tcpdump -c 10 -nn -i eth0 tcp port 22
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
      21:09:32.396368 IP 192.168.0.109.22 > 192.168.0.101.13784: Flags [P.], seq 1411524175:1411524415, ack 4189116864, win 549, length 240
      21:09:32.396779 IP 192.168.0.109.22 > 192.168.0.101.13784: Flags [P.], seq 240:464, ack 1, win 549, length 224
      21:09:32.396996 IP 192.168.0.101.13784 > 192.168.0.109.22: Flags [.], ack 464, win 2049, length 0
      21:09:32.397092 IP 192.168.0.109.22 > 192.168.0.101.13784: Flags [P.], seq 464:672, ack 1, win 549, length 208
      21:09:32.397233 IP 192.168.0.109.22 > 192.168.0.101.13784: Flags [P.], seq 672:976, ack 1, win 549, length 304
      21:09:32.397446 IP 192.168.0.101.13784 > 192.168.0.109.22: Flags [.], ack 976, win 2047, length 0
      21:09:32.397495 IP 192.168.0.109.22 > 192.168.0.101.13784: Flags [P.], seq 976:1184, ack 1, win 549, length 208
      21:09:32.397718 IP 192.168.0.109.22 > 192.168.0.101.13784: Flags [P.], seq 1184:1488, ack 1, win 549, length 304
      21:09:32.397884 IP 192.168.0.101.13784 > 192.168.0.109.22: Flags [.], ack 1488, win 2053, length 0
      21:09:32.397899 IP 192.168.0.109.22 > 192.168.0.101.13784: Flags [P.], seq 1488:1696, ack 1, win 549, length 208
      10 packets captured
      11 packets received by filter
      0 packets dropped by kernel
    3. 抓取ping包
      [root@centos7 ~]#tcpdump -c 10 -i eth0 icmp
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
      21:20:18.570859 IP 192.168.0.101 > centos7.dcrfan: ICMP echo request, id 1, seq 35, length 40
      21:20:18.571165 IP centos7.dcrfan > 192.168.0.101: ICMP echo reply, id 1, seq 35, length 40
      21:20:19.573051 IP 192.168.0.101 > centos7.dcrfan: ICMP echo request, id 1, seq 36, length 40
      21:20:19.573168 IP centos7.dcrfan > 192.168.0.101: ICMP echo reply, id 1, seq 36, length 40
      21:20:20.578300 IP 192.168.0.101 > centos7.dcrfan: ICMP echo request, id 1, seq 37, length 40
      21:20:20.578388 IP centos7.dcrfan > 192.168.0.101: ICMP echo reply, id 1, seq 37, length 40
      21:20:21.582907 IP 192.168.0.101 > centos7.dcrfan: ICMP echo request, id 1, seq 38, length 40
      21:20:21.583055 IP centos7.dcrfan > 192.168.0.101: ICMP echo reply, id 1, seq 38, length 40
      21:20:26.553467 IP 192.168.0.101 > centos7.dcrfan: ICMP echo request, id 1, seq 39, length 40
      21:20:26.553619 IP centos7.dcrfan > 192.168.0.101: ICMP echo reply, id 1, seq 39, length 40
      10 packets captured
      10 packets received by filter
      0 packets dropped by kernel
    4. 解析包的數據
      [root@centos7 ~]#tcpdump -c 2 -XX -nn -i eth0 tcp port 22
      tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
      listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
      21:30:22.405243 IP 192.168.0.109.22 > 192.168.0.101.13784: Flags [P.], seq 1411587551:1411587791, ack 4189159200, win 945, length 240
      0x0000: 10f0 0513 880a 000c 2953 4db3 0800 4510 ........)SM...E.
      0x0010: 0118 a0d0 4000 4006 16dd c0a8 006d c0a8 ....@[email protected]..
      0x0020: 0065 0016 35d8 5423 1ddf f9b1 7f20 5018 .e..5.T#......P.
      0x0030: 03b1 832d 0000 f5f7 52b6 62bb 0442 361a ...-....R.b..B6.
      0x0040: 384f 441d 8798 89dc 73d0 eb95 05dc 854a 8OD.....s......J
      0x0050: bbba ac2c 95b1 f75d 647c 22a7 ebc8 6774 ...,...]d|"...gt
      0x0060: 430a f6c7 fb84 dbee 6f70 2bff 5531 8746 C.......op+.U1.F
      0x0070: 442d 4a20 47f9 05dc 272e ecec 3e10 9b3a D-J.G...'...>..:
      0x0080: 605a d2a2 92e4 e52e 82f0 4516 a56e 99f9 `Z........E..n..
      0x0090: 2964 08ac 9232 d8d6 16c8 2710 6cda 9588 )d...2....'.l...
      0x00a0: e66a 55ac caee 9244 4f30 022e 11ed f40e .jU....DO0......
      0x00b0: 24bd 80e8 d569 2f9f e937 078f 8075 699e $....i/..7...ui.
      0x00c0: e339 5c80 2cae 5c0f a8e4 5f0a 742a a575 .9.,...._.t*.u
      0x00d0: 5c20 deb8 80dd b7f4 758a a0f1 e277 e6d6 .......u....w..
      0x00e0: 8338 db08 4e72 5508 9357 a5d2 0ddb 1aa5 .8..NrU..W......
      0x00f0: 0ff6 b641 1bcf 2bd7 3f66 2824 0372 6cd4 ...A..+.?f($.rl.
      0x0100: fde0 6f3a 2768 0938 898a 6b50 8ce6 5aef ..o:'h.8..kP..Z.
      0x0110: 0bcb 1f46 42df d226 9b3b 8515 7db0 c263 ...FB..&.;..}..c
      0x0120: 2098 78a7 1173 ..x..s
      21:30:22.405598 IP 192.168.0.101.13784 > 192.168.0.109.22: Flags [.], ack 240, win 2053, length 0
      0x0000: 000c 2953 4db3 10f0 0513 880a 0800 4500 ..)SM.........E.
      0x0010: 0028 617f 4000 4006 572e c0a8 0065 c0a8 .(a.@[email protected]..
      0x0020: 006d 35d8 0016 f9b1 7f20 5423 1ecf 5010 .m5.......T#..P.
      0x0030: 0805 03fa 0000 0000 0000 0000 ............
      2 packets captured
      2 packets received by filter
      0 packets dropped by kernel

3.殭屍進程

  1. 產生原因以及危害
    一個進程在結束自己的生命的時候,其實它並沒有真正的被銷燬,而是留下一個稱爲殭屍進程(Zombie)的數據結構在Linux進程的狀態中,殭屍進程是非常特殊的一種,它已經放棄了幾乎所有內存空間,沒有任何可執行代碼,也不能被調度,僅僅在進程列表中保留一個位置,記載該進程的退出狀態等信息供其他進程收集,除此之外,殭屍進程不再佔有任何內存空間。它需要它的父進程來處理,如果他的父進程沒安裝SIGCHLD信號處理函數調用wait或waitpid()等待子進程結束,又沒有顯式忽略該信號,那麼它就一直保持殭屍狀態,如果這時父進程結束了,那麼init進程自動會接手這個子進程,它還是能被清除的。但是如果如果父進程是一個循環,不會結束,那麼子進程就會一直保持殭屍狀態,這就是爲什麼系統中有時會有殭屍進程。
      Linux系統對運行的進程數量有限制,如果產生過多的殭屍進程佔用了可用的進程號,將會導致新的進程無法生成。這就是殭屍進程對系統的最大危害。

  2. 一般處理方法
    a. 用top命令可查看系統是否存在殭屍進程(zombie)
    top - 17:38:28 up 1 day, 18:39, 3 users, load average: 0.00, 0.01, 0.05
    Tasks: 217 total, 1 running, 216 sleeping, 0 stopped, 0 zombie

    b. 如果存在殭屍進程可以通過 ps axfo state,ppid,pid,cmd
    來查找殭屍進程以及它的父進程,再通過kill -1 父進程id 來處理


4. vmstat信息詳解

  1. 命令格式
    vmstat 選項 [每隔多少秒刷新一次 ] [刷新多少次停止]
    如:vmstat 2 5 每兩秒刷新1次 一共刷新5次
    [root@centos7 ~]#vmstat 2 5
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
    r b swpd free buff cache si so bi bo in cs us sy id wa st
    1 0 63832 97580 1472 444376 0 0 3 2 26 21 0 0 100 0 0
    1 0 63832 97564 1472 444376 0 0 0 0 149 127 0 0 100 0 0
    0 0 63832 97564 1472 444376 0 0 0 0 147 128 0 0 100 0 0
    0 0 63832 97564 1472 444376 0 0 0 0 127 112 0 0 100 0 0
    0 0 63832 97564 1472 444376 0 0 0 0 135 123 0 0 100 0 0

  2. 狀態詳解
    1. procs:
      r 運行進程數量
      b 處於阻塞進程數量
      memory:
      swpd: 交換內存的使用總量
      free:空閒物理內存總量
      buffer:用於buffer的內存總量
      cache:用於cache的內存總量
    2. swap:
      si:從磁盤進內存(swap)的數據速率(kb/s)
      so:從內存(swap)至磁盤的數據速率(kb/s)
    3. io:
      bi 從磁盤讀數據 (blcoks/s)
      bo 寫入磁盤 速率(blcoks/s)
    4. system:
      in: interrupts 中斷速率,包括時鐘
      cs: context switch 進程切換速率
    5. cpu:
      us 用戶使用cpu時間
      sy 系統使用cpu時間
      id:空閒cpu時間
      wa:cpu等待io時間
      st:虛擬機佔用cpu時間
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章