Você pode querer dar uma olhada no Squid + Linux. (A citação abaixo é de Configurando o Squid no Linux )
The Squid Web Proxy Cache is a fully featured Internet caching server that handles all types of web requests on behalf of a user. When a user requests a web resource (webpage, movie clip, graphic, etc..), their request is sent to the caching server which then forwards the request to the real web server on their behalf. When the requested resource is returned to the caching server, it stores a copy of the resource in its "cache" and then forwards the request back to the original user. The next time someone requests a copy of the "cached" resource, it is delivered directly from the local proxy server and not from the distant web server (depending on age of resource etc..).
Using a proxy server can greatly reduce web browsing speed if frequently visited sites and resources are stored locally in the cache. There are also financial savings to be gained if you're a large organisation with many Internet users or even a small home user that has a quota allowance for downloads. There are many ways a proxy can be beneficial to all networks.
The squid proxy has so many features, access controls and other configurable items, that it is impossible to cover all of the settings here. This chapter will provide some basic configuration settings (which is all thats required) to enable the server, and provide access controls to prevent unauthorised users from gaining access to the Internet through your proxy. The configuration file has been documented extremely well by the developers and should provide enough information to assist your set up, however if you don't know what a setting does, don't touch it.