导航:首页 > 操作系统 > 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流量相关的资料

热点内容
日语年号的算法 浏览:953
dev里面的编译日志咋调出来 浏览:296
php函数引用返回 浏览:814
文件夹和文件夹的创建 浏览:257
香港加密货币牌照 浏览:836
程序员鼓励自己的代码 浏览:393
计算机网络原理pdf 浏览:750
吃鸡国际体验服为什么服务器繁忙 浏览:92
php中sleep 浏览:488
vr怎么看视频算法 浏览:84
手机app如何申报个人所得税零申报 浏览:692
如何截获手机app连接的ip 浏览:330
冰箱压缩机是否需要电容 浏览:344
python列表每一行数据求和 浏览:274
自己有一台服务器可以玩什么 浏览:656
社会学波普诺pdf 浏览:584
解压做食物的小视频 浏览:758
pdf怎么单独设置文件夹 浏览:474
业务逻辑程序员 浏览:659
addto新建文件夹什么意思 浏览:162