成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

運維工程師必備:請收好 Linux 網絡命令集錦

新聞 系統運維
看著 kali linux 上百個網絡命令,我陷入了沉思。專業的網絡命令實在是太多了,如果要羅列,上千個也是有的。個人不是滲透測試工作者,大部分功能只知皮毛。

 [[334791]]

看著 kali linux 上百個網絡命令,我陷入了沉思。專業的網絡命令實在是太多了,如果要羅列,上千個也是有的。個人不是滲透測試工作者,大部分功能只知皮毛。所以本文是非常淺顯的技術總結,僅聚焦工作中常用到的一些 Linux 命令。

由于nio的普及,ck10k的問題已經成為過去式。現在隨便一臺服務器,就可以支持數十萬級別的連接了。那么我們來算一下,100萬的連接需要多少資源。

首先,每一個連接都是文件句柄,所以需要文件描述符數量支持才行,每一個socket內存占用15k-20k之間,這樣,僅維護相應 socket,就需要20G內存;而廣播一個1KB的消息需要占用的帶寬為1000M!

查看當前系統的連接

如何看當前系統有多少連接呢?可以使用netstat結合awk進行統計。如下腳本,統計了每一種狀態的tcp連接數量

  1. # netstat -antp | awk '{a[$6]++}END{ for(x in a)print x,a[x]}' 
  2.  
  3. LISTEN 41 
  4.  
  5. CLOSE_WAIT 24 
  6.  
  7. ESTABLISHED 150 
  8.  
  9. Foreign 1 
  10.  
  11. TIME_WAIT 92 

但如果你在一臺有上萬連接的服務器上執行這個命令,你可能會等上很長時間。所以,我們有了第二代網絡狀態統計工具:netstat => ss。

  1. # ss -s 
  2.  
  3. Total: 191 (kernel 220
  4.  
  5. TCP: 5056 (estab 42, closed 5000, orphaned 3, synrecv 0, timewait 5000/0), ports 3469 
  6.  
  7. ... 

netstat屬于net-tools工具集,而ss屬于iproute。其命令對應如下,是時候和 net-tools 說 Bye 了。

ss命令

基本使用

我們按照使用場景來看下ss的用法。

查看系統正在監聽的tcp連接

  1. ss -atr 
  2.  
  3. ss -atn #僅ip 

查看系統中所有連接

  1. ss -alt 

查看監聽444端口的進程 pid

  1. ss -ltp | grep 444 

查看進程555占用了哪些端口

  1. ss -ltp | grep 555 

顯示所有 UDP 連接

  1. ss -u -a 
  • 查看TCP sockets,使用-ta選項
  • 查看UDP sockets,使用-ua選項
  • 查看RAW sockets,使用-wa選項
  • 查看UNIX sockets,使用-xa選項

和某個 IP 的所有連接

  1. ss dst 10.66.224.130 
  2.  
  3. ss dst 10.66.224.130:http 
  4.  
  5. ss dst 10.66.224.130:smtp 
  6.  
  7. ss dst 10.66.224.130:443 

顯示所有的 HTTP 連接

  1. ss dport = :http 

查看連接本機最多的前 10 個 IP 地址

  1. netstat -antp | awk '{print $4}' | cut -d ':' -f1 | sort | uniq -c | sort -n -k1 -r | head -n 10 

Recv-Q 和 Send-Q

注意ss的執行結果,我們說明一下Recv-Q和Send-Q。

這兩個值,在LISTEN和ESTAB狀態分別代表不同意義。一般,正常的應用程序這兩個值都應該為0(backlog除外)。數值越大,說明問題越嚴重。

LISTEN 狀態

  • Recv-Q:代表建立的連接還有多少沒有被accept,比如Nginx接受新連接變的很慢
  • Send-Q:代表listen backlog值

ESTAB 狀態

  1. Recv-Q:內核中的數據還有多少(bytes)沒有被應用程序讀取,發生了一定程度的阻塞
  2. Send-Q:代表內核中發送隊列里還有多少(bytes)數據沒有收到ack,對端的接收處理能力不強

查看網絡流量

查看流量

有很多工具可以看網絡流量,但我最喜歡sar。sar是linux上功能最全的監控軟件。如圖,使用sar -n DEV 1即可每秒刷新一次網絡流量。

  1. watch cat /proc/net/dev 

查看占流量最大的 IP

有時候我們發現網絡帶寬占用非常高,但我們無法判斷到底流量來自哪里。這時候,iftop就可以幫上忙了。如圖,可以很容易的找出流量來自哪臺主機。

當你不確定內網的流量來源,比如有人在壓測,api調用不合理等,都可以通過這種方法找到他。

抓包

tcpdump

當我們需要判斷是否有流量,或者調試一個難纏的 netty 應用問題,則可以通過抓包的方式去進行進一步的判斷。在 Linux 上,可以通過 tcpdump 命令抓取數據,然后使用Wireshark 進行分析。

  1. tcpdump -i eth0 -nn -s0 -v port 80 
  • -i 指定網卡進行抓包
  • -n 和ss一樣,表示不解析域名
  • -nn 兩個n表示端口也是數字,否則解析成服務名
  • -s 設置抓包長度,0表示不限制
  • -v 抓包時顯示詳細輸出,-vv、-vvv依次更加詳細

1)加入-A選項將打印 ascii ,-X打印 hex 碼。

  1. tcpdump -A -s0 port 80 

2)抓取特定 IP 的相關包

  1. tcpdump -i eth0 host 10.10.1.1 
  2.  
  3. tcpdump -i eth0 dst 10.10.1.20 

3)-w參數將抓取的包寫入到某個文件中

  1. tcpdump -i eth0 -s0 -w test.pcap 

4)tcpdump支持表達式,還有更加復雜的例子,比如抓取系統中的get,post請求(非https)

  1. tcpdump -s 0 -v -n -l | egrep -i "POST /|GET /|Host:" 

更多參見

https://hackertarget.com/tcpdump-examples/

抓取的數據,使用 wireshark 查看即可。

HTTP 抓包

抓包工具將自身當作代理,能夠抓取你的瀏覽器到服務器之間的通訊,并提供修改、重放、批量執行的功能。是發現問題,分析協議,攻擊站點的利器。常用的有以下三款:

  • Burpsuite (跨平臺)
  • Fiddle2 (Win)
  • Charles (Mac)

流量復制

你可能需要使你的生產環境HTTP真實流量在開發環境或者預演環境重現,這樣就用到了流量復制功能。

有三個工具可供選擇,個人傾向于Gor。

  • Gor
  • TCPReplay
  • TCPCopy

連接數過多問題

根據TCP/IP介紹,socket大概包含10個連接狀態。我們平常工作中遇到的,除了針對SYN的拒絕服務攻擊,如果有異常,大概率是TIME_WAIT和CLOSE_WAIT的問題。

TIME_WAIT一般通過優化內核參數能夠解決;CLOSE_WAIT一般是由于程序編寫不合理造成的,更應該引起開發者注意。

TIME_WAIT

TIME_WAIT 是主動關閉連接的一方保持的狀態,像 nginx、爬蟲服務器,經常發生大量處于time_wait狀態的連接。TCP 一般在主動關閉連接后,會等待 2MS,然后徹底關閉連接。由于 HTTP 使用了 TCP 協議,所以在這些頻繁開關連接的服務器上,就積壓了非常多的 TIME_WAIT 狀態連接。

某些系統通過 dmesg 可以看到以下信息。

  1. __ratelimit: 2170 callbacks suppressed 
  2.  
  3. TCP: time wait bucket table overflow 
  4.  
  5. TCP: time wait bucket table overflow 
  6.  
  7. TCP: time wait bucket table overflow 
  8.  
  9. TCP: time wait bucket table overflow 

通過ss -s命令查看,可以看到timewait已經有2w個了。

  1. ss -s 
  2.  
  3. Total: 174 (kernel 199
  4.  
  5. TCP: 20047 (estab 32, closed 20000, orphaned 4, synrecv 0, timewait 20000/0), ports 10785 

sysctl 命令可以設置這些參數,如果想要重啟生效的話,加入/etc/sysctl.conf文件中。

  1. # 修改閾值 
  2.  
  3. net.ipv4.tcp_max_tw_buckets = 50000 
  4.  
  5. # 表示開啟TCP連接中TIME-WAIT sockets的快速回收 
  6.  
  7. net.ipv4.tcp_tw_reuse = 1 
  8.  
  9. #啟用timewait 快速回收。這個一定要開啟,默認是關閉的。net.ipv4.tcp_tw_recycle= 1 
  10.  
  11. # 修改系統默認的TIMEOUT時間,默認是60s 
  12.  
  13. net.ipv4.tcp_fin_timeout = 10 

測試參數的話,可以使用 sysctl -w net.ipv4.tcp_tw_reuse = 1 這樣的命令。如果是寫入進文件的,則使用sysctl -p生效。

CLOSE_WAIT

CLOSE_WAIT一般是由于對端主動關閉,而我方沒有正確處理的原因引起的。說白了,就是程序寫的有問題,屬于危害比較大的一種。

我們拿”csdn 諧音太郎”遇到的一個典型案例來說明。

代碼是使用HttpClient的一個使用片段。在這段代碼里,通過調用in.close()來進行連接資源的清理。但可惜的是,代碼中有一個判斷:非200狀態的連接直接返回null。在這種情況下,in連賦值的機會都沒有,當然也就無法關閉,然后就發生了連接泄漏。

所以,HttpClient的正確關閉方式是使用其api:abort()。

其他常用命令

應用軟件

  1. # 斷點續傳下載文件 
  2.  
  3. wget -c $url 
  4.  
  5. # 下載整站 
  6.  
  7. wget -r -p -np -k $url 
  8.  
  9. # 發送網絡連接(常用) 
  10.  
  11. curl -XGET $url 
  12.  
  13. # 傳輸文件 
  14.  
  15. scp 
  16.  
  17. sftp 
  18.  
  19. # 數據鏡像備份 
  20.  
  21. rsync 

檢測工具

  1. # 連通性檢測 
  2.  
  3. ping google.com 
  4.  
  5. # 到對端路由檢測 
  6.  
  7. tracepath google.com 
  8.  
  9. # 域名檢測 
  10.  
  11. dig google.com 
  12.  
  13. nslookup google.com 
  14.  
  15. # 網絡掃描工具 
  16.  
  17. nmap 
  18.  
  19. # 壓力測試 
  20.  
  21. iperf 
  22.  
  23. # 全方位監控工具(好東西) 
  24.  
  25. nmon 

配置工具

  1. # 停止某個網卡 
  2.  
  3. ifdown 
  4.  
  5. # 開啟某個網卡 
  6.  
  7. ifup 
  8.  
  9. # 多功能管理工具 
  10.  
  11. ethtool 

壓力測試

  1. wrk 
  2.  
  3. ab 
  4.  
  5. webbench 
  6.  
  7. http_load 

多功能工具

  1. # 遠程登錄 
  2.  
  3. telnet 
  4.  
  5. ssh 
  6.  
  7. nc 
  8.  
  9. # 防火墻 
  10.  
  11. iptables -L 

結尾

除了基本的工具,本文提到的很多網絡命令,都不是預裝的,需要使用yum自行安裝。網絡編程方面的學習,我覺得,讀一下《TCP/IP詳解 卷1:協議》這本書,然后寫幾個Netty應用就可以了。

NIO我們已經在I/O篇提起了,在此不再做詳細介紹。等你碰到所謂的拆包粘包問題,遇到心跳和限流問題,甚至遇到了流量整形問題,那么證明你離一個專業的網絡編程程序員越來越近了。

 

責任編輯:張燕妮 來源: 高效運維
相關推薦

2020-12-25 10:20:53

Linux網絡命令

2013-12-18 10:56:48

Linux運維運維技能

2017-02-03 20:50:08

Linux

2019-04-01 14:02:41

運維網絡排錯

2016-12-08 14:19:12

數據中心運維工程師

2018-04-18 08:36:48

Linux命令運維

2022-06-20 22:37:25

Linux操作系統命令

2017-08-21 14:09:26

Linux網絡帶寬監控命令

2016-12-29 12:42:45

Linux操作命令

2025-03-18 10:12:50

WindowsLinux?網絡命令

2020-07-02 09:55:32

運維架構技術

2012-07-19 13:51:12

linux運維操作系統

2021-07-21 16:22:40

運維架構技術

2018-05-21 11:47:57

數據庫MySQL速查手冊

2019-10-29 16:29:28

運維架構開發

2015-07-22 17:32:22

mysql常用命令

2017-03-30 16:03:06

Linux運維工程師技能

2019-05-15 11:14:22

監控工具運維

2017-03-13 18:19:43

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一级片免费视频 | 中文字幕蜜臀 | 麻豆国产精品777777在线 | 在线播放国产一区二区三区 | 日韩综合在线 | 国产四虎 | 欧美一级做性受免费大片免费 | 欧美日韩精品亚洲 | 欧美日韩一卡二卡 | 日韩中文视频 | 欧美日韩国产一区二区 | 亚洲一区二区在线视频 | 免费污视频 | 一区二区三区四区免费观看 | 美女久久久久久久 | www.99热| 欧美在线一区二区三区四区 | 一区二区三区中文字幕 | 美女国产一区 | 激情网站 | 国产精品免费小视频 | 天天操网 | 91精品在线播放 | 国产不卡视频 | 色天堂影院 | 三级av在线 | 女人一区| 成人欧美一区二区三区黑人孕妇 | 日韩 欧美 二区 | 欧美性受xxxx | 久久激情网 | 国产成人精品一区二区三区四区 | 婷婷色国产偷v国产偷v小说 | 欧美一级在线免费观看 | 欧美色欧美亚洲另类七区 | 日韩一区二区免费视频 | 妖精视频一区二区三区 | 91在线精品视频 | 国产亚洲精品精品国产亚洲综合 | 欧产日产国产精品99 | 成人在线视频一区 |