Notice: Undefined index: order_next_posts in /nas/content/live/gadgetmag/wp-content/plugins/smart-scroll-posts/smart-scroll-posts.php on line 194

Notice: Undefined index: post_link_target in /nas/content/live/gadgetmag/wp-content/plugins/smart-scroll-posts/smart-scroll-posts.php on line 195

Notice: Undefined index: posts_featured_size in /nas/content/live/gadgetmag/wp-content/plugins/smart-scroll-posts/smart-scroll-posts.php on line 196

Protect your network – Tutorial

Build a gateway server that can intelligently filter content and block access to certain websites from certain PCs


This is a project to create a gateway PC that allows you to filter internet traffic. We’re going to use CentOS as the base of our system and the web filter DansGuardian will carry out the filtering for us.

Filtering the internet has never been more topical, and running DansGuardian puts that power into the hands of the administrator. Basic filtering software blocks individual pages, but DansGuardian is adaptive and analyses the content of pages on the fly. Even better, DansGuardian carries out a sophisticated analysis of the content that uses weighted trigger phrases. This means that a single instance of a banned word might not block the page that the user is attempting to access.

The gateway PC sits between your broadband internet connection and the rest of your network and is capable of assigning connection details to client PCs using DHCP. These computers will lack a direct connection to the internet until you configure them to use our proxy setup.

The finished result is a system that filters out the type of material that you tell it to


Server machine
Two Ethernet adaptors
Firefox web browser

Step by step

Step 01 Set up server

Our example network layout revolves around a single server PC with two network adaptors – one connects to the internet (via router or modem) and the other to the rest of the network (via switch or hub). A Wi-Fi connection to outgoing connection is acceptable if it will meet the bandwidth requirements of your network.

Step 02 Install CentOS

Download the latest CentOS DVD image from This installation is fairly standard until you get to the networking page. Give the computer a meaningful hostname, such as guardian, and then click on Configure Network.

Step 03 Set up the adaptors

Click on a network adaptor, then on Edit… to edit the settings for each one in turn. Select the first adaptor and check ‘Connect automatically’. Now select Method: Manual in the IPv4 tab. Give the first adaptor an address of, a netmask of and a gateway corresponding to the IP address of your router. Give the second adaptor an IP address of Accept the changes, then select Desktop installation profile and wait for the installation to complete. Upon reboot, create a basic user when prompted and then login.

Step 04 Become root

For most of this tutorial, you will need to run as root. In CentOS, you can become root by typing su and then inputting the root password. For the bits that don’t need root access, consider hitting Ctrl+T in the terminal window to create a tab with normal user access.

Step 05 Install the repository

Visit the CentOS RPMForge page and follow the instructions there to download the rpmforge-release package. Install DAG’s GPG key as instructed. Now install the package with rpm -i [name of package].rpm. Carry out a yum update to update the system.

Step 06 Install DansGuardian and Squid

DansGuardian and web cache Squid work in tandem with each other. Install them both by issuing the command yum install dansguardian squid.

Step 07 Start DansGuardian and Squid

Throughout this tutorial, we’re going to use the service command to control all services. Start DansGuardian with service dansguardian start and then start Squid with service squid. Check the output of both commands for errors.

Step 08 Test the proxy

Odds are, Squid and DansGuardian are probably working acceptably well with the default settings. To test this, we’re going to select DansGuardian as the default proxy. Launch Firefox and go to Edit>Preferences>Advanced> Network. Now select the Settings… button. In the Connection Settings dialog, select ‘Manual proxy configuration’. In the HTTP Proxy box, insert with a port of 8080.

Step 09 Test the proxy

Accept the changes you have just made and type into the URL bar. If everything’s working, the page should display as normal. If you’re in a public place, choose a fairly tame site that should be blocked, such as, for testing. You should now see DansGuardian’s default block page.

Step 10 Configure Squid

Type sudo gedit /etc/squid/squid.conf & to open the Squid configuration. Add the lines acl internal_network src and http_access allow internal_network. In other words, process requests from machines with IP addresses that begin 10.x.x.x, which is our LAN. Add the line visible_hostname guardian. Type service squid restart to restart Squid.

Step 11 Add DHCPD

Type yum install dnsmasq. Machines connected to the eth1 subnet need to be assigned an IP address. Edit /etc/dnsmasq.conf. Add the lines (without comments)…

interface=eth1 #Only activate on the LAN
dhcp-option=eth1,3, #Specify the gateway dhcp-range=eth,,,255.255 .255.0,24h # Assign IP addresses -

Step 12 Configure services and restart

Type chkconfig –add followed by chkconfig

Do this for the following services: dnsmasq, dansguardian, squid. Now restart the machine.

Step 13 Configure the clients

Connect a machine to your LAN and make sure DHCP is selected on the client. If working, the machines on the LAN should be assigned an IP address on startup – confirm by typing ifconfig into a terminal. In Firefox, set up the proxy as before, but add as the IP address and check ‘Use this proxy server for all protocols’.

Step 14 14 Configure DansGuardian behaviour

Most of the files that control the filtering behaviour of DansGuardian reside within /etc/ dansguardian/lists/ and you can guess many of their functions from the title. When you make a change to these files, restart DansGuardian with service dansguardian restart.

Step 15 Add IP exceptions

/etc/dansguardian/lists/exceptioniplist contains a list of client machines that will be not be subjected to any content filtering. Keep this list a secret and then assign a static IP to machines that require unfiltered access.

Step 16 Add to banned phrases

For ease of management, bannedphraselist includes lists from within the /phraselist subdirectory. However, you can add phrases in this top-level configuration file, and the format is explained in the file itself. Usefully, it’s easy to specify combinations of words that trigger the blocker.

Step 17 URL blacklists

Sites such as contain ready-made and frequently updated blacklists. The great thing about these lists is that they are categorised. Some scenarios might require a greater sensitivity towards violent material or pornography or pirated software, for example.

Step 18 Exception phrase lists

Exception phrase lists are a quick way to unblock types of material that you do want to give access to. For example, the sites can be unblocked if they include phrases such as ‘sexual health’. See the file itself for the format, and carry out some tests using Google to see what works.

Step 19 Add virus checker

If the clients on your network use Windows, it may be good idea to add virus checking of downloaded files. Type yum install clamd. Now open /etc/dansguardian/ dansguardian.conf in an editor and search for the line that begins with ‘contentscanner’ and that refers to ClamAV and uncomment it. Start the ClamAV daemon with service dansguardian start and then restart DansGuardian.

Step 20 Add DNS caching

If you are processing requests from a lot of machines, try adding DNS caching to improve performance. You already have a working DNS cache: Dnsmsaq, which we installed to provide DHCP. To activate it, edit /etc/resolv.conf and make sure that ‘nameserver’ is the first line and that the other nameserver lines refer to a working DNS server. Reboot the machine. Type dig @localhost to test that local DNS caching is working.