自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

運(yùn)維工程師必備:請(qǐng)收好Linux網(wǎng)絡(luò)命令集錦

系統(tǒng) Linux
個(gè)人不是滲透測(cè)試工作者,大部分功能只知皮毛。所以本文是非常淺顯的技術(shù)總結(jié),僅聚焦工作中常用到的一些Linux命令。

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

由于nio的普及,ck10k的問(wèn)題已經(jīng)成為過(guò)去式?,F(xiàn)在隨便一臺(tái)服務(wù)器,就可以支持?jǐn)?shù)十萬(wàn)級(jí)別的連接了。那么我們來(lái)算一下,100萬(wàn)的連接需要多少資源。

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

查看當(dāng)前系統(tǒng)的連接

如何看當(dāng)前系統(tǒng)有多少連接呢?可以使用netstat結(jié)合awk進(jìn)行統(tǒng)計(jì)。如下腳本,統(tǒng)計(jì)了每一種狀態(tài)的tcp連接數(shù)量

 

  1. # netstat -antp | awk '{a[$6]++}END{ for(x in a)print x,a[x]}'LISTEN 41CLOSE_WAIT 24ESTABLISHED 150Foreign 1TIME_WAIT 92 

但如果你在一臺(tái)有上萬(wàn)連接的服務(wù)器上執(zhí)行這個(gè)命令,你可能會(huì)等上很長(zhǎng)時(shí)間。所以,我們有了第二代網(wǎng)絡(luò)狀態(tài)統(tǒng)計(jì)工具:netstat => ss(可別和那個(gè)越獄工具搞混了)。

 

  1. # ss -sTotal: 191 (kernel 220)TCP:   5056 (estab 42, closed 5000, orphaned 3, synrecv 0, timewait 5000/0), ports 3469... 

netstat屬于net-tools工具集,而ss屬于iproute。其命令對(duì)應(yīng)如下,是時(shí)候和net-tools說(shuō)Bye了。

用途 net-tools iproute
統(tǒng)計(jì) ifconfig ss
地址 netstat ip addr
路由 route ip route
鄰居 arp ip neigh
VPN iptunnel ip tunnel
VLAN vconfig ip link
組播 ipmaddr ip maddr

ss命令

基本使用

我們按照使用場(chǎng)景來(lái)看下ss的用法。

查看系統(tǒng)正在監(jiān)聽(tīng)的tcp連接

 

  1. ss -atr ss -atn #僅ip 

查看系統(tǒng)中所有連接

 

  1. ss -alt 

查看監(jiān)聽(tīng)444端口的進(jìn)程pid

 

  1. ss -ltp | grep 444 

查看進(jìn)程555占用了哪些端口

 

  1. ss -ltp | grep 555 

顯示所有udp連接

 

  1. ss -u -a 

查看TCP sockets,使用-ta選項(xiàng)

查看UDP sockets,使用-ua選項(xiàng)

查看RAW sockets,使用-wa選項(xiàng)

查看UNIX sockets,使用-xa選項(xiàng)

和某個(gè)ip的所有連接

 

  1. ss dst 10.66.224.130ss dst 10.66.224.130:httpss dst 10.66.224.130:smtpss dst 10.66.224.130:443 

顯示所有的http連接

 

  1. ss  dport = :http 

查看連接本機(jī)最多的前10個(gè)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的執(zhí)行結(jié)果,我們說(shuō)明一下Recv-Q和Send-Q。

這兩個(gè)值,在LISTEN和ESTAB狀態(tài)分別代表不同意義。一般,正常的應(yīng)用程序這兩個(gè)值都應(yīng)該為0(backlog除外)。數(shù)值越大,說(shuō)明問(wèn)題越嚴(yán)重。

LISTEN狀態(tài)

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

ESTAB狀態(tài)

  • Recv-Q:內(nèi)核中的數(shù)據(jù)還有多少(bytes)沒(méi)有被應(yīng)用程序讀取,發(fā)生了一定程度的阻塞
  •  Send-Q:代表內(nèi)核中發(fā)送隊(duì)列里還有多少(bytes)數(shù)據(jù)沒(méi)有收到ack,對(duì)端的接收處理能力不強(qiáng)

查看網(wǎng)絡(luò)流量

查看流量

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

當(dāng)然,你也可以使用ifstat、nload、iptraf等命令查看。然而數(shù)據(jù)來(lái)源,還是來(lái)自我們的/proc目錄

 

  1. watch cat /proc/net/dev 

查看占流量最大的IP

有時(shí)候我們發(fā)現(xiàn)網(wǎng)絡(luò)帶寬占用非常高,但我們無(wú)法判斷到底流量來(lái)自哪里。這時(shí)候,iftop就可以幫上忙了。如圖,可以很容易的找出流量來(lái)自哪臺(tái)主機(jī)。

當(dāng)你不確定內(nèi)網(wǎng)的流量來(lái)源,比如有人在壓測(cè),api調(diào)用不合理等,都可以通過(guò)這種方法找到他。

抓包

tcpdump

當(dāng)我們需要判斷是否有流量,或者調(diào)試一個(gè)難纏的netty應(yīng)用問(wèn)題,則可以通過(guò)抓包的方式去進(jìn)行進(jìn)一步的判斷。在Linux上,可以通過(guò)tcpdump命令抓取數(shù)據(jù),然后使用Wireshark進(jìn)行分析。

 

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

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

 

  1. tcpdump -A -s0 port 80 

2)抓取特定ip的相關(guān)包

 

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

3)-w參數(shù)將抓取的包寫入到某個(gè)文件中

 

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

4)tcpdump支持表達(dá)式,還有更加復(fù)雜的例子,比如抓取系統(tǒng)中的get,post請(qǐng)求(非https)

 

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

更多參見(jiàn)

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

抓取的數(shù)據(jù),使用wireshark查看即可。

http抓包

抓包工具將自身當(dāng)作代理,能夠抓取你的瀏覽器到服務(wù)器之間的通訊,并提供修改、重放、批量執(zhí)行的功能。是發(fā)現(xiàn)問(wèn)題,分析協(xié)議,攻擊站點(diǎn)的利器。常用的有以下三款:

  •  Burpsuite (跨平臺(tái))
  •  Fiddle2 (Win)
  •  Charles (Mac)

壞事要偷偷的干哦。

流量復(fù)制

你可能需要使你的生產(chǎn)環(huán)境HTTP真實(shí)流量在開(kāi)發(fā)環(huán)境或者預(yù)演環(huán)境重現(xiàn),這樣就用到了流量復(fù)制功能。

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

  •  Gor
  •  TCPReplay
  •  TCPCopy

連接數(shù)過(guò)多問(wèn)題

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

TIME_WAIT一般通過(guò)優(yōu)化內(nèi)核參數(shù)能夠解決;CLOSE_WAIT一般是由于程序編寫不合理造成的,更應(yīng)該引起開(kāi)發(fā)者注意。

TIME_WAIT

TIME_WAIT是主動(dòng)關(guān)閉連接的一方保持的狀態(tài),像nginx、爬蟲(chóng)服務(wù)器,經(jīng)常發(fā)生大量處于time_wait狀態(tài)的連接。TCP一般在主動(dòng)關(guān)閉連接后,會(huì)等待2MS,然后徹底關(guān)閉連接。由于HTTP使用了TCP協(xié)議,所以在這些頻繁開(kāi)關(guān)連接的服務(wù)器上,就積壓了非常多的TIME_WAIT狀態(tài)連接。

某些系統(tǒng)通過(guò)dmesg可以看到以下信息。

 

  1. __ratelimit: 2170 callbacks suppressedTCP: time wait bucket table overflowTCP: time wait bucket table overflowTCP: time wait bucket table overflowTCP: time wait bucket table overflow 

通過(guò)ss -s命令查看,可以看到timewait已經(jīng)有2w個(gè)了。

 

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

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

  1. # 修改閾值net.ipv4.tcp_max_tw_buckets = 50000 # 表示開(kāi)啟TCP連接中TIME-WAIT sockets的快速回收net.ipv4.tcp_tw_reuse = 1#啟用timewait 快速回收。這個(gè)一定要開(kāi)啟,默認(rèn)是關(guān)閉的。net.ipv4.tcp_tw_recycle1   # 修改系統(tǒng)默認(rèn)的TIMEOUT時(shí)間,默認(rèn)是60snet.ipv4.tcp_fin_timeout = 10 

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

CLOSE_WAIT

CLOSE_WAIT一般是由于對(duì)端主動(dòng)關(guān)閉,而我方?jīng)]有正確處理的原因引起的。說(shuō)白了,就是程序?qū)懙挠袉?wèn)題,屬于危害比較大的一種。

我們拿”csdn 諧音太郎”遇到的一個(gè)典型案例來(lái)說(shuō)明。

代碼是使用HttpClient的一個(gè)使用片段。在這段代碼里,通過(guò)調(diào)用in.close()來(lái)進(jìn)行連接資源的清理。但可惜的是,代碼中有一個(gè)判斷:非200狀態(tài)的連接直接返回null。在這種情況下,in連賦值的機(jī)會(huì)都沒(méi)有,當(dāng)然也就無(wú)法關(guān)閉,然后就發(fā)生了連接泄漏。

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

其他常用命令

應(yīng)用軟件

 

  1. # 斷點(diǎn)續(xù)傳下載文件wget -c $url# 下載整站wget -r -p -np -k $url# 發(fā)送網(wǎng)絡(luò)連接(常用)curl -XGET $url# 傳輸文件scpsftp# 數(shù)據(jù)鏡像備份rsync 

檢測(cè)工具

 

  1. # 連通性檢測(cè)ping google.com# 到對(duì)端路由檢測(cè)tracepath google.com# 域名檢測(cè)dig google.comnslookup google.com# 網(wǎng)絡(luò)掃描工具nmap# 壓力測(cè)試iperf# 全方位監(jiān)控工具(好東西)nmon 

配置工具

 

  1. # 停止某個(gè)網(wǎng)卡ifdown# 開(kāi)啟某個(gè)網(wǎng)卡ifup# 多功能管理工具 ethtool 

壓力測(cè)試

 

  1. wrkabwebbenchhttp_load 

多功能工具

 

  1. # 遠(yuǎn)程登錄telnetsshnc# 防火墻iptables -L 

結(jié)尾

除了基本的工具,本文提到的很多網(wǎng)絡(luò)命令,都不是預(yù)裝的,需要使用yum自行安裝。網(wǎng)絡(luò)編程方面的學(xué)習(xí),我覺(jué)得,讀一下《TCP/IP詳解 卷1:協(xié)議》這本書,然后寫幾個(gè)Netty應(yīng)用就可以了。

NIO我們已經(jīng)在I/O篇提起了,在此不再做詳細(xì)介紹。等你碰到所謂的拆包粘包問(wèn)題,遇到心跳和限流問(wèn)題,甚至遇到了流量整形問(wèn)題,那么證明你離一個(gè)專業(yè)的網(wǎng)絡(luò)編程程序員越來(lái)越近了。

 

責(zé)任編輯:龐桂玉 來(lái)源: Linux學(xué)習(xí)
相關(guān)推薦

2020-07-23 14:13:04

運(yùn)維架構(gòu)技術(shù)

2013-12-18 10:56:48

Linux運(yùn)維運(yùn)維技能

2017-02-03 20:50:08

Linux

2019-04-01 14:02:41

運(yùn)維網(wǎng)絡(luò)排錯(cuò)

2016-12-08 14:19:12

數(shù)據(jù)中心運(yùn)維工程師

2018-04-18 08:36:48

Linux命令運(yùn)維

2022-06-20 22:37:25

Linux操作系統(tǒng)命令

2017-08-21 14:09:26

Linux網(wǎng)絡(luò)帶寬監(jiān)控命令

2016-12-29 12:42:45

Linux操作命令

2025-03-18 10:12:50

WindowsLinux?網(wǎng)絡(luò)命令

2020-07-02 09:55:32

運(yùn)維架構(gòu)技術(shù)

2012-07-19 13:51:12

linux運(yùn)維操作系統(tǒng)

2021-07-21 16:22:40

運(yùn)維架構(gòu)技術(shù)

2018-05-21 11:47:57

數(shù)據(jù)庫(kù)MySQL速查手冊(cè)

2019-10-29 16:29:28

運(yùn)維架構(gòu)開(kāi)發(fā)

2015-07-22 17:32:22

mysql常用命令

2019-05-15 11:14:22

監(jiān)控工具運(yùn)維

2017-03-30 16:03:06

Linux運(yùn)維工程師技能

2017-03-13 18:19:43

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)