導航:首頁 > 操作系統 > linux流量

linux流量

發布時間:2022-05-06 08:11:37

linux中如何控制埠流量

配置網卡
建立一台虛擬機,並安裝完成後以橋接的方式在虛擬機上面添加兩張網卡。分別為eth0和eth1。
eth0: a.b.c.d(外網的上網地址)
eth1: 172.16.44.1(做為內網的網關)

Tip
原先我使用eth0:0的這種虛擬網卡的形式去配置一直不成功,後來使用雙網卡的時候一直忘了把eth0:0這張虛擬網卡刪掉導致了限速配置一直不成功,浪費了大把的青蔥。
配置iptables nat
#開啟ip_forward
echo "1">/proc/sys/net/ipv4/ip_forward

#清除原來的防火牆規則
iptables -F
iptables -t nat -F
iptables -t mangle -F

#添加nat轉發
iptables -t nat -A POSTROUTING -s 172.16.44.0/24 -o eth0 -j MASQUERADE

通過執行上面的代碼後,區域網內的電腦就可以上網了。
埠轉發
由於我的內網還掛了網站,所以要開啟80埠的轉發。
iptables -t nat -I PREROUTING -p tcp -d a.b.c.d --dport 80 -j DNAT --to 172.16.44.210:80
iptables -t nat -I POSTROUTING -p tcp -d 172.16.44.210 --dport 80 -j SNAT --to 172.16.44.1

這條命令指定外網地址a.b.c.d的80埠轉發到172.16.44.210:80上。由於是雙網卡,所以需要做一下迴路。
下載限速
下載限速要在eth1上面做,判斷數據包的目的地址來做限制。tc包括三部分:隊列、類、過濾器。我使用了htb方式去限制速度,也可以使用cbq,但cbq配置比較復雜一點,而且據說性能沒htb好。
#刪除原來的tc規則隊列
tc qdisc del dev eth1 root
#添加tc規則隊列
tc qdisc add dev eth1 root handle 10: htb default 256
#生成根類
tc class add dev eth1 parent 10: classid 10:1 htb rate 100mbit ceil 100mbit
#支類列表用於限制速度
#這里的rate指的是保證帶寬,ceil是最大帶寬。
tc class add dev eth1 parent 10:1 classid 10:10 htb rate 400kbps ceil 400kbps prio 1

#添加支類規則隊列
#採用sfq偽隨機隊列,並且10秒重置一次散列函數。
tc qdisc add dev eth1 parent 10:10 handle 101: sfq perturb 10

#建立網路包過濾器,設置fw。
tc filter add dev eth1 parent 10: protocol ip prio 10 handle 1 fw classid 10:10
#在iptables裡面設定mark值,與上面的handle值對應。
iptables -t mangle -A POSTROUTING -d 172.16.44.130 -j MARK --set-mark 1

通過上面的代碼就可以限制172.16.44.130這台機子的下載速度到400kbps。
Tip
經過實際測試這里的kbps實際上就是KB/S每秒千位元組。另一個單位是kbit,這個才是每秒千比特。這里的172.16.44.130也可以寫成一個網段,比如:172.16.44.0/24
上傳限速
上傳限速的原理其實跟下載的差不多,只不過限制的網卡不同,要在eth0上過濾來源地址去限制。
#刪除原來的tc規則隊列
tc qdisc del dev eth0 root

#添加tc規則隊列
tc qdisc add dev eth0 root handle 20: htb default 256

#生成根類
tc class add dev eth0 parent 20: classid 20:1 htb rate 100mbit ceil 100mbit

#支類列表用於限制速度
tc class add dev eth0 parent 20:1 classid 20:10 htb rate 40kbps ceil 40kbps prio 1

#添加支類規則隊列
tc qdisc add dev eth0 parent 20:10 handle 201: sfq perturb 10

#建立網路包過濾器
tc filter add dev eth0 parent 20: protocol ip prio 100 handle 2 fw classid 20:10
iptables -t mangle -A PREROUTING -s 172.16.44.130 -j MARK --set-mark 2

Tip
跟下載不同的是POSTROUTING要改成PREROUTING,-d改成-s。
觀察連接數
通過iptables的nat連接可以通過下面的代碼查看。至於統計連接數可以寫代碼實現,也可以利用awk,grep等工具。反正裡面的內容就是文本,處理起來也比較簡單。
cat /proc/net/ip_conntrack

寫在結尾
到此上網、埠轉發和流量限制都已經實現。下次再考慮配置個dhcp server和dnsmasq。至於一些路由器其它諸如mac地址綁定,限制上網等用到的時候再去研究研究。

Ⅱ linux如何查看流量

  1. 常用兩個方法:直接命令查看、安裝個iftop查看;

  2. 直接命令查看

    watch cat /proc/net/dev

    ######################

    安裝epel以此解決找不到iftop

    cd/usr/local/src
    wgethttp://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
    rpm-ivhepel-release-6-8.noarch.rpm
    yumcleanall
    yummakecache

    Ⅲ linux下面有什麼工具可以查看每個進程的網路流量

    iftop
    很強大的,完全
    可以做到
    -i設定監測的網卡,如:#
    iftop
    -i
    eth1
    -B
    以bytes為單位顯示流量(默認是bits),如:#
    iftop
    -B
    -n使host信息默認直接都顯示IP,如:#
    iftop
    -n
    -N使埠信息默認直接都顯示埠號,如:
    #
    iftop
    -N
    -F顯示特定網段的進出流量,如#
    iftop
    -F
    10.10.1.0/24或#
    iftop
    -F
    10.10.1.0/255.255.255.0
    -h(display
    this
    message),幫助,顯示參數信息
    -p使用這個參數後,中間的列表顯示的本地主機信息,出現了本機以外的IP信息;
    -b使流量圖形條默認就顯示;
    -f這個暫時還不太會用,過濾計算包用的;
    -P使host信息及埠信息默認就都顯示;
    -m設置界面最上邊的刻度的最大值,刻度分五個大段顯示,例:#
    iftop
    -m
    100M

    Ⅳ 【Linux】 linux 中如何區分ssh的流量呢

    1.用同樣版本的Linux光碟引導,進入rescue模式
    2.當你看到提示當前的系統被掛載在/mnt/sysimage下邊,系統會去查找/ect/fstab文件,如果有就會有下邊的提示,如果沒有會告訴你沒有任何分區
    3.使用chroot 來改變當前的操作路徑,不然是對內存中的系統操作
    4.建立一個目錄/cdrom,將光碟機掛載,查找kernel相關的包
    小技巧:在別的機器上用rpm -qf file來查詢,boot下邊的內核文件是由哪個包生成的
    5.強制安裝內核包,要加參數--force強制安裝,不然提示包已經安裝
    6.查看/boot目錄,多文件了
    7.但是刪掉了/boot目錄內容的時候也把grub的stage2刪掉了,下邊就需要安裝grub了,如果是安裝在mbr中用,路徑用/dev/sda,如果是裝在分區的superblock中,需要用/dev/sdax,x代表具體的分區。現在就發現多了grub目錄了《Linux就該這么學》中有Linux命令大全查看
    但是grub目錄中並沒有grub.conf文件,也就是說系統啟動還是無法找到正確的引導文件,重啟就可以看到grub界面了,系統就可以啟動了

    Ⅳ Linux下查看網卡流量方法

    Linux通過vnstat查看網卡流量

    直接運行

    yum install vnstat -y

    安裝完後測試:

    源碼編譯方式安裝vnstat

    適用於個別系統無法yum安裝的查看網卡流量情況。

    wget http://humdi.net/vnstat/vnstat-1.10.tar.gz

    tar xvzf vnstat-1.10.tar.gz

    cd vnstat-1.10

    make && make install

    Ⅵ linux查看網路流量命令

    方法一、nload工具
    查看參數幫助命令:
    nload –help
    -a :這個好像是全部數據的刷新時間周期,單位是秒,默認是300.
    -i :進入網卡的流量圖的顯示比例最大值設置,默認10240 kBit/s.
    -m :不顯示流量圖,只顯示統計數據。
    -o :出去網卡的流量圖的顯示比例最大值設置,默認10240 kBit/s.
    -t :顯示數據的刷新時間間隔,單位是毫秒,默認500。
    -u :設置右邊Curr、Avg、Min、Max的數據單位,默認是自動變的.注意大小寫單位不同!
    h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.
    H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.
    -U:設置右邊Ttl的數據單位,默認是自動變的.注意大小寫單位不同(與-u相同)!
    Devices:自定義監控的網卡,默認是全部監控的,使用左右鍵切換。
    如只監控eth0命令: nload eth0
    方法二、iftop工具
    1、iftop界面相關說明
    界面上面顯示的是類似刻度尺的刻度范圍,為顯示流量圖形的長條作標尺用的。
    中間的<= =>這兩個左右箭頭,表示的是流量的方向。
    TX: 發送流量
    RX: 接收流量
    TOTAL:總流量
    Cumm: 運行iftop到目前時間的總流量
    peak: 流量峰值
    rates: 分別表示過去 2s 10s 40s 的平均流量
    2、iftop相關參數
    常用的參數 《Linux就該這么學》
    -i 設定監測的網卡,如:# iftop -i eth1
    -B 以bytes為單位顯示流量(默認是bits),如:# iftop -B
    -n 使host信息默認直接都顯示IP,如:# iftop -n
    -N 使埠信息默認直接都顯示埠號,如: # iftop -N
    -F 顯示特定網段的進出流量,如# iftop -F 10.10.1.0/24或# iftop -F 10.10.1.0/255.255.255.0
    -h(display this message),幫助,顯示參數信息
    -p 使用這個參數後,中間的列表顯示的本地主機信息,出現了本機以外的IP信息;
    -b 使流量圖形條默認就顯示;
    -f 這個暫時還不太會用,過濾計算包用的;
    -P 使host信息及埠信息默認就都顯示;
    -m設置界面最上邊的刻度的最大值,刻度分五個大段顯示,例:# iftop -m 100M
    進入iftop畫面後的一些操作命令(注意大小寫)
    按h切換是否顯示幫助;
    按n切換顯示本機的IP或主機名;
    按s切換是否顯示本機的host信息;
    按d切換是否顯示遠端目標主機的host信息;
    按t切換顯示格式為2行/1行/只顯示發送流量/只顯示接收流量;
    按N切換顯示埠號或埠服務名稱;
    按S切換是否顯示本機的埠信息;
    按D切換是否顯示遠端目標主機的埠信息;
    按p切換是否顯示埠信息;
    按P切換暫停/繼續顯示;
    按b切換是否顯示平均流量圖形條;
    按B切換計算2秒或10秒或40秒內的平均流量;
    按T切換是否顯示每個連接的總流量;
    按l打開屏幕過濾功能,輸入要過濾的字元,比如ip,按回車後,屏幕就只顯示這個IP相關的流量信息;
    按L切換顯示畫面上邊的刻度;刻度不同,流量圖形條會有變化;
    按j或按k可以向上或向下滾動屏幕顯示的連接記錄;
    按1或2或3可以根據右側顯示的三列流量數據進行排序;
    按<根據左邊的本機名或IP排序;
    按>根據遠端目標主機的主機名或IP排序;
    按o切換是否固定只顯示當前的連接;
    按f可以編輯過濾代碼,這是翻譯過來的說法,我還沒用過這個!
    按!可以使用Shell命令,這個沒用過!沒搞明白啥命令在這好用呢!
    按q退出監控。
    方法三、 ifstat
    參數:
    -a 監測能檢測到的所有網路介面的狀態信息
    -z 隱藏流量是無的介面,例如那些介面雖然啟動了但是未用的
    -i 指定要監測的介面,後面跟網路介面名
    時間:
    -T 報告所有監測介面的全部帶寬
    -w 用指定的列寬,而不是為了適應介面名稱的長度而去自動放大列寬
    -W 如果內容比終端窗口的寬度還要寬就自動換行
    -b 用kbits/s顯示帶寬而不是kbytes/s

    Ⅶ Linux下經常用來查看網路流量的有哪些命令

    nethogs: 按進程查看流量佔用
    iptraf: 按連接/埠查看流量
    ifstat: 按設備查看流量
    ethtool: 診斷工具
    tcpmp: 抓包工具
    ss: 連接查看工具

    Ⅷ linux系統中如何限制網路流量

    限制網路流量速率的一種方法是通過一個名為trickle的命令行工具。通過在程序運行時,預先載入一個速率限制 socket 庫 的方法,trickle 命令允許你改變任意一個特定程序的流量。 trickle 命令有一個很好的特性是它僅在用戶空間中運行,這意味著,你不必需要 root 許可權就可以限制一個程序的帶寬使用。要能使用 trickle 程序控製程序的帶寬,這個程序就必須使用非靜態鏈接庫的套接字介面。
    將你的 scp 會話的最大上傳帶寬設定為 100 KB/s:

    $ trickle -u 100 scp backup.tgz alice@remote_host.com:

    另一種控制你的帶寬資源的方式是在每一個介面上限制帶寬。這在你與其他人分享你的網路連接的上行帶寬時尤為實用。同其他一樣,Linux 有一個工具來為你做這件事。wondershaper就是干這個的。

    wondershaper 實際上是一個 shell 腳本,它使用 tc 來定義流量調整命令,使用 QoS 來處理特定的網路介面。外發流量通過放在不同優先順序的隊列中,達到限制傳出流量速率的目的;而傳入流量通過丟包的方式來達到速率限制的目的。
    舉個例子, 將 eth0 的最大下載/上傳帶寬分別設定為 1000Kbit/s 和 500Kbit/s:

    $ sudo wondershaper <interface> <download-rate> <upload-rate>

    Ⅸ 聽說用Linux系統可以控制流量

    用ulimit 這個命令。
    ulimit:顯示(或設置)用戶可以使用的資源的限制(limit),這限制分為軟限制(當前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應用程序在運行過程中使用的系統資源不超過相應的軟限制,任何的超越都導致進程的終止。
    ulimited 不限制用戶可以使用的資源,但本設置對可打開的最大文件數(max open files)
    和可同時運行的最大進程數(max user processes)無效
    -a 列出所有當前資源極限
    -c 設置core文件的最大值.單位:blocks
    -d 設置一個進程的數據段的最大值.單位:kbytes
    -f Shell 創建文件的文件大小的最大值,單位:blocks
    -h 指定設置某個給定資源的硬極限。如果用戶擁有 root 用戶許可權,可以增大硬極限。任何用戶均可減少硬極限
    -l 可以鎖住的物理內存的最大值
    -m 可以使用的常駐內存的最大值,單位:kbytes
    -n 每個進程可以同時打開的最大文件數
    -p 設置管道的最大值,單位為block,1block=512bytes
    -s 指定堆棧的最大值:單位:kbytes
    -S 指定為給定的資源設置軟極限。軟極限可增大到硬極限的值。如果 -H 和 -S 標志均未指定,極限適用於以上二者
    -t 指定每個進程所使用的秒數,單位:seconds
    -u 可以運行的最大並發進程數
    -v Shell可使用的最大的虛擬內存,單位:kbytes
    eg: ulimit -c 1000(可以先通過ulimit -c 查看原來的值)

    Ⅹ 在Linux下怎麼看網路流量

    Linux查看網路流量

    在GUI下面,有一大把的工具可以顯示網路流量,那麼,命令行下面怎麼辦?

    顯然辦法是有的,比如,ifconfig,會有這樣的輸 出:
    RX bytes:1224128649 (1.1 GiB) TX bytes:34114947 (32.5 MiB)

    過 一會再看,數值有所變化,兩者的差值就是過去一段時間的流量。可是,這也太不人性化了……

    正所謂自己動手,豐衣足食,我們自己來寫一個腳 本,實時顯示並刷新!

    腳本如下,還是哪句話,本人功力有限,寫腳本的原則是夠用就好。

    #!/bin/bash

    if [ -n "$1" ]; then
    eth_name=$1
    else
    eth_name="eth0"
    fi

    i=0

    send_o=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
    recv_o=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
    send_n=$send_o
    recv_n=$recv_o

    while [ $i -le 100000 ]; do
    send_l=$send_n
    recv_l=$recv_n
    sleep 1
    send_n=`ifconfig $eth_name | grep bytes | awk '{print $6}' | awk -F : '{print $2}'`
    recv_n=`ifconfig $eth_name | grep bytes | awk '{print $2}' | awk -F : '{print $2}'`
    i=`expr $i + 1`
    send_r=`expr $send_n - $send_l`
    recv_r=`expr $recv_n - $recv_l`
    total_r=`expr $send_r + $recv_r`
    send_ra=`expr /( $send_n - $send_o /) / $i`
    recv_ra=`expr /( $recv_n - $recv_o /) / $i`
    total_ra=`expr $send_ra + $recv_ra`
    sendn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $3}' | awk -F /) '{print $1}'`
    recvn=`ifconfig $eth_name | grep bytes | awk -F /( '{print $2}' | awk -F /) '{print $1}'`
    clear
    echo "Last second : Send rate: $send_r Bytes/sec Recv rate: $recv_r Bytes/sec Total rate: $total_r Bytes/sec"
    echo "Average value: Send rate: $send_ra Bytes/sec Recv rate: $recv_ra Bytes/sec Total rate: $total_ra Bytes/sec"
    echo "Total traffic after startup: Send traffic: $sendn Recv traffic: $recvn"
    done

    該腳本(假設名叫traffic)默認顯示eth0的流量,如果你有多個網卡,請將網卡作為參數傳進去,比如:
    ./traffic eth1

    運行結果如下:

閱讀全文

與linux流量相關的資料

熱點內容
java輸入流字元串 瀏覽:341
安卓軟體沒網怎麼回事 瀏覽:785
dvd壓縮碟怎麼導出電腦 瀏覽:274
冒險島什麼伺服器好玩 瀏覽:541
如何在伺服器上做性能測試 瀏覽:793
命令序列錯 瀏覽:259
javaif的條件表達式 瀏覽:576
手機app上傳的照片怎麼找 瀏覽:531
雲伺服器面臨哪些威脅 瀏覽:748
c語言各種編譯特點 瀏覽:177
路由器多種加密方法 瀏覽:604
程序員阻止電腦自動彈出定位 瀏覽:168
如何做伺服器服務商 瀏覽:761
su剖切命令 瀏覽:726
devc編譯背景 瀏覽:211
學習單片機的意義 瀏覽:51
音頻演算法AEC 瀏覽:911
加密貨幣容易被盜 瀏覽:82
蘋果平板如何開啟隱私單個app 瀏覽:704
空調壓縮機一開就停止 瀏覽:530