Rate-limiting with Shorewall


Open web proxies can incur heavy traffic. By default, SwiperProxy will use all bandwidth available to it. However, you may want to restrict the bandwidth usage to leave some for other services, or to stay within bandwidth quota's.

This document assumes that you are already moderately familiar with Shorewall and have a basic functional service set up. If not, see the Shorewall website. We will also assume IPv4-only. The same practices used here also mostly apply to shorewall6.

These lines in their respective configuration files will rate limit the proxy usage. They are meant as examples, and you should tweak and configure as desired.


rules

#ACTION    SOURCE    DEST    PROTO  DEST  SOURCE    ORIGINAL  RATE    USER/  MARK  CONNLIMIT  TIME         HEADERS         SWITCH
SECTION NEW
ACCEPT     net       fw      tcp    80    -         -         s:apache2:10/min:15
ACCEPT     net       fw      tcp    443   -         -         s:apache2:10/min:15

tcclasses

# DEVICE  MARK  RATE  CEIL   PRIORITY  OPTIONS
eth0      2     1mbit 10mbit 2         tcp-ack,tos-minimize-delay
eth0      3     2mbit 10mbit 3         default
eth0      4     1mbit 1mbit  4         flow=dst
eth0      5     1mbit 5mbit  5         flow=dst

tcdevices

# INTERFACE  IN-BANDWIDTH  OUT-BANDWIDTH
eth0         90mbit        90mbit

tcrules

# ACTION  SOURCE  DEST  PROTO  DPOST  SPORT  USER        TEST  LENGTH  TOS  CONNBYTES
4         fw      -     tcp    -      80,443
4         fw      -     -      -      -      www-data
5         fw      -     tcp    -      80,443
5         fw      -     -      -      -      swiperproxy