linux – 如何使用“tc”命令对特定端口进行简单的流量控制
发布时间:2020-12-13 23:23:07 所属栏目:Linux 来源:网络整理
导读:我是 Linux的新手,我的目标是使用tc命令(或ifconfig或iptables等其他命令,但我不认为我需要它们)为“eth0”或“lo”创建一个简单的流量控制. 我的内核是2.6.18-238.el5 GNU / Linux,我正在使用redhat. 我的脚本是: tc qdisc del dev $DEV roottc qdisc add
我是
Linux的新手,我的目标是使用tc命令(或ifconfig或iptables等其他命令,但我不认为我需要它们)为“eth0”或“lo”创建一个简单的流量控制.
我的内核是2.6.18-238.el5 GNU / Linux,我正在使用redhat. 我的脚本是: tc qdisc del dev $DEV root tc qdisc add dev $DEV root handle 1: htb default 10 tc class add dev $DEV parent 1: classid 1:10 htb rate $DNLD tc filter add dev $DEV parent 1: protocol ip u32 match ip dport $input_port 0xffff flowid 1:10 虽然$DNLD是带宽限制,$DEV是eth0或lo,$input_port是我想要限制的端口. 我已经在互联网上阅读了很多页面,并了解这是应该如何编写的,但这一行并不限制特定端口,而是所有端口. 我也尝试使用“运动”,但它也不起作用. 另一个奇怪的事情是带宽限制似乎正在起作用,并且重置线似乎也在起作用,(这是第一行: 但是,我写完之后的输出行是: 如果您需要任何其他信息,请与我们联系. 解决方法
我不知道这是否正是您正在寻找的内容,但这是一个您可以编辑和运行的脚本.我用它来限制我的连接并测试网络应用程序.
#!/bin/bash # # tc uses the following units when passed as a parameter. # kbps: Kilobytes per second # mbps: Megabytes per second # kbit: Kilobits per second # mbit: Megabits per second # bps: Bytes per second # Amounts of data can be specified in: # kb or k: Kilobytes # mb or m: Megabytes # mbit: Megabits # kbit: Kilobits # To get the byte figure from bits,divide the number by 8 bit # # # Name of the traffic control command. TC=/sbin/tc # The network interface we're planning on limiting bandwidth. IF=`ip addr | grep 2: | cut -d' ' -f2 | cut -d: -f1` # Latency LAT_1=200ms # Base latency LAT_2=50ms # Plus or minus LAT_3=25% # Based on previous packet % # Dropping packets DROP_1=5% # Base probability DROP_2=25% # Based on previous packet % # Bandwidth #DNLD=33kbps # DOWNLOAD Limit #UPLD=33kbps # UPLOAD Limit DNLD=1Mbps # DOWNLOAD Limit UPLD=1Mbps # UPLOAD Limit # IP address of the machine we are controlling IP=`ip addr | grep "inet " | tail -1 | cut -d' ' -f6 | cut -d/ -f1` # Filter options for limiting the intended interface. U32="$TC filter add dev $IF protocol ip parent 1:0 prio 1 u32" # We'll use Hierarchical Token Bucket (HTB) to shape bandwidth. # For detailed configuration options,please consult Linux man # page. #$TC qdisc add dev $IF root handle 2: netem delay $LAT_1 $LAT_2 $LAT_3 loss $DROP_1 $DROP_2 $TC qdisc add dev $IF root handle 2: netem delay $LAT_1 $LAT_2 $LAT_3 loss $DROP_1 $DROP_2 $TC qdisc add dev $IF parent 2: handle 1: htb default 30 $TC class add dev $IF parent 1: classid 1:1 htb rate $DNLD $TC class add dev $IF parent 1: classid 1:2 htb rate $UPLD $U32 match ip dst $IP/32 flowid 1:1 $U32 match ip src $IP/32 flowid 1:2 # The first line creates the root qdisc,and the next three lines # create three child qdisc that are to be used to shape download # and upload bandwidth. # # The 5th and 6th line creates the filter to match the interface. # The 'dst' IP address is used to limit download speed,and the # 'src' IP address is used to limit upload speed. echo Limit to $DNLD on $IF for $IP (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |