:::''Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Squid has extensive access controls and makes a great server accelerator. It runs on Unix and Windows and is licensed under the GNU GPL.''

+

:''Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Squid has extensive access controls and makes a great server accelerator. It runs on Unix and Windows and is licensed under the GNU GPL.''

While squid works wonderfully in large corporations and schools, it can also benefit the home user too. However, if you're looking for a more lightweight single-user proxy, you should try [[Polipo]].

While squid works wonderfully in large corporations and schools, it can also benefit the home user too. However, if you're looking for a more lightweight single-user proxy, you should try [[Polipo]].

Line 12:

Line 13:

== Installation ==

== Installation ==

−

pacman -S squid

+

[[pacman|Install]] {{Pkg|squid}} available in the [[Official Repositories]].

== Configuration ==

== Configuration ==

−

By default, the cache directories will be created in /var/cache/squid, and the appropriate permissions set up for those directories. However, for greater control, we need to delve into <tt>/etc/squid/squid.conf</tt>.

+

By default, the cache directories will be created in {{ic|/var/cache/squid}}, and the appropriate permissions set up for those directories. However, for greater control, we need to delve into {{Ic|/etc/squid/squid.conf}}.

Everything is well commented, but if you want to strip the comments out you should run:

Everything is well commented, but if you want to strip the comments out you should run:

Line 24:

Line 25:

The following options might be of some use to you. If you do not have the option present in your configuration file, add it!

The following options might be of some use to you. If you do not have the option present in your configuration file, add it!

−

* <tt>http_port</tt> - Sets the port that Squid binds to on your local machine. You can have Squid bind to multiple ports by specifying multiple http_port lines. By default, Squid binds to port 3128.

+

* {{Ic|http_port}} - Sets the port that Squid binds to on your local machine. You can have Squid bind to multiple ports by specifying multiple http_port lines. By default, Squid binds to port 3128.

http_port 3128

http_port 3128

http_port 3129

http_port 3129

−

* <tt>http_access</tt> - This is an access control list for who is allowed to use the proxy. By default only localhost is allowed to access the proxy. For testing purposes, you may want to change the option <tt>http_access deny all</tt> to <tt>http_access allow all</tt>, which will allow anyone to connect to your proxy. If you wanted to just allow access to your subnet, you can do:

+

* {{Ic|http_access}} - This is an access control list for who is allowed to use the proxy. By default only localhost is allowed to access the proxy. For testing purposes, you may want to change the option {{Ic|http_access deny all}} to {{Ic|http_access allow all}}, which will allow anyone to connect to your proxy. If you wanted to just allow access to your subnet, you can do:

acl ip_acl src 192.168.1.0/24

acl ip_acl src 192.168.1.0/24

http_access allow ip_acl

http_access allow ip_acl

http_access deny all

http_access deny all

−

*<tt>cache_mgr</tt> - This is the email address of the cache manager.

+

*{{Ic|cache_mgr}} - This is the email address of the cache manager.

cache_mgr squid.admin@example.com

cache_mgr squid.admin@example.com

−

*<tt>shutdown_lifetime</tt> - Specifies how long Squid should wait when its rc.d script is asked to stop. If you're running squid on your desktop PC, you may want to set this to something short.

+

*{{Ic|shutdown_lifetime}} - Specifies how long Squid should wait when its service is asked to stop. If you're running squid on your desktop PC, you may want to set this to something short.

shutdown_lifetime 10 seconds

shutdown_lifetime 10 seconds

−

*<tt>cache_mem</tt> - This is how much memory you want Squid to use to keep objects in memory rather than writing them to disk. Squid's total memory usage will exceed this! By default this is 8MB, so you might want to increase it if you have lots of RAM available.

+

*{{Ic|cache_mem}} - This is how much memory you want Squid to use to keep objects in memory rather than writing them to disk. Squid's total memory usage will exceed this! By default this is 8MB, so you might want to increase it if you have lots of RAM available.

cache_mem 64 MB

cache_mem 64 MB

−

*<tt>visible_hostname</tt> - hostname that will be shown in status/error messages

+

*{{Ic|visible_hostname}} - hostname that will be shown in status/error messages

visible_hostname cerberus

visible_hostname cerberus

−

*<tt>cache_peer</tt> - If you want your Squid to go through another proxy server, rather than directly out to the Internet, you need to specify it here.

+

*{{Ic|cache_peer}} - If you want your Squid to go through another proxy server, rather than directly out to the Internet, you need to specify it here.

−

*<tt>never_direct</tt> - Tells the cache to never go direct to the internet to retrieve a page. You will want this if you have set the option above.

+

*{{Ic|login}} - Use this option if the parent proxy requires authentication.

−

cache_peer 10.1.1.100 parent 8080 0 no-query default

+

*{{Ic|never_direct}} - Tells the cache to never go direct to the internet to retrieve a page. You will want this if you have set the option above.

*<tt>maximum_object_size</tt> - The largest size of a cached object. By default this is small (256KB I think), so if you have a lot of disk space you will want to increase the size of it to something reasonable.

+

*{{Ic|maximum_object_size}} - The largest size of a cached object. By default this is small (256KB I think), so if you have a lot of disk space you will want to increase the size of it to something reasonable.

maximum_object_size 10 MB

maximum_object_size 10 MB

−

*<tt>cache_dir</tt> - This is your cache directory, where all the cached files are stored. There are many options here, but the format should generally go like:

+

{{Note|After defining a new cache_dir it maybe necessary to initialize the caches directory structure with this command: <code>squid -zN</code> -z for Create missing swap directories and -N for No daemon mode. }}

−

cache_dir diskd <directory> <size in MB> 16 256

+

*{{Ic|cache_dir}} - This is your cache directory, where all the cached files are stored. There are many options here, but the format should generally go like:

+

cache_dir <storage type> <directory> <size in MB> 16 256

So, in the case of a school's internet proxy:

So, in the case of a school's internet proxy:

cache_dir diskd /cache0 200000 16 256

cache_dir diskd /cache0 200000 16 256

If you change the cache directory from defaults, you must set the correct permissions on the cache directory before starting Squid, else it won't be able to create its cache directories and will fail to start.

If you change the cache directory from defaults, you must set the correct permissions on the cache directory before starting Squid, else it won't be able to create its cache directories and will fail to start.

+

+

== Accessing services on local hostnames ==

+

+

If you plan to access web servers on the LAN using hostnames that are not fully-defined (e.g. {{ic|http://mywebapp}}), you may need to enable the {{ic|dns_defnames}} option. Without this option, Squid will make a DNS request for the hostname verbatim ({{ic|mywebapp}}), which may fail, depending on your LAN's DNS setup. With the option enabled, Squid will append any domain configured in {{ic|/etc/resolv.conf}} when making the request (e.g. {{ic|mywebapp.company.local}}).

+

+

{{bc|

+

dns_defnames on

+

}}

== Starting ==

== Starting ==

Once you have finished your configuration, you should check that your configuration file is correct:

Once you have finished your configuration, you should check that your configuration file is correct:

−

squid -k check

+

# squid -k check

Then create your cache directories:

Then create your cache directories:

−

squid -z

+

# squid -z

Then you can start Squid!

Then you can start Squid!

−

/etc/rc.d/squid start

+

# systemctl start squid

−

Don't forget to add <tt>squid</tt> to the <tt>DAEMONS=()</tt> section of rc.conf if you want it to start on boot.

+

To start squid on boot use this command:

+

# systemctl enable squid

== Content Filtering ==

== Content Filtering ==

Line 95:

Line 107:

Follow [[ClamAV|this link]] to install ClamAV on your system.

Follow [[ClamAV|this link]] to install ClamAV on your system.

−

Once ClamAV is installed, install HAVP from AUR. Details on installing an AUR package can be found [http://wiki.archlinux.org/index.php/AUR_User_Guidelines#Installing_Packages_from_the_AUR here], and the HAVP package can be found [http://aur.archlinux.org/packages.php?ID=10417 here].

+

Once ClamAV is installed, install HAVP from AUR. Details on installing an AUR package can be found [[AUR_User_Guidelines#Installing_Packages_from_the_AUR|here]], and the HAVP package can be found [https://aur.archlinux.org/packages.php?ID=10417 here].

=== Configuration ===

=== Configuration ===

Once HAVP is installed, create a user group for the HAVP instance:

Once HAVP is installed, create a user group for the HAVP instance:

−

<pre>

+

useradd havp

−

adduser havp

+

−

</pre>

Change the owner of the antivirus logs and temporary file-testing directories to havp :

Change the owner of the antivirus logs and temporary file-testing directories to havp :

Make sure your port in your /etc/havp/havp.config matches the cache_peer port in /etc/squid/squid.conf.

Make sure your port in your /etc/havp/havp.config matches the cache_peer port in /etc/squid/squid.conf.

=== Testing ===

=== Testing ===

−

Reload your squid and start HAVP :

+

Reload your squid and start HAVP:

−

<pre>

+

systemctl restart squid

−

/etc/rc.d/squid restart

+

systemctl start havp

−

/etc/rc.d/havp start

−

</pre>

Don't forget to add HAVP to your rc.conf if your want it to launch on boot :

Don't forget to add HAVP to your rc.conf if your want it to launch on boot :

−

<pre>

+

systemctl enable squid

−

DAEMONS=([...] squid havp [...]_

+

systemctl enable havp

−

</pre>

You can try the antivirus capabilities with a test virus (not a real virus) available [http://www.eicar.org/anti_virus_test_file.htm here].

You can try the antivirus capabilities with a test virus (not a real virus) available [http://www.eicar.org/anti_virus_test_file.htm here].

== Transparent web proxy ==

== Transparent web proxy ==

−

Transparency happens by redirecting all www requests eth0 picks up, to Squid. You'll need to indicate Squid that it is running like a transparent web proxy by adding the <tt>transparent</tt> parameter to the <tt>http_port</tt> option:

+

Transparency happens by redirecting all www requests eth0 picks up, to Squid. You'll need to indicate Squid that it is running like a transparent web proxy by adding the {{Ic|intercept}} (for squid 3.2) parameter to the {{Ic|http_port}} option:

Squid is a caching proxy for the Web supporting HTTP, HTTPS, FTP, and more. It reduces bandwidth and improves response times by caching and reusing frequently-requested web pages. Squid has extensive access controls and makes a great server accelerator. It runs on Unix and Windows and is licensed under the GNU GPL.

While squid works wonderfully in large corporations and schools, it can also benefit the home user too. However, if you're looking for a more lightweight single-user proxy, you should try Polipo.

Installation

Configuration

By default, the cache directories will be created in /var/cache/squid, and the appropriate permissions set up for those directories. However, for greater control, we need to delve into /etc/squid/squid.conf.

Everything is well commented, but if you want to strip the comments out you should run:

sed -i "/^#/d;/^ *$/d" /etc/squid/squid.conf

The following options might be of some use to you. If you do not have the option present in your configuration file, add it!

http_port - Sets the port that Squid binds to on your local machine. You can have Squid bind to multiple ports by specifying multiple http_port lines. By default, Squid binds to port 3128.

http_port 3128
http_port 3129

http_access - This is an access control list for who is allowed to use the proxy. By default only localhost is allowed to access the proxy. For testing purposes, you may want to change the option http_access deny all to http_access allow all, which will allow anyone to connect to your proxy. If you wanted to just allow access to your subnet, you can do:

shutdown_lifetime - Specifies how long Squid should wait when its service is asked to stop. If you're running squid on your desktop PC, you may want to set this to something short.

shutdown_lifetime 10 seconds

cache_mem - This is how much memory you want Squid to use to keep objects in memory rather than writing them to disk. Squid's total memory usage will exceed this! By default this is 8MB, so you might want to increase it if you have lots of RAM available.

cache_mem 64 MB

visible_hostname - hostname that will be shown in status/error messages

visible_hostname cerberus

cache_peer - If you want your Squid to go through another proxy server, rather than directly out to the Internet, you need to specify it here.

login - Use this option if the parent proxy requires authentication.

never_direct - Tells the cache to never go direct to the internet to retrieve a page. You will want this if you have set the option above.

maximum_object_size - The largest size of a cached object. By default this is small (256KB I think), so if you have a lot of disk space you will want to increase the size of it to something reasonable.

maximum_object_size 10 MB

Note: After defining a new cache_dir it maybe necessary to initialize the caches directory structure with this command: squid -zN -z for Create missing swap directories and -N for No daemon mode.

cache_dir - This is your cache directory, where all the cached files are stored. There are many options here, but the format should generally go like:

cache_dir <storage type> <directory> <size in MB> 16 256

So, in the case of a school's internet proxy:

cache_dir diskd /cache0 200000 16 256

If you change the cache directory from defaults, you must set the correct permissions on the cache directory before starting Squid, else it won't be able to create its cache directories and will fail to start.

Accessing services on local hostnames

If you plan to access web servers on the LAN using hostnames that are not fully-defined (e.g. http://mywebapp), you may need to enable the dns_defnames option. Without this option, Squid will make a DNS request for the hostname verbatim (mywebapp), which may fail, depending on your LAN's DNS setup. With the option enabled, Squid will append any domain configured in /etc/resolv.conf when making the request (e.g. mywebapp.company.local).

dns_defnames on

Starting

Once you have finished your configuration, you should check that your configuration file is correct:

# squid -k check

Then create your cache directories:

# squid -z

Then you can start Squid!

# systemctl start squid

To start squid on boot use this command:

# systemctl enable squid

Content Filtering

If you're looking for a content filtering solution to work with Squid, you should check out the very powerful DansGuardian.

Frontend

If you'd like a web-based frontend for managing Squid, Webmin is your best bet.

Ad blocking with adzapper

Adzapper is a plugin for Squid. It catches ads of all sorts (even Flash animations) and replaces them with an image of your choice, so the layout of the page isn't altered very much.

Installation

Adzapper is no longer in the community repository, but it can be found in the AUR.

Make sure your port in your /etc/havp/havp.config matches the cache_peer port in /etc/squid/squid.conf.

Testing

Reload your squid and start HAVP:

systemctl restart squid
systemctl start havp

Don't forget to add HAVP to your rc.conf if your want it to launch on boot :

systemctl enable squid
systemctl enable havp

You can try the antivirus capabilities with a test virus (not a real virus) available here.

Transparent web proxy

Transparency happens by redirecting all www requests eth0 picks up, to Squid. You'll need to indicate Squid that it is running like a transparent web proxy by adding the intercept (for squid 3.2) parameter to the http_port option: