免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4461 | 回复: 9
打印 上一主题 下一主题

linux下软件防火墙,那种能限制ip段的上网速度?! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2002-08-14 11:37 |只看该作者 |倒序浏览
最好是free/linux

论坛徽章:
0
2 [报告]
发表于 2002-08-14 11:55 |只看该作者
这个对我很重要....\r\n\r\n你能详细告诉我嘛?\r\n\r\n你有固定的联系方式嘛??\r\n\r\n3620\r\n  |\r\nGW\r\n  |\r\nmachine

论坛徽章:
0
3 [报告]
发表于 2002-08-14 13:25 |只看该作者
WWW.GOOGLE.COM,JUST SEARCH IT\r\n\r\nI AM BUSY NOW ,SORRY

论坛徽章:
0
4 [报告]
发表于 2002-08-14 13:34 |只看该作者
理解理解.....    : )\r\n能告诉我在google打什么好呢? :)

论坛徽章:
0
5 [报告]
发表于 2002-08-14 19:29 |只看该作者
找到了吗?我给你找找看

论坛徽章:
0
6 [报告]
发表于 2002-08-14 19:34 |只看该作者

论坛徽章:
0
7 [报告]
发表于 2002-08-14 19:38 |只看该作者
Linux 的带宽管理系统 \r\n\r\n\r\nLinux 包含复杂的带宽管理系统 TC (流量控制,Traffic Control)。该系统支持分类、优先、共享和输入、输出流量限制等。这套系统可以与专用的带宽管理系统相媲美。 \r\n\r\n1. 基本的构成块 \r\n\r\nTC 包括三个基本的构成块: 队列规定(queueing discipline )、类(class)和分类器(Classifiers) 。 \r\n\r\n队列规定可以看作设备的流量/数据包管理器。 队列规定内封装了其他两个主要TC组件(类和分类器),控制数据的流动。 \r\n\r\n目前,有一些设备队列规定可以用来管理设备,包括类基队列(CBQ),优先级和CSZ (Clark-Shenker-Zhang)等。CBQ 是一种超级队列,即它能够包含其它队列(甚至其它CBQ)。 \r\n\r\n类由设备队列规定来管理。类由若干规则(rule)构成,这些规则用以管理那个类所拥有的数据。例如,某类里的全部数据包都受到 1 Mbps的速率限度,而在午夜和早上6点的一段时间段内允许最高达 3 Mbps。 \r\n\r\n一些队列规定可以绑定到类上,包括FIFO(先进先出),RED(随机早期探测),SFQ(随机公平队列)和令牌桶(Token Bucket)。 \r\n\r\n如果设备上未绑定队列规定,则使用基本的FIFO。另外, CBQ,CSZ和优先级也能用于类,以及类的子类。这表明使用TC,可以轻松地建造非常复杂的流量控制。管理类的队列规定可以称为类队列规定(class queueing disciplines)。 \r\n\r\n一般地,类队列规定管理该类的数据和队列,能决定延迟、丢掉或者重新分类它管理的包。分类器或过滤器描述包,并且把他们映射到队列规定所管理的类。 \r\n\r\n这些过滤器通常都提供简单的描述语言,指定选择包、把包映射到类的方法。 \r\n\r\n目前,TC可以使用的过滤器有:fwmark分类器,u32分类器,基于路由的分类器和RSVP分类器(分别用于IPV6、IPV4)等;其中,fwmark分类器允许我们使用 Linux netfilter 代码选择流量,而u32分类器允许我们选择基于 ANY 头的流量 。所有的防火墙过滤器, 例如,ipchains,都能用来分类包。 \r\n\r\nTC代码位于内核,不同的功能块既能编译为模块,也能直接编进内核。 与内核代码或模块的通信和配置由用户级程序tc完成。 \r\n\r\n2. 示例 \r\n\r\n2.1 编译内核 \r\n\r\n首先要确保选中 Kernel/User netlink socket,因为只有这样 tc 才能通过 netlink 与内核通讯。 \r\n\r\n然后,把队列规定和分类器都编进内核。这其中包括: \r\n\r\nQoS or fair queueing, CBQ packet scheduler, CSZ packet scheduler, the simplest PRIO pseudoscheduler, RED queue, SFQ queue, TBF queue, QoS support, rate estimator, packet classifier API, routing-tables-based classifier, U32 classifier, special RSVP classifier 和 special RSVP classifier for IPv6。 \r\n\r\n然后就是大家熟知的编译和安装过程了。 \r\n\r\n2.2 建立 \r\n\r\n[因特网] ---〈E3、T3 等〉--- [Linux 路由器] --- [Office+ISP] \r\n\r\neth1 eth0 \r\n\r\n上图中的 Linux 路由器有两个接口,不妨称之为 eth0 和 eth1。eth1 连接到路由器, eth0 连接到包括公司防火墙在内的子网上。 \r\n\r\n由于我们只能限制发送的内容,所以我们需要两套独立的、但可能非常相似的规则集。我们可以通过改变发送次序来控制传输速率。通过修改 eth0 上的队列,我们可以确定客户 的下载(download)速率;通过修改 eth1 上的队列,我们可以确定我们公司自己的用 户的上载(upload)速率。 \r\n\r\n比如说,公司连接到因特网的线路带宽为 10 兆,同时满足外部客户和公司自己用户的需要;此时,我们就需要一种策略,来进行管理和协调。CBQ 就可以满足我们的要求。 \r\n\r\n我们有两个主类:ISP 和 Office。我们可以决定,客户有 8 兆的带宽,Office用户有 2 兆的带宽。 \r\n\r\n我们首先发布如下的命令: \r\n\r\n# tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000 \r\n\r\n其含义是:我们配置了 eth0 的队列规定,root 表示这是根(root)规定,其句柄 (handle)设定为 10:。 其类型为 CBQ。带宽为 10 M,平均包大小为 1000 字节。 \r\n下面生成根类(root class): \r\n\r\n# tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 10Mbit rate \r\n  10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000 \r\n\r\n这条命令其实不比前一条命令有更多的含义。其中,1514 是 MTU 的值。 \r\n\r\n下面生成 ISP 类: \r\n\r\n# tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 10Mbit rate \r\n8Mbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 1000 bounded \r\n\r\n我们分配了 8 兆的带宽给它,其中 bounded 表示该类不能超过该阀值。 \r\n\r\n下面生成 Office 类: \r\n\r\n# tc class add dev eth0 parent 10:1 classid 10:200 cbq bandwidth 10Mbit rate \r\n  2Mbit allot 1514 weight 200Kbit prio 5 maxburst 20 avpkt 1000 bounded \r\n\r\n\r\n我们已经向内核通知了我们的类,我们还需要告诉内核如何管理队列,如下所示: \r\n\r\n# tc qdisc add dev eth0 parent 10:100 sfq quantum 1514b perturb 15 \r\n# tc qdisc add dev eth0 parent 10:200 sfq quantum 1514b perturb 15 \r\n\r\n这里,我们使用了随机公平队列(sfq),在消耗 CPU 周期较少的情况下,其性能还是可以接受的。其它一些队列规定可能更好,但要占用较多的 CPU 资源。令牌桶过滤器也经常使用。 \r\n\r\n下面还有一件事要作:告诉内核网络包和类的映射关系。 \r\n\r\n# tc filter add dev eth0 parent 10:0 protocol ip prio 100 u32 match ip dst \r\n  150.151.23.24 flowid 10:200 \r\n\r\n# tc filter add dev eth0 parent 10:0 protocol ip prio 25 u32 match ip dst \r\n  150.151.0.0/16 flowid 10:100 \r\n\r\n这里,我们假定 Office 位于防火墙 150.151.23.24 的后面,其它 IP 地址都属于 ISP。 u32 匹配是一种比较简单的匹配,我们可以使用 netfilter 生成更加复杂的匹配规则。 \r\n\r\n我们已经分配了下载带宽,下面是上载带宽的分配: \r\n\r\n# tc qdisc add dev eth1 root handle 20: cbq bandwidth 10Mbit avpkt 1000 \r\n\r\n# tc class add dev eth1 parent 20:0 classid 20:1 cbq bandwidth 10Mbit rate \r\n  10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000 \r\n\r\n# tc class add dev eth1 parent 20:1 classid 20:100 cbq bandwidth 10Mbit rate \r\n  8Mbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 1000 \r\n  bounded \r\n\r\n# tc class add dev eth1 parent 20:1 classid 20:200 cbq bandwidth 10Mbit rate \r\n  2Mbit allot 1514 weight 200Kbit prio 5 maxburst 20 avpkt 1000 \r\n  bounded \r\n\r\n# tc qdisc add dev eth1 parent 20:100 sfq quantum 1514b perturb 15 \r\n  # tc qdisc add dev eth1 parent 20:200 sfq quantum 1514b perturb 15 \r\n\r\n# tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip src \r\n  150.151.23.24 flowid 20:200 \r\n\r\n# tc filter add dev eth1 parent 20:0 protocol ip prio 25 u32 match ip src \r\n  150.151.0.0/16 flowid 20:100 \r\n\r\n这与前面的描述基本一致,所以就不做更多的解释了。 \r\n\r\n注: \r\n\r\n在前面的例子中,我们注意到:即使 ISP 客户多数离线,我们的 Office 用户也仍然只 有 2 M 的带宽,这是相当浪费的。我们可以删掉ounded 参数,这样,各类之间就可以相互借用带宽了。 \r\n\r\n但是,某些类也许不希望向其它类借用带宽;比如,一条线路上的两个互为竞争对手的 ISP 的情况。在这种情况下,我们可以加上关键字 isolated。 \r\n\r\n3. 结束语 \r\n\r\n目前,Linux 所提供的 QoS(服务质量)是所有操作系统中最复杂、最完善的。另外, BSD 的 ALTQ 应该说也相当不错;但是,在复杂性、灵活性和可扩展性等方面要落后 Linux 一大截。我不太清楚微软的产品是否提供了这方面的功能。Sun 的 Solaris 提供 了 CBQ 和 RSVP 的功能。 \r\n\r\nLinux 也支持 IETF diffserv 特征。Linux 在 QoS 方面众多的特征,将极大提升 Linux 的市场占有率。

论坛徽章:
0
8 [报告]
发表于 2002-08-16 21:18 |只看该作者
最初由 Fenng 发布\r\n[B]Linux 的带宽管理系统 \r\n\r\n\r\nLinux 包含复杂的带宽管理系统 TC (流量控制,Traffic Control)。该系统支持分类、优先、共享和输入、输出流量限制等。这套系统可以与专用的带宽管理系统相媲美。 \r\n\r\n1. 基本的构成块 \r\n\r\nTC 包括三个基本的构成块: 队列规定(queueing discipline )、类(class)和分类器(Classifiers) 。 \r\n\r\n队列规定可以看作设备的流量/数据包管理器。 队列规定内封装了其他两个主要TC组件(类和分类器),控制数据的流动。 \r\n\r\n目前,有一些设备队列规定可以用来管理设备,包括类基队列(CBQ),优先级和CSZ (Clark-Shenker-Zhang)等。CBQ 是一种超级队列,即它能够包含其它队列(甚至其它CBQ)。 \r\n\r\n类由设备队列规定来管理。类由若干规则(rule)构成,这些规则用以管理那个类所拥有的数据。例如,某类里的全部数据包都受到 1 Mbps的速率限度,而在午夜和早上6点的一段时间段内允许最高达 3 Mbps。 \r\n\r\n一些队列规定可以绑定到类上,包括FIFO(先进先出),RED(随机早期探测),SFQ(随机公平队列)和令牌桶(Token Bucket)。 \r\n\r\n如果设备上未绑定队列规定,则使用基本的FIFO。另外, CBQ,CSZ和优先级也能用于类,以及类的子类。这表明使用TC,可以轻松地建造非常复杂的流量控制。管理类的队列规定可以称为类队列规定(class queueing disciplines)。 \r\n\r\n一般地,类队列规定管理该类的数据和队列,能决定延迟、丢掉或者重新分类它管理的包。分类器或过滤器描述包,并且把他们映射到队列规定所管理的类。 \r\n\r\n这些过滤器通常都提供简单的描述语言,指定选择包、把包映射到类的方法。 \r\n\r\n目前,TC可以使用的过滤器有:fwmark分类器,u32分类器,基于路由的分类器和RSVP分类器(分别用于IPV6、IPV4)等;其中,fwmark分类器允许我们使用 Linux netfilter 代码选择流量,而u32分类器允许我们选择基于 ANY 头的流量 。所有的防火墙过滤器, 例如,ipchains,都能用来分类包。 \r\n\r\nTC代码位于内核,不同的功能块既能编译为模块,也能直接编进内核。 与内核代码或模块的通信和配置由用户级程序tc完成。 \r\n\r\n2. 示例 \r\n\r\n2.1 编译内核 \r\n\r\n首先要确保选中 Kernel/User netlink socket,因为只有这样 tc 才能通过 netlink 与内核通讯。 \r\n\r\n然后,把队列规定和分类器都编进内核。这其中包括: \r\n\r\nQoS or fair queueing, CBQ packet scheduler, CSZ packet scheduler, the simplest PRIO pseudoscheduler, RED queue, SFQ queue, TBF queue, QoS support, rate estimator, packet classifier API, routing-tables-based classifier, U32 classifier, special RSVP classifier 和 special RSVP classifier for IPv6。 \r\n\r\n然后就是大家熟知的编译和安装过程了。 \r\n\r\n2.2 建立 \r\n\r\n[因特网] ---〈E3、T3 等〉--- [Linux 路由器] --- [Office+ISP] \r\n\r\neth1 eth0 \r\n\r\n上图中的 Linux 路由器有两个接口,不妨称之为 eth0 和 eth1。eth1 连接到路由器, eth0 连接到包括公司防火墙在内的子网上。 \r\n\r\n由于我们只能限制发送的内容,所以我们需要两套独立的、但可能非常相似的规则集。我们可以通过改变发送次序来控制传输速率。通过修改 eth0 上的队列,我们可以确定客户 的下载(download)速率;通过修改 eth1 上的队列,我们可以确定我们公司自己的用 户的上载(upload)速率。 \r\n\r\n比如说,公司连接到因特网的线路带宽为 10 兆,同时满足外部客户和公司自己用户的需要;此时,我们就需要一种策略,来进行管理和协调。CBQ 就可以满足我们的要求。 \r\n\r\n我们有两个主类:ISP 和 Office。我们可以决定,客户有 8 兆的带宽,Office用户有 2 兆的带宽。 \r\n\r\n我们首先发布如下的命令: \r\n\r\n# tc qdisc add dev eth0 root handle 10: cbq bandwidth 10Mbit avpkt 1000 \r\n\r\n其含义是:我们配置了 eth0 的队列规定,root 表示这是根(root)规定,其句柄 (handle)设定为 10:。 其类型为 CBQ。带宽为 10 M,平均包大小为 1000 字节。 \r\n下面生成根类(root class): \r\n\r\n# tc class add dev eth0 parent 10:0 classid 10:1 cbq bandwidth 10Mbit rate \r\n  10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000 \r\n\r\n这条命令其实不比前一条命令有更多的含义。其中,1514 是 MTU 的值。 \r\n\r\n下面生成 ISP 类: \r\n\r\n# tc class add dev eth0 parent 10:1 classid 10:100 cbq bandwidth 10Mbit rate \r\n8Mbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 1000 bounded \r\n\r\n我们分配了 8 兆的带宽给它,其中 bounded 表示该类不能超过该阀值。 \r\n\r\n下面生成 Office 类: \r\n\r\n# tc class add dev eth0 parent 10:1 classid 10:200 cbq bandwidth 10Mbit rate \r\n  2Mbit allot 1514 weight 200Kbit prio 5 maxburst 20 avpkt 1000 bounded \r\n\r\n\r\n我们已经向内核通知了我们的类,我们还需要告诉内核如何管理队列,如下所示: \r\n\r\n# tc qdisc add dev eth0 parent 10:100 sfq quantum 1514b perturb 15 \r\n# tc qdisc add dev eth0 parent 10:200 sfq quantum 1514b perturb 15 \r\n\r\n这里,我们使用了随机公平队列(sfq),在消耗 CPU 周期较少的情况下,其性能还是可以接受的。其它一些队列规定可能更好,但要占用较多的 CPU 资源。令牌桶过滤器也经常使用。 \r\n\r\n下面还有一件事要作:告诉内核网络包和类的映射关系。 \r\n\r\n# tc filter add dev eth0 parent 10:0 protocol ip prio 100 u32 match ip dst \r\n  150.151.23.24 flowid 10:200 \r\n\r\n# tc filter add dev eth0 parent 10:0 protocol ip prio 25 u32 match ip dst \r\n  150.151.0.0/16 flowid 10:100 \r\n\r\n这里,我们假定 Office 位于防火墙 150.151.23.24 的后面,其它 IP 地址都属于 ISP。 u32 匹配是一种比较简单的匹配,我们可以使用 netfilter 生成更加复杂的匹配规则。 \r\n\r\n我们已经分配了下载带宽,下面是上载带宽的分配: \r\n\r\n# tc qdisc add dev eth1 root handle 20: cbq bandwidth 10Mbit avpkt 1000 \r\n\r\n# tc class add dev eth1 parent 20:0 classid 20:1 cbq bandwidth 10Mbit rate \r\n  10Mbit allot 1514 weight 1Mbit prio 8 maxburst 20 avpkt 1000 \r\n\r\n# tc class add dev eth1 parent 20:1 classid 20:100 cbq bandwidth 10Mbit rate \r\n  8Mbit allot 1514 weight 800Kbit prio 5 maxburst 20 avpkt 1000 \r\n  bounded \r\n\r\n# tc class add dev eth1 parent 20:1 classid 20:200 cbq bandwidth 10Mbit rate \r\n  2Mbit allot 1514 weight 200Kbit prio 5 maxburst 20 avpkt 1000 \r\n  bounded \r\n\r\n# tc qdisc add dev eth1 parent 20:100 sfq quantum 1514b perturb 15 \r\n  # tc qdisc add dev eth1 parent 20:200 sfq quantum 1514b perturb 15 \r\n\r\n# tc filter add dev eth1 parent 20:0 protocol ip prio 100 u32 match ip src \r\n  150.151.23.24 flowid 20:200 \r\n\r\n# tc filter add dev eth1 parent 20:0 protocol ip prio 25 u32 match ip src \r\n  150.151.0.0/16 flowid 20:100 \r\n\r\n这与前面的描述基本一致,所以就不做更多的解释了。 \r\n\r\n注: \r\n\r\n在前面的例子中,我们注意到:即使 ISP 客户多数离线,我们的 Office 用户也仍然只 有 2 M 的带宽,这是相当浪费的。我们可以删掉ounded 参数,这样,各类之间就可以相互借用带宽了。 \r\n\r\n但是,某些类也许不希望向其它类借用带宽;比如,一条线路上的两个互为竞争对手的 ISP 的情况。在这种情况下,我们可以加上关键字 isolated。 \r\n\r\n3. 结束语 \r\n\r\n目前,Linux 所提供的 QoS(服务质量)是所有操作系统中最复杂、最完善的。另外, BSD 的 ALTQ 应该说也相当不错;但是,在复杂性、灵活性和可扩展性等方面要落后 Linux 一大截。我不太清楚微软的产品是否提供了这方面的功能。Sun 的 Solaris 提供 了 CBQ 和 RSVP 的功能。 \r\n\r\nLinux 也支持 IETF diffserv 特征。Linux 在 QoS 方面众多的特征,将极大提升 Linux 的市场占有率。 [/B]
\r\n\r\n\r\n我做过实验,好像行不通!

论坛徽章:
0
9 [报告]
发表于 2002-08-16 22:42 |只看该作者
老兄,我怀疑你究竟做过没有,Qos可是Linux核心很引以为傲的东西,你居然这么说,嘿嘿,\r\n\r\n你能证明真的行不通吗,还是你没有做对呢?

论坛徽章:
0
10 [报告]
发表于 2002-08-19 09:07 |只看该作者
我做了,也许我做的不对,\r\n\r\n因为我们的网络较为复杂,而机器放得更是离谱,\r\n\r\n同一台机器的一张网卡在三个防火墙的后面,一个网卡在二个防火墙的后面,一个的防火墙的前面。\r\n\r\n而两张网卡都能去公网,并且其中一台通过防火墙IP转发对应了一个公网的IP。\r\n\r\n用TC来实现的时候,它好像并没有安资料上的情况来运行。\r\n\r\n对了,我在google上找了一个,好像中文就只一这一章是讲关于\r\nTC的了。再说我的redhat 7.3有没有改动过对tc体系的支持也未知。\r\n\r\n你看看以前的链工具,现在出了好多版本了,iptable--,现在还有iptablev6呢真不知道该用哪一个了!\r\n\r\nLinux变化太快。不过确实也是越来越好用,但对老的使用者就很迷茫了明白在久的版本中可以用的,新版本就好像不行。\r\n\r\n对了,还有一个问题,我的vBulletin 论坛,在7.2上运行得好好的转到7.3上以后,附件无论如何也上不去。ftp什么的我全改了都不行,而其它设置两边都是一样的!真惨
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP