Penguin
Diff: HowToBandwidthLimitingHOWTO
EditPageHistoryDiffInfoLikePages

Differences between version 3 and revision by previous author of HowToBandwidthLimitingHOWTO.

Other diffs: Previous Major Revision, Previous Revision, or view the Annotated Edit History

Newer page: version 3 Last edited on Thursday, October 21, 2004 5:15:32 pm by AristotlePagaltzis Revert
Older page: version 2 Last edited on Friday, June 7, 2002 1:06:15 am by perry Revert
@@ -1,1186 +1 @@
-Bandwidth Limiting HOWTO  
-!!!Bandwidth Limiting HOWTO  
-!Tomasz Chmielewski  
-  
-tch@metalab.unc.edu  
-  
-  
-__Revision History__Revision .92001-11-20Revised by: tc  
-  
-  
-  
-  
-  
-This document describes how to set up your Linux server  
-to limit download bandwidth or incoming traffic and how to use  
-your internet link more efficiently.  
-  
-  
-  
-  
-  
-----; __Table of Contents__; 1. Introduction: ; 1.1. New versions of this document; 1.2. Disclaimer; 1.3. Copyright and License; 1.4. Feedback and corrections; 1.5. Thanks; 2. Before We Start: ; 2.1. What do we need; 2.2. How does it work?; 3. Installing and Configuring Necessary Software: ; 3.1. Installing Squid with the delay pools feature; 3.2. Configuring Squid to use the delay pools feature; 3.3. Solving remaining problems; 4. Dealing with Other Bandwidth-consuming Protocols Using CBQ: ; 4.1. FTP; 4.2. Napster, Realaudio, Windows Media and other issues; 5. Frequently Asked Questions: ; 5.1. Is it possible to limit bandwidth on a per-user basis with delay pools?; 5.2. How do I make __wget__ work with Squid?; 5.3. I set up my own SOCKS server listening on port 1080, and now I'm not able to connect to  
-any irc server.; 5.4. I don't like when Kazaa or Audiogalaxy is filling up all my upload bandwidth.; 5.5. My outgoing mail server is eating up all my bandwidth.; 5.6. Can I limit my own FTP or WWW server in a manner similar it is shown in the question above?; 5.7. Is it possible to limit bandwidth on a per-user basis with __cbq.init__ script?; 5.8. Whenever I start cbq.init, it says sch_cbq is missing.; 5.9. CBQ sometimes doesn't work for no reason.; 5.10. Delay pools are stupid; why can't I download something at full speed  
-when the network is used only by me?; 5.11. My downloads break at 23:59 with "acl day time 09:00-23:59" in squid.conf. Can I do  
-something about it?; 5.12. Squid's logs grow and grow very fast, what can I do about it?; 5.13. CBQ is stupid; why can't I download something at full speed when the  
-network is used only be me?; 6. Miscellaneous: ; 6.1. Useful resources----  
-!!!1. Introduction  
-  
-The purpose of this guide is to provide an easy solution for limiting incoming  
-traffic, thus preventing our LAN  
-users from consuming all the bandwidth of our internet link.  
-  
-  
-  
-This is useful when our internet link is slow or our LAN users  
-download tons of mp3s and the newest Linux distro's *.iso files.  
-  
-----  
-!!1.1. New versions of this document  
-  
-You can always view the latest version of this document on the World  
-Wide Web at the  
-URL http://www.linuxdoc.org.  
-  
-  
-  
-New versions of this document will also be uploaded to various Linux  
-WWW and FTP sites, including the LDP home page at  
-http://www.linuxdoc.org.  
-  
-----  
-!!1.2. Disclaimer  
-  
-Neither the author nor the distributors, or any other contributor of  
-this HOWTO are in any way responsible for physical, financial, moral or any  
-other type of damage incurred by following the suggestions in this text.  
-  
-----  
-!!1.3. Copyright and License  
-  
-This document is copyright 2001 by Tomasz Chmielewski, and is  
-released under the terms of the GNU Free Documentation License,  
-which is hereby incorporated by reference.  
-  
-----  
-!!1.4. Feedback and corrections  
-  
-If you have questions or comments about this document, please feel free  
-to mail Tomasz Chmielewski at ''tch@metalab.unc.edu''. I welcome any suggestions  
-or criticisms. If you find a mistake or a typo in this document (and you will  
-find a lot of them, as English is not my native language), please let me know  
-so I can correct it in the next version. Thanks.  
-  
-----  
-!!1.5. Thanks  
-  
-I would like to thank Ami M. Echeverri lula@pollywog.com who helped me to  
-convert the HOWTO into SGML format and corrected some mistakes. I also want to  
-thank Ryszard Prosowicz prosowicz@poczta.fm for useful suggestions.  
-  
-----  
-!!!2. Before We Start  
-  
-Let's imagine the following situation:  
-  
-  
-  
-  
-  
-  
-*  
-  
-We have 115,2 kbits/s ppp (modem) internet link (115,2/10  
-= 11,5 kbytes/s). Note: with eth connections  
-(network card) we would divide 115,2 by 8; with ppp we divide by 10, because  
-of start/stop bits (8 + 1 + 1 = 10).  
-  
-  
-*  
-*  
-  
-We have some LAN stations and their users are doing bulk downloads  
-all the time.  
-  
-  
-*  
-*  
-  
-We want web pages to open fast, no matter how  
-many dowloads are happening.  
-  
-  
-*  
-*  
-  
-Our internet interface is __ppp0__.  
-  
-  
-*  
-*  
-  
-Our LAN interface is __eth0__.  
-  
-  
-*  
-*  
-  
-Our network is 192.168.1./24  
-  
-  
-*----  
-!!2.1. What do we need  
-  
-Believe it or not, shaping the incoming traffic is an easy  
-task and you don't have to read tons of books about routing or queuing algorithms.  
-  
-  
-  
-To make it work, we need at least Squid proxy; if we want to fine tune  
-it, we will have to get familiar with ipchains or iptables and CBQ.  
-  
-  
-  
-To test our efforts, we can install IPTraf.  
-  
-----  
-!!2.2. How does it work?  
-  
-Squid is probably the most advanced HTTP proxy server available for Linux.  
-It can help us save bandwidth in two ways:  
-  
-  
-  
-  
-  
-  
-*  
-  
-The first is a main characteristic of proxy servers -- they keep downloaded  
-web pages, pictures, and other objects in memory or on a disk. So, if two people are  
-requesting the same web page, it isn't downloaded from the internet,  
-but from the local proxy.  
-  
-  
-*  
-*  
-  
-Apart from normal caching, Squid has a special feature called delay  
-pools. Thanks to delay pools, it is possible to limit internet traffic in a  
-reasonable way, depending on so-called 'magic words', existing in any given  
-URL. For example, a magic word could be '.mp3', '.exe' or '.avi', etc.  
-Any distinct part of a URL (such as .avi) can be defined as a magic word.  
-  
-  
-*  
-  
-With that, we can tell the Squid to download these kinds of files at a  
-specified speed (in our example, it will be about 5 kbytes/s). If our  
-LAN users download files at the same time, they will be downloaded  
-at about 5 kbytes/s altogether, leaving remaining bandwidth for web pages,  
-e-mail, news, irc, etc.  
-  
-  
-  
-Of course, the Internet is not only used for downloading files via web  
-pages (http or ftp). Later on, we will deal with limiting bandwidth for Napster,  
-Realaudio, and other possibilities.  
-  
-----  
-!!!3. Installing and Configuring Necessary Software  
-  
-Here, I will explain how to install the necessary software  
-so that we can limit and test the bandwidth usage.  
-  
-----  
-!!3.1. Installing Squid with the delay pools feature  
-  
-As I mentioned before, Squid has a feature called delay pools, which  
-allows us to control download bandwidth. Unfortunately, in most distributions,  
-Squid is shipped without that feature.  
-  
-  
-  
-So if you have Squid already installed, I must disappoint you -- you  
-need to uninstall it and do it once again with delay pools enabled in the  
-way I explain below.  
-  
-  
-  
-  
-  
-  
-#  
-  
-To get maximum performance from our Squid proxy, it's best  
-to create a separate partition for its cache, called /cache/. Its size should  
-be about 300 megabytes, depending on our needs.  
-  
-  
-  
-If you don't know how to make a separate partition, you can create the  
-/cache/ directory on  
-a main partition, but Squid performance can suffer a bit.  
-  
-  
-#  
-#  
-  
-We add a safe 'squid' user:  
-  
-  
-  
-# useradd -d /cache/ -r -s /dev/null squid b/dev/null 2b81  
-  
-  
-  
-No one can log in as squid, including root.  
-  
-  
-#  
-#  
-  
-We download Squid sources from http://www.squid-cache.org  
-  
-  
-  
-When I was writing this HOWTO, the latest version was Squid 2.4 stable  
-1:  
-  
-  
-  
-http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE1-src.tar.gz  
-  
-  
-#  
-#  
-  
-We unpack everything to /var/tmp:  
-  
-  
-#  
-#  
-  
-# tar xzpf squid-2.4.STABLE1-src.tar.gz  
-  
-  
-#  
-#  
-  
-We compile and install Squid (everthing is in one line):  
-  
-  
-  
-# ./configure --prefix=/opt/squid --exec-prefix=/opt/squid  
---enable-delay-pools --enable-cache-digests --enable-poll --disable-ident-lookups  
---enable-truncate --enable-removal-policies  
-  
-  
-  
-# make all  
-  
-  
-  
-# make install  
-  
-  
-#----  
-!!3.2. Configuring Squid to use the delay pools feature  
-  
-  
-  
-  
-#  
-  
-Configure our squid.conf file (located under /opt/squid/etc/squid.conf):  
-  
-  
-#squid.conf  
-#Every option in this file is very well documented in the original squid.conf file  
-#and on http://www.visolve.com/squidman/Configuration%20Guide.html  
-#  
-#The ports our Squid will listen on.  
-http_port 8080  
-icp_port 3130  
-#cgi-bins will not be cached.  
-acl QUERY urlpath_regex cgi-bin \?  
-no_cache deny QUERY  
-#Memory the Squid will use. Well, Squid will use far more than that.  
-cache_mem 16 MB  
-#250 means that Squid will use 250 megabytes of disk space.  
-cache_dir ufs /cache 250 16 256  
-#Places where Squid's logs will go to.  
-cache_log /var/log/squid/cache.log  
-cache_access_log /var/log/squid/access.log  
-cache_store_log /var/log/squid/store.log  
-cache_swap_log /var/log/squid/swap.log  
-#How many times to rotate the logs before deleting them.  
-#See the FAQ for more info.  
-logfile_rotate 10  
-redirect_rewrites_host_header off  
-cache_replacement_policy GDSF  
-acl localnet src 192.168.1./255.255.255.  
-acl localhost src 127...1/255.255.255.255  
-acl Safe_ports port 80 443 210 119 70 20 21 1025-65535  
-acl CONNECT method CONNECT  
-acl all src .../...  
-http_access allow localnet  
-http_access allow localhost  
-http_access deny !Safe_ports  
-http_access deny CONNECT  
-http_access deny all  
-maximum_object_size 3000 KB  
-store_avg_object_size 50 KB  
-#Set these if you want your proxy to work in a transparent way.  
-#Transparent proxy means you generally don't have to configure all  
-#your client's browsers, but hase some drawbacks too.  
-#Leaving these uncommented won't do any harm.  
-httpd_accel_host virtual  
-httpd_accel_port 80  
-httpd_accel_with_proxy on  
-httpd_accel_uses_host_header on  
-#all our LAN users will be seen by external web servers  
-#as if they all used Mozilla on Linux. :)  
-anonymize_headers deny User-Agent  
-fake_user_agent Mozilla/5.0 (X11; U; Linux i686; en-US; rv:.9.6+) Gecko/20011122  
-#To make our connection even faster, we put two lines similar  
-#to the ones below. They will point a parent proxy server our own Squid  
-#will use. Don't forget to change the server to the one that will  
-#be fastest for you!  
-#Measure pings, traceroutes and so on.  
-#Make sure that http and icp ports are correct.  
-#Uncomment lines beginning with "cache_peer" if necessary.  
-#This is the proxy you are going to use for all connections...  
-#cache_peer w3cache.icm.edu.pl parent 8080 3130 no-digest default  
-#...except for the connections to addresses and IPs beginning with "!".  
-#It's a good idea not to use a higher  
-#cache_peer_domain w3cache.icm.edu.pl !.pl !7thguard.net !192.168.1.1  
-#This is useful when we want to use the Cache Manager.  
-#Copy cachemgr.cgi to cgi-bin of your www server.  
-#You can reach it then via a web browser typing  
-#the address http://your-web-server/cgi-bin/cachemgr.cgi  
-cache_mgr your@email  
-cachemgr_passwd secret_password all  
-#This is a name of a user our Squid will work as.  
-cache_effective_user squid  
-cache_effective_group squid  
-log_icp_queries off  
-buffered_logs on  
-#####DELAY POOLS  
-#This is the most important part for shaping incoming traffic with Squid  
-#For detailed description see squid.conf file or docs at http://www.squid-cache.org  
-#We don't want to limit downloads on our local network.  
-acl magic_words1 url_regex -i 192.168  
-#We want to limit downloads of these type of files  
-#Put this all in one line  
-acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt  
-.ram .rm .iso .raw .wav .mov  
-#We don't block .html, .gif, .jpg and similar files, because they  
-#generally don't consume much bandwidth  
-#We want to limit bandwidth during the day, and allow  
-#full bandwidth during the night  
-#Caution! with the acl below your downloads are likely to break  
-#at 23:59. Read the FAQ in this bandwidth if you want to avoid it.  
-acl day time 09:00-23:59  
-#We have two different delay_pools  
-#View Squid documentation to get familiar  
-#with delay_pools and delay_class.  
-delay_pools 2  
-#First delay pool  
-#We don't want to delay our local traffic.  
-#There are three pool classes; here we will deal only with the second.  
-#First delay class (1) of second type (2).  
-delay_class 1 2  
-#-1/-1 mean that there are no limits.  
-delay_parameters 1 -1/-1 -1/-1  
-#magic_words1: 192.168 we have set before  
-delay_access 1 allow magic_words1  
-#Second delay pool.  
-#we want to delay downloading files mentioned in magic_words2.  
-#Second delay class (2) of second type (2).  
-delay_class 2 2  
-#The numbers here are values in bytes;  
-#we must remember that Squid doesn't consider start/stop bits  
-#5000/150000 are values for the whole network  
-#5000/120000 are values for the single IP  
-#after downloaded files exceed about 150000 bytes,  
-#(or even twice or three times as much)  
-#they will continue to download at about 5000 bytes/s  
-delay_parameters 2 5000/150000 5000/120000  
-#We have set day to 09:00-23:59 before.  
-delay_access 2 allow day  
-delay_access 2 deny !day  
-delay_access 2 allow magic_words2  
-#EOF  
-  
-OK, when we have configured everything, we must make sure everything under /opt/squid and /cache directories belongs  
-to user 'squid'.  
-  
-  
-  
-__# mkdir /var/log/squid/__  
-  
-  
-  
-__# chown squid:squid /var/log/squid/__  
-  
-  
-  
-__# chmod 770 /var/log/squid/__  
-  
-  
-  
-__# chown -R squid:squid /opt/squid/__  
-  
-  
-  
-__# chown -R squid:squid /cache/__  
-  
-  
-  
-Now everything is ready to run Squid. When we do it for the first time,  
-we have to create its cache directories:  
-  
-  
-  
-__# /opt/squid/bin/squid -z__  
-  
-  
-  
-We run Squid and check if everything is working. A good tool to do that  
-is IPTraf; you can find it on http://freshmeat.net. Make sure you have set the appropriate proxy in your web browsers (192.168.1.1,  
-port 8080 in our example):  
-  
-  
-  
-__# /opt/squid/bin/squid__  
-  
-  
-  
-If everything is working, we add /opt/squid/bin/squid line to the end of our initializing scripts. Usually, it can  
-be /etc/rc.d/rc.local.  
-  
-  
-  
-Other helpful options in Squid may be:  
-  
-  
-  
-__# /opt/squid/bin/squid -k reconfigure__ (it reconfigures  
-Squid if we made any changes in its squid.conf file)  
-  
-  
-  
-__# /opt/squid/bin/squid -help__ :) self-explanatory  
-  
-  
-  
-You can also copy cachemgr.cgi to the cgi-bin directory  
-of your WWW server, to make use of a useful Cache Manager.  
-  
-  
-#----  
-!!3.3. Solving remaining problems  
-  
-OK, we have installed Squid and configured it to use delay pools. I  
-bet nobody wants to be restricted, especially our clever LAN users. They will  
-likely try to avoid our limitations, just to download their favourite mp3s  
-a little faster (and thus causing your headache).  
-  
-  
-  
-I assume that you use IP-masquerade on your LAN so that your users  
-could use IRC, ICQ, e-mail, etc. That's OK, but we must make  
-sure that our LAN users will use our delay pooled Squid to access web pages  
-and use ftp.  
-  
-  
-  
-We can solve most of these problems by using ipchains (Linux  
-2.2.x kernels) or iptables (Linux 2.4.x kernels).  
-  
-----  
-!3.3.1. Linux 2.2.x kernels (ipchains)  
-  
-We must make sure that nobody will try to cheat and use a proxy  
-server other than ours. Public proxies usually run on 3128 and 8080 ports:  
-  
-  
-  
-__/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 3128  
--p TCP -j REJECT__  
-  
-  
-  
-__/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 8080  
--p TCP -j REJECT__  
-  
-  
-  
-We must also make sure that nobody will try to cheat and connect to the  
-internet directly (IP-masquerade) to download web pages:  
-  
-  
-  
-__/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 80  
--p TCP -j REDIRECT 8080__  
-  
-  
-  
-If everything is working, we add these lines to the end of our initializing  
-scripts. Usually, it can be /etc/rc.d/rc.local.  
-  
-  
-  
-We might think to block ftp traffic (ports  
-20 and 21) to force our LAN users to use Squid, but it's not a good idea  
-for at least two reasons:  
-  
-  
-  
-  
-  
-  
-*  
-  
-Squid is a http proxy with ftp support,  
-not a real ftp proxy. It can download from ftp, it can also upload to some ftp, but it  
-can't delete/change name of files on remote ftp servers.  
-  
-  
-  
-When we block ports 20 and 21, we won't be able to delete/change name  
-of files on remote ftp servers.  
-  
-  
-*  
-*  
-  
-IE5.5 has a bug -- it doesn't use a proxy  
-to retrieve the ftp directory. Instead it connects directly  
-via IP-masquerade.  
-  
-  
-  
-When we block ports 20 and 21, we won't be able to browse through ftp directories, using IE5.5.  
-  
-  
-*  
-  
-So, we will block excessive ftp  
-downloads using other methods. We will deal with it in chapter 4.  
-  
-----  
-!3.3.2. Linux 2.4.x kernels (iptables)  
-  
-We must make sure that nobody will try to cheat and use a proxy  
-server other than ours. Public proxies usually run on 3128 and 8080 ports:  
-  
-  
-  
-__/sbin/iptables -A FORWARD -s 192.168.1.1/24 -d ! 192.168.1.1 --dport 3128  
--p TCP -j DROP__  
-  
-  
-  
-__/sbin/iptables -A FORWARD -s 192.168.1.1/24 -d ! 192.168.1.1 --dport 8080  
--p TCP -j DROP__  
-  
-  
-  
-We must also make sure that nobody will try to cheat and connect to the  
-internet directly (IP-masquerade) to download web pages:  
-  
-  
-  
-__/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80  
--j REDIRECT --to-port 8080__  
-  
-  
-  
-If everything is working, we add these lines to the end of our initializing  
-scripts. Usually, it can be /etc/rc.d/rc.local.  
-  
-  
-  
-We might think to block ftp traffic (ports  
-20 and 21) to force our LAN users to use Squid, but it's not a good idea  
-for at least two reasons:  
-  
-  
-  
-  
-  
-  
-*  
-  
-Squid is a http proxy with ftp support,  
-not a real ftp proxy. It can download from ftp, it can also upload to some ftp, but it  
-can't delete/change name of files on remote ftp servers.  
-  
-  
-  
-When we block ports 20 and 21, we won't be able to delete/change name  
-of files on remote ftp servers.  
-  
-  
-*  
-*  
-  
-IE5.5 has a bug -- it doesn't use a proxy  
-to retrieve the ftp directory. Instead it connects directly  
-via IP-masquerade.  
-  
-  
-  
-When we block ports 20 and 21, our LAN users won't be able to browse  
-through ftp directories, using IE5.5.  
-  
-  
-*  
-  
-So, we will block excessive ftp  
-downloads using other methods. We will deal with it in chapter 4.  
-  
-----  
-!!!4. Dealing with Other Bandwidth-consuming Protocols Using CBQ  
-  
-We must remember that our LAN users can spoil our efforts from chapter  
-3, if they use Napster, Kazaa or Realaudio. We must also remember that we didn't  
-block ftp traffic in section 3.3.  
-  
-  
-  
-We will achieve it in a different way -- not by limiting downloading directly,  
-but rather, indirectly. If our internet device is ppp0  
-and LAN device is eth0, we will limit outgoing traffic  
-on interface eth0, and thus, limit incoming traffic to ppp0.  
-  
-  
-  
-To do it, we will get familiar with CBQ and cbq.init  
-script. You can obtain it from ftp://ftp.equinox.gu.net/pub/linux/cbq/. Download cbq.init-v0.6.2 and put it in /etc/rc.d/.  
-  
-  
-  
-You will also need iproute2 installed. It comes  
-with every Linux distribution.  
-  
-  
-  
-Now look in your /etc/sysconfig/cbq/ directory.  
-There, you should have an example file, which should work with cbq.init. If it isn't there, you probably don't have it compiled in your  
-kernel nor it isnt't present as modules. Well, in any case, just make that  
-directory, put example files provided below, and see  
-if it'd work for you.  
-  
-----  
-!!4.1. FTP  
-  
-In chapter 3, we didn't block ftp for two reasons -- so that we could do uploads,  
-and so  
-that users with buggy IE5.5 could browse through ftp  
-directories. In all, our web browsers and ftp programs  
-should make downloads via our Squid proxy and ftp uploads/renaming/deleting  
-should be made via IP-masquerade.  
-  
-  
-  
-We create a file called cbq-10.ftp-network in the /etc/sysconfig/cbq/ directory:  
-  
-  
-  
-__# touch /etc/sysconfig/cbq/cbq-10.ftp-network__  
-  
-  
-  
-We insert the following lines into it:  
-  
-  
-DEVICE=eth0,10Mbit,1Mbit  
-RATE=15Kbit  
-WEIGHT=1Kbit  
-PRIO=5  
-RULE=:20,192.168.1./24  
-RULE=:21,192.168.1./24  
-  
-You will find the description of thses lines in cbq.init-v0.6.2 file.  
-  
-  
-  
-When you start /etc/rc.d/cbq.init-v0.6.2 script,  
-it will read your configuration, which is placed in /etc/sysconfig/cbq/:  
-  
-  
-  
-__# /etc/rc.d/cbq.init-v0.6.2 start__  
-  
-  
-  
-If everything is working, we add /etc/rc.d/cbq.init-v0.6.2 start to the end of your initializing scripts. Usually, it can  
-be /etc/rc.d/rc.local.  
-  
-  
-  
-Thanks to this command, your server will not send ftp data  
-through eth0 faster than about 15kbits/s, and thus will not  
-download ftp data from the internet faster than 15kbits/s.Your LAN users  
-will see that it's more efficient to use Squid proxy for doing ftp downloads. They will be also able to browse ftp  
-directories using their buggy IE5.5.  
-  
-  
-  
-There is also another bug in IE5.5 - when you right click on a file  
-in a ftp directory then select 'Copy To Folder',  
-the file is downloaded not through proxy, but directly through IP-masquerade,  
-thus omitting Squid with delay pools.  
-  
-----  
-!!4.2. Napster, Realaudio, Windows Media and other issues  
-  
-Here, the idea is the same as with ftp; we just  
-add another port and set a different speed.  
-  
-  
-  
-We create file called cbq-50.napster-network in the /etc/sysconfig/cbq/ directory:  
-  
-  
-  
-__# touch /etc/sysconfig/cbq/cbq-50.napsterandlive__  
-  
-  
-  
-Put these lines into that file:  
-  
-  
-DEVICE=eth0,10Mbit,1Mbit  
-RATE=35Kbit  
-WEIGHT=3Kbit  
-PRIO=5  
-#Windows Media Player.  
-RULE=:1755,192.168.1./24  
-#Real Player uses TCP port 554, for UDP it uses different ports,  
-#but generally !RealAudio in UDP doesn't consume much bandwidth.  
-RULE=:554,192.168.1./24  
-RULE=:7070,192.169.1./24  
-#Napster uses ports 6699 and 6700, maybe some other?  
-RULE=:6699,192.168.1./24  
-RULE=:6700,192.168.1./24  
-#Audiogalaxy uses ports from 41000 to as high as probably 41900,  
-#there are many of them, so keep in mind I didn't list all of  
-#them here. Repeating 900 nearly the same lines would be of course  
-#pointless. We will simply cut out ports 410031-41900 using  
-#ipchains or iptables.  
-RULE=:41000,192.168.1./24  
-RULE=:41001,192.168.1./24  
-#continue from 41001 to 41030  
-RULE=:41030,192.168.1./24  
-#Some clever users can connect to SOCKS servers when using Napster,  
-#Audiogalaxy etc.; it's also a good idea to do so  
-#when you run your own SOCKS proxy  
-RULE=:1080,192.168.1./24  
-#Add any other ports you want; you can easily check and track  
-#ports that programs use with IPTraf  
-#RULE=:port,192.168.1./24  
-  
-Don't forget to cut out remaining Audiogalaxy ports (41031-41900), using ipchains  
-(kernels 2.2.x or iptables (kernels 2.4.x).  
-  
-  
-  
-Kernels 2.2.x.  
-  
-  
-  
-__/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 41031:41900  
--p TCP -j REJECT__  
-  
-  
-  
-Kernels 2.4.x.  
-  
-  
-  
-__/sbin/iptables -A FORWARD -s 192.168.1.1/24 -d ! 192.168.1.1  
---dport 41031:41900 -p TCP -j REJECT__  
-  
-  
-  
-Don't forget to add a proper line to your initializing scripts.  
-  
-----  
-!!!5. Frequently Asked Questions  
-!!5.1. Is it possible to limit bandwidth on a per-user basis with delay pools?  
-  
-Yes. Look inside the original squid.conf file and  
-check the Squid documentation on http://www.squid-cache.org  
-  
-----  
-!!5.2. How do I make __wget__ work with Squid?  
-  
-It's simple. Create a file called .wgetrc and put it in your home directory.  
-Insert the following lines in it and that's it!  
-  
-  
-HTTP_PROXY=192.168.1.1:8080  
-FTP_PROXY=192.168.1.1:8080  
-  
-You can make it work globally for all users, type man wget  
-to learn how.  
-  
-----  
-!!5.3. I set up my own SOCKS server listening on port 1080, and now I'm not able to connect to  
-any irc server.  
-  
-There can be two issues here.  
-  
-  
-  
-One is when your SOCKS proxy is open relay, that means everyone can use it from any place in the world.  
-It is a security issue and you should check your SOCKS proxy configuration again - generally irc servers don't  
-allow open relay SOCKS servers to connect to them.  
-  
-  
-  
-If you are sure your SOCKS server isn't open relay, you may be still disallowed to connect to  
-some of the irc servers - it's because mostly they just check if SOCKS server is running on port 1080 of a client  
-that is connecting. In that case just reconfigure your SOCKS to work on a different port. You will also have to  
-reconfigure your LAN software to use a proper SOCKS server and port.  
-  
-----  
-!!5.4. I don't like when Kazaa or Audiogalaxy is filling up all my upload bandwidth.  
-  
-Indeed that can be painful, but it's simple to be solved.  
-  
-  
-  
-Create a file called for example /etc/sysconfig/cbq/cbq-15.ppp.  
-  
-  
-  
-Insert the following lines into it, and Kazaa or Audiogalaxy will upload not faster than  
-about 15 kbits/s. I assume that your outgoing internet interface is ppp0.  
-  
-  
-DEVICE=ppp0,115Kbit,11Kbit  
-RATE=15Kbit  
-WEIGHT=2Kbit  
-PRIO=5  
-TIME=01:00-07:59;110Kbit/11Kbit  
-RULE=,:21  
-RULE=,213.25.25.101  
-RULE=,:1214  
-RULE=,:41000  
-RULE=,:41001  
-#And so on till :41030  
-RULE=,:41030----  
-!!5.5. My outgoing mail server is eating up all my bandwidth.  
-  
-You can limit your SMTP, Postfix, Sendmail, or whatever, in a way similar to the question above.  
-Just change or add one rule:  
-  
-  
-RULE=,:25  
-  
-Moreover, if you have an SMTP server, you can force your local LAN users to use it,  
-even though they have set up their own SMTP servers to smtp.some.server! We'll do it in a  
-transparent way we did before with Squid.  
-  
-----  
-!!5.6. Can I limit my own FTP or WWW server in a manner similar it is shown in the question above?  
-  
-Generally you can, but usually these servers have got their own bandwidth limiting  
-configurations, so you will probably want to look into their documentation.  
-  
-  
-  
-2.2.x Kernels  
-  
-  
-  
-__/sbin/ipchains -A input -s 192.168.1.1/24 -d ! 192.168.1.1 25 -p TCP -j REDIRECT 25__  
-  
-  
-  
-2.4.x Kernels  
-  
-  
-  
-__/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25  
--j REDIRECT --to-port 25__  
-  
-  
-  
-Don't forget to add a proper line to your initializing scripts.  
-  
-----  
-!!5.7. Is it possible to limit bandwidth on a per-user basis with __cbq.init__ script?  
-  
-Yes. Look inside this script; there are some examples.  
-  
-----  
-!!5.8. Whenever I start cbq.init, it says sch_cbq is missing.  
-  
-Probably you don't have CBQ as modules in your system. If you have compiled CBQ into your kernel, comment out the  
-following lines in your cbq.init-v0.6.2 script.  
-  
-  
-### If you have cbq, tbf and u32 compiled into kernel, comment it out  
-#for module in sch_cbq sch_tbf sch_sfq sch_prio cls_u32; do  
-# if ! modprobe $module; then  
-# echo "**CBQ: could not load module $module"  
-# exit  
-# fi  
-#done----  
-!!5.9. CBQ sometimes doesn't work for no reason.  
-  
-Generally it shouldn't occur. Sometimes, you can observe mass downloads, though you  
-think you have blocked all ports Napster or Audiogalaxy uses. Well, there is always one more  
-port open for mass downloads. To find it, you can use IPTraf. As there can be possibly  
-thousands of such ports, it can be really hard task for you.  
-To make it easier, you can consider running your own SOCKS proxy - Napster, Audiogalaxy  
-and many programs can use SOCKS proxies, so it's much easier to deal with just one port,  
-than to do so with thousands of possibilites (standard SOCKS port is 1080, if you run your  
-own SOCKS proxy server, you will be able  
-to set it up differently, or run multiple instances of SOCKS proxy listening on  
-different ports). Don't forget to close all ports for traffic,  
-and leave open ports like 25 and 110 (SMTP and POP3), and other you think might be useful. You will  
-find a link to awesome Nylon socks proxy server at the end of this HOWTO.  
-  
-----  
-!!5.10. Delay pools are stupid; why can't I download something at full speed  
-when the network is used only by me?  
-  
-Unfortunately, you can't do much about it.  
-  
-  
-  
-The only thing you can do is to use __cron__ and reconfigure  
-it, for example, at 1.00 am, so that Squid won't use delay pools, then reconfigure  
-it again, let's say at 7.30 am, to use delay pools.  
-  
-  
-  
-To do this, create two separate config files, called for example  
-squid.conf-day and squid.conf-night, and put them into  
-/opt/squid/etc/.  
-  
-  
-  
-squid.conf-day would be the exact copy of a config we created earlier  
-  
-  
-  
-squid.conf-night, on the contrary, would not have any delay pool lines, so  
-all you have to do is to comment them out.  
-  
-  
-  
-Next thing you have to do is to set up /etc/crontab entries correctly.  
-  
-  
-  
-Edit /etc/crontab and put the following lines there:  
-  
-  
-#SQUID - night and day config change  
-01 9 * * * root /bin/cp -f /opt/squid/etc/squid.conf-day /opt/squid/etc/squid.conf; /opt/squid/bin/squid -k reconfigure  
-59 23 * * * root /bin/cp -f /opt/squid/etc/squid.conf-night /opt/squid/etc/squid.conf; /opt/squid/bin/squid -k reconfigure----  
-!!5.11. My downloads break at 23:59 with "acl day time 09:00-23:59" in squid.conf. Can I do  
-something about it?  
-  
-You can achieve by removing that acl from your squid.conf, and "delay_access 2 allow dzien  
-delay_access 2 deny !dzien" as well.  
-  
-  
-  
-Then try to do it with __cron__ as in the question above.  
-  
-----  
-!!5.12. Squid's logs grow and grow very fast, what can I do about it?  
-  
-Indeed, the more users you have, the more - sometimes useful - information  
-will be logged.  
-  
-  
-  
-The best way to eradicate it would be to use __logrotate__, but you'd have  
-to do a little trick to make it work with Squid: proper __cron__ and  
-__logrotate__ entries.  
-  
-  
-  
-/etc/crontab entries:  
-  
-  
-#SQUID - logrotate  
-01 4 * * * root /opt/squid/bin/squid -k rotate; /usr/sbin/logrotate /etc/logrotate.conf; /bin/rm -f /var/log/squid/*.log.  
-  
-Here we have caused __logrotate__ to start daily at 04:01 am, so remove  
-any remaining __logrotate__ starting points, for example from /etc/cron.daily/.  
-  
-  
-  
-/etc/logrotate.d/syslog entries:  
-  
-  
-#SQUID logrotate - will keep logs for 40 days  
-/var/log/squid/*.log.0 {  
-rotate 40  
-compress  
-daily  
-postrotate  
-/usr/bin/killall -HUP syslogd  
-endscript  
-}----  
-!!5.13. CBQ is stupid; why can't I download something at full speed when the  
-network is used only be me?  
-  
-Lucky you, it's possible!  
-  
-  
-  
-There are to ways to achieve it.  
-  
-  
-  
-The first is the easy one, similar to the solution we've made with Squid. Insert a line  
-similar to the one below to your CBQ config files placed in  
-/etc/sysconfig/cbq/:  
-  
-  
-TIME=00:00-07:59;110Kbit/11Kbit  
-  
-You can have multiple TIME parameters in your CBQ config files.  
-  
-  
-  
-Be careful though, because there is a small bug in that cbq.init-v0.6.2 script - it won't let you  
-set certain times, for example 00:00-08:00! To make sure if everything is working correctly,  
-start cbq.init-v0.6.2, and then within the time you set, type  
-  
-  
-  
-__/etc/rc.d/cbq.init-v0.6.2 timecheck__  
-  
-  
-  
-This is the example how the proper output should look like:  
-  
-  
-  
- [[root@mangoo rc.d ]# ./cbq.init start; ./cbq.init timecheck  
-**CBQ: 3:44: class 10 on eth0 changed rate (20Kbit -b 110Kbit)  
-**CBQ: 3:44: class 40 on ppp0 changed rate (15Kbit -b 110Kbit)  
-**CBQ: 3:44: class 50 on eth0 changed rate (35Kbit -b 110Kbit)  
-  
-  
-  
-In this example something went wrong, probably in the second config file placed in  
-/etc/sysconfig/cbq/; second counting from the lowest number in its name:  
-  
-  
-  
-[[root@mangoo rc.d]# ./cbq.init start; ./cbq.init timecheck  
-**CBQ: 3:54: class 10 on eth0 changed rate (20Kbit -b 110Kbit)  
-./cbq.init: 08: value too great for base (error token is "08")  
-  
-  
-  
-The second way to make CBQ more intelligent is harder - it doesn't depend on time. You can read about it in the Linux  
-2.4 Advanced Routing HOWTO, and play with tc command.  
-  
-----  
-!!!6. Miscellaneous  
-!!6.1. Useful resources  
-  
-Squid Web Proxy Cache  
-  
-  
-  
-http://www.squid-cache.org  
-  
-  
-  
-Squid 2.4 Stable 1 Configuration manual  
-  
-  
-  
-http://www.visolve.com/squidman/Configuration%20Guide.html  
-  
-  
-  
-http://www.visolve.com/squidman/Delaypool%20parameters.htm  
-  
-  
-  
-Squid FAQ  
-  
-  
-  
-http://www.squid-cache.org/Doc/FAQ/FAQ-19.html#ss19.8  
-  
-  
-  
-cbq-init script  
-  
-  
-  
-ftp://ftp.equinox.gu.net/pub/linux/cbq/  
-  
-  
-  
-Linux 2.4 Advanced Routing HOWTO  
-  
-  
-  
-http://www.linuxdoc.org/HOWTO/Adv-Routing-HOWTO.html  
-  
-  
-  
-Traffic control (in Polish)  
-  
-  
-  
-http://ceti.pl/~kravietz/cbq/  
-  
-  
-  
-Securing and Optimizing Linux Red Hat Edition - A Hands on Guide  
-  
-  
-  
-http://www.linuxdoc.org/guides.html  
-  
-  
-  
-IPTraf  
-  
-  
-  
-http://cebu.mozcom.com/riker/iptraf/  
-  
-  
-  
-IPCHAINS  
-  
-  
-  
-http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html  
-  
-  
-  
-Nylon socks proxy server  
-  
-  
-  
-http://mesh.eecs.umich.edu/projects/nylon/  
-  
-  
-  
-Indonesian translation of this HOWTO by Rahmat Rafiudin ''mjl_id@yahoo.com''  
-  
-  
-  
-http://raf.unisba.ac.id/resources/BandwidthLimitingHOWTO/index .html  
+Describe [HowToBandwidthLimitingHOWTO ] here