Linux帶寬異常跑滿的解決方案
問題原因
可能是惡意程序問題,或者是部分 IP 惡意訪問導(dǎo)致,亦可能是服務(wù)遭到了CC攻擊
處理辦法
使用 iftop 工具排查
使用 nethogs 進行排查
首先需要確定是哪一張網(wǎng)卡的帶寬跑滿,可以通過sar -n DEV 1 5 命令來獲取網(wǎng)卡級別的流量圖,命令中 1 5 表示每一秒鐘取 1 次值,一共取 5 次。
命令執(zhí)行后會列出每個網(wǎng)卡這 5 次取值的平均數(shù)據(jù),根據(jù)實際情況來確定帶寬跑滿的網(wǎng)卡名稱,默認情況下 eth0 為內(nèi)網(wǎng)網(wǎng)卡,eth1 為外網(wǎng)網(wǎng)卡。
使用 iftop 工具排查
1、服務(wù)器內(nèi)部安裝 iftop 流量監(jiān)控工具:
1)yum install iftop -y
2、.服務(wù)器外網(wǎng)帶寬被占滿時,如果通過遠程無法登陸,可進入到服務(wù)器內(nèi)部,運行下面命令查看流量占用情況:
iftop -i eth1 -P
注:-P 參數(shù)會將請求服務(wù)的端口顯示出來,也就是說是通過服務(wù)器哪個端口建立的連接,看內(nèi)網(wǎng)流量執(zhí)行 iftop -i eth0 -P 命令。
如上面示例圖,通過分析發(fā)現(xiàn)最耗流量的是服務(wù)器上 53139 端口和 115.205.150.235 地址建立的連接,產(chǎn)生了大量入網(wǎng)流量。執(zhí)行 netstat 命令反查 53139 端口對應(yīng)進程。
netstat -tunlp |grep 53139
3、最終定位出來是服務(wù)器上 vsftpd 服務(wù)產(chǎn)生大量流量,這時可以通過停止服務(wù)或使用iptables服務(wù)來對指定地址進行處理,如屏蔽 IP 地址,限速,以保證服務(wù)器帶寬能夠正常使用。
使用 nethogs 進行排查
1、服務(wù)器內(nèi)部安裝 nethogs 流量監(jiān)控工具:
yum install nethogs -y
2、通過 nethogs 工具來查看某一網(wǎng)卡上進程級流量信息,若未安裝可以通過 yum、apt-get 等方式安裝。
假定當(dāng)前 eth1 網(wǎng)卡跑滿,則執(zhí)行命令 nethogs eth1,在右邊的紅框中可以看到每個進程的網(wǎng)絡(luò)帶寬情況,左邊紅框顯示了進程對應(yīng)的 PID,在此可以確定到底是什么進程占用了系統(tǒng)的帶寬。
3、如果確定是惡意程序,可以通過 kill -TERM 來終止程序。
如是 Web 服務(wù)程序,則可以使用 iftop 等工具來查詢具體 IP 來源,然后分析 Web 訪問日志是否為正常流量,日志分析也可以使用 logwatch 或 awstats 等工具進行分析,若確定是正常的流量,則可以考慮升級服務(wù)器的帶寬。