溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux中有哪些網(wǎng)絡命令

發(fā)布時間:2021-06-12 17:20:47 來源:億速云 閱讀:279 作者:Leah 欄目:系統(tǒng)運維

Linux中有哪些網(wǎng)絡命令,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

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

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

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

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

# 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。其命令對應如下,是時候和net-tools說Bye了。

用途net-toolsiproute
統(tǒng)計ifconfigss
地址netstatip addr
路由routeip route
鄰居arpip neigh
VPNiptunnelip tunnel
VLANvconfigip link
組播ipmaddrip maddr

ss命令

基本使用

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

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

ss -atr ss -atn #僅ip

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

ss -alt

查看監(jiān)聽444端口的進程pid

ss -ltp | grep 444

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

ss -ltp | grep 555

顯示所有udp連接

ss -u -a

查看TCP sockets,使用-ta選項

查看UDP sockets,使用-ua選項

查看RAW sockets,使用-wa選項

查看UNIX sockets,使用-xa選項

和某個ip的所有連接

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連接

ss  dport = :http

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

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

Recv-Q和Send-Q

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

Linux中有哪些網(wǎng)絡命令

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

LISTEN狀態(tài)

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

  •  Send-Q:代表listen backlog值

ESTAB狀態(tài)

  • Recv-Q:內核中的數(shù)據(jù)還有多少(bytes)沒有被應用程序讀取,發(fā)生了一定程度的阻塞

  •  Send-Q:代表內核中發(fā)送隊列里還有多少(bytes)數(shù)據(jù)沒有收到ack,對端的接收處理能力不強

查看網(wǎng)絡流量

查看流量

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

Linux中有哪些網(wǎng)絡命令

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

watch cat /proc/net/dev

查看占流量最大的IP

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

Linux中有哪些網(wǎng)絡命令

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

抓包

tcpdump

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

tcpdump -i eth0 -nn -s0 -v port 80
  •  -i 指定網(wǎng)卡進行抓包

  •  -n 和ss一樣,表示不解析域名

  •  -nn 兩個n表示端口也是數(shù)字,否則解析成服務名

  •  -s 設置抓包長度,0表示不限制

  •  -v 抓包時顯示詳細輸出,-vv、-vvv依次更加詳細

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

tcpdump -A -s0 port 80

2)抓取特定ip的相關包

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

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

tcpdump -i eth0 -s0 -w test.pcap

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

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

更多參見

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

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

Linux中有哪些網(wǎng)絡命令

http抓包

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

  •  Burpsuite (跨平臺)

  •  Fiddle2 (Win)

  •  Charles (Mac)

壞事要偷偷的干哦。

流量復制

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

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

  •  Gor

  •  TCPReplay

  •  TCPCopy

連接數(shù)過多問題

Linux中有哪些網(wǎng)絡命令

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

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

TIME_WAIT

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

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

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

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

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

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

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

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

CLOSE_WAIT

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

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

Linux中有哪些網(wǎng)絡命令

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

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

其他常用命令

應用軟件

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

檢測工具

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

配置工具

# 停止某個網(wǎng)卡ifdown# 開啟某個網(wǎng)卡ifup# 多功能管理工具 ethtool

壓力測試

wrkabwebbenchhttp_load

多功能工具

# 遠程登錄telnetsshnc# 防火墻iptables -L

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI