sudo aptitude install squid squid-common
Open Squid’s configuration file foe editing :
sudo gedit /etc/squid/squid.conf http_access allow internal_network
acl internal_network src x.x.x.x/x
In the above command, x.x.x.x = your IP address /x will be your subnet. Example : 192.168.0.0/24 or 192.168.10.0/16
Give appropriate permissions :
sudo chown -R proxy:proxy /var/log/squid/ sudo chown proxy:proxy /etc/squid/squid.conf
Restart squid :
sudo /etc/init.d/squid restart
Set your proxy to point your new squid server on port 3128 from your web browser.
If you want to setup authentication with your proxy server you will need apache2 utilities.
sudo aptitude install squid squid-common apache2-utils
Add your first user :
sudo htpasswd -c /etc/squid.passwd username1
For adding more users use :
sudo htpasswd /etc/squid.passwd username2
Edit your squid configuration file :
sudo gedit /etc/squid/squid.conf
Now set Access Control List [acl] and authentication parameters :
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid.passwd auth_param basic children 5 auth_param basic realm NFYE Squid proxy-caching web server auth_param basic credentialsttl 3 hours auth_param basic casesensitive off acl users proxy_auth REQUIRED acl sectionx proxy_auth REQUIRED http_access allow users
You squid configuration [squid.conf] file should look like this :
acl all src 0.0.0.0/0.0.0.0 acl internal_network src 192.168.0.0/24 acl users proxy_auth REQUIRED acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 # https, snews acl SSL_ports port 873 # rsync acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 563 # https, snews acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl Safe_ports port 631 # cups acl Safe_ports port 873 # rsync acl Safe_ports port 901 # SWAT acl sectionx proxy_auth REQUIRED acl purge method PURGE acl CONNECT method CONNECT http_access allow manager localhost http_access allow users http_access allow internal_network http_access deny manager http_access allow purge localhost http_access deny purge http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost http_access deny all http_reply_access allow all icp_access allow all
You can redirect all the http traffic through proxy server.
All the application needs to manually setup for the proxy. But if you
want to avoid this you can set rules in iptables file :
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.0.1:3128 iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
Here eth0 is your LAN device and eth1 is your WANT device while 192.168.0.1 is your LAN IP [IP of eth0]
You can change the configuration file as per your requirement.
Installing squid package :
# yum install squid
Configuring Squid :
# su # vi /etc/squid/squid.conf
Define atleast one ACL for squid on its default port 3128
acl our_networks src x.x.x.x/x http_access allow our_networks
Again x.x.x.x = IP and /x = subnet
Save the squid configuration file close it and start squid :
# chkconfig squid on # /etc/init.d/squid start
Make sure port number 3128 is open :
netstat -tulpn | grep 3128
Edit you iptables so that it allows access to your squid :
# vi /etc/sysconfig/iptables
Using vi editor for the configuration :
-A RH-Firewall-1-INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --dport 3128 -j ACCEPT
Restart iptables for changes to take effect :
# /etc/init.d/iptables restart