Difference between revisions of "Ad-blocking"

From Amahi Wiki
Jump to: navigation, search
 
(20 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<!--
 
This page is crated automaticaly by a script.
 
This part is commented and shall not show
 
-->
 
<!--At the top of the page can be vissible one of the following tags..-->
 
    {{WorkInProgress}}
 
<!--{{NeedsUpdate}}-->
 
<!--{{NeedsMerge | [[Main Page]]}}-->
 
<!--{{NeedsExpantion}}-->
 
<!--{{NeedsDelete |[[Main Page]]}}-->
 
<!--Please remove or place comment accordingly-->
 
<!--Your text bellow this line-->
 
 
<b><i>This section will document how to run your HDA as a network wide ad-blocking tool, utilising DNS redirects and a small pixel server.<br /></i></b>
 
<b><i>This section will document how to run your HDA as a network wide ad-blocking tool, utilising DNS redirects and a small pixel server.<br /></i></b>
  
 +
The work here was based on: https://sfxpt.wordpress.com/2011/02/21/the-best-ad-blocking-method/.
  
 +
Pixelserv is a webserver which simply serves 1x1 blank pixels. By redirecting web requests for adverts to our pixelserver, ads are replaced by this 1x1 pixel leaving the target webpage intact. This will work on all devices across your network, removing the need for software-based solutions on each device.
  
 +
A shell script get-adlist.sh will update the list of blocked domains (stored as /etc/dnsmasq.adblock.conf) whever you run it. You can also manually edit the list and remove domains that you wish to see (in the case of wrongly blocked domains).
  
= Fedora 19 =
+
 
 +
 
 +
= Fedora 19 or Greater=
  
 
Precusors -  
 
Precusors -  
 
*You'll need net-tools installed to use ifconfig
 
*You'll need net-tools installed to use ifconfig
 
  yum install net-tools
 
  yum install net-tools
 +
* You also need a file editing tool. Vi will suffice, however nano is a bit more user friendly.
 +
yum install nano
 
* This guide assumes your network interface is named p2p1 and your HDA IP address is 192.168.1.2. Check with ifconfig, and change this guide where neccessary.
 
* This guide assumes your network interface is named p2p1 and your HDA IP address is 192.168.1.2. Check with ifconfig, and change this guide where neccessary.
  
  
 
==Get Ad List==
 
==Get Ad List==
 +
This part of the process creates a file on your HDA which identifies where adverts originate from, and where to redirect them to.
 +
* Create a new shell file
 +
nano /usr/local/bin/get-ad-block-list.sh
 +
 +
* Copy and paste the following into it
 +
#!/bin/sh
 +
# Download the DNSmasq formatted ad block list
 +
curl <nowiki>"http://pgl.yoyo.org/adservers/serverlist.php?hostformat=dnsmasq&showintro=0&mimetype=plaintext"</nowiki> | sed "s/127\.0\.0\.1/192.168.1.99/" > /etc/dnsmasq.adblock.conf
 +
# Restart DNSmasq
 +
service dnsmasq restart
 +
 +
* Change permissions on the shell file
 +
chmod -v 755 /usr/local/bin/get-ad-block-list.sh
 +
 +
* Run the shell file
 +
/usr/local/bin/get-ad-block-list.sh
  
 
==Change DNSMasq config==
 
==Change DNSMasq config==
 +
DNSMasq reads the adlist file and redirects DNS requests as configured.
 +
* Add the block list to DNSMasq configuration
 +
echo "conf-file=/etc/dnsmasq.adblock.conf" >> /etc/dnsmasq.conf
 +
 +
* Restart DNSMasq
 +
service dnsmasq restart
  
 
==Bind Apache to main IP address==
 
==Bind Apache to main IP address==
 
+
By default, Apache will try to use all IP addresses. We require an IP address later in the process and so we have to tell Apache only to use the standard HDA address.
 
* Edit the Apache config file using a file editor:
 
* Edit the Apache config file using a file editor:
 
  nano /etc/httpd/conf/httpd.conf
 
  nano /etc/httpd/conf/httpd.conf
Line 50: Line 67:
  
 
==Pixel Server==
 
==Pixel Server==
 
+
The pixel server is where we're redirecting adverts to. A simple 1x1 pixel is served on the IP address specified.
 
* You need to download Pixelserv to the HDA:
 
* You need to download Pixelserv to the HDA:
 
  wget <nowiki>http://proxytunnel.sourceforge.net/files/pixelserv.pl.txt</nowiki>  
 
  wget <nowiki>http://proxytunnel.sourceforge.net/files/pixelserv.pl.txt</nowiki>  
Line 58: Line 75:
  
 
* Edit pixelserv using a file editing program of your choice
 
* Edit pixelserv using a file editing program of your choice
  nano pixelserv
+
  nano /usr/local/bin/pixelserv
  
 
* Change the IP address to a free one of your choice (eg. 192.168.1.99)
 
* Change the IP address to a free one of your choice (eg. 192.168.1.99)
Line 66: Line 83:
  
 
* Change permissions
 
* Change permissions
  chmod 755 /usr/local/pixelserv  
+
  chmod 755 /usr/local/bin/pixelserv  
 
   
 
   
 
* Create file /etc/init.d/pixelserv
 
* Create file /etc/init.d/pixelserv
 
  nano /etc/init.d/pixelserv
 
  nano /etc/init.d/pixelserv
and copy the following to it (changing the IP addresses where neccessary):
+
and copy the following to it (changing the IP addresses and interfaces where neccessary):
 
  #! /bin/sh
 
  #! /bin/sh
 
  # /etc/init.d/pixelserv
 
  # /etc/init.d/pixelserv
Line 99: Line 116:
 
  chmod 755 /etc/init.d/pixelserv
 
  chmod 755 /etc/init.d/pixelserv
  
 +
* To bring the new interface up and start pixelserv
 +
/etc/init.d/pixelserv start
  
Enjoy ad-free network on ALL devices!
+
* To stop pixelserv and close the virtual interface
 
+
/etc/init.d/pixelserv stop
  
 +
To keep the list updated weekly, do the following:
 +
ln -s /usr/local/bin/get-ad-block-list.sh /etc/cron.daily/get-ad-block-list
  
 
+
Enjoy ad-free network on ALL devices!
<!--Your text above this line-->
 
<!--This page must bellong to one of the following categories please remove comment-->
 
<!--[[category:Apps]]-->
 
<!--[[Category:Fedora]]-->
 
<!--[[Category:Platform]]-->
 
<!--[[Category:Pro Version]]-->
 
<!--[[Category:Services]]-->
 
<!--[[Category:VPN]]-->
 

Latest revision as of 03:35, 25 May 2019

This section will document how to run your HDA as a network wide ad-blocking tool, utilising DNS redirects and a small pixel server.

The work here was based on: https://sfxpt.wordpress.com/2011/02/21/the-best-ad-blocking-method/.

Pixelserv is a webserver which simply serves 1x1 blank pixels. By redirecting web requests for adverts to our pixelserver, ads are replaced by this 1x1 pixel leaving the target webpage intact. This will work on all devices across your network, removing the need for software-based solutions on each device.

A shell script get-adlist.sh will update the list of blocked domains (stored as /etc/dnsmasq.adblock.conf) whever you run it. You can also manually edit the list and remove domains that you wish to see (in the case of wrongly blocked domains).


Fedora 19 or Greater

Precusors -

  • You'll need net-tools installed to use ifconfig
yum install net-tools
  • You also need a file editing tool. Vi will suffice, however nano is a bit more user friendly.
yum install nano
  • This guide assumes your network interface is named p2p1 and your HDA IP address is 192.168.1.2. Check with ifconfig, and change this guide where neccessary.


Get Ad List

This part of the process creates a file on your HDA which identifies where adverts originate from, and where to redirect them to.

  • Create a new shell file
nano /usr/local/bin/get-ad-block-list.sh
  • Copy and paste the following into it
#!/bin/sh
# Download the DNSmasq formatted ad block list
curl "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=dnsmasq&showintro=0&mimetype=plaintext" | sed "s/127\.0\.0\.1/192.168.1.99/" > /etc/dnsmasq.adblock.conf
# Restart DNSmasq
service dnsmasq restart
  • Change permissions on the shell file
chmod -v 755 /usr/local/bin/get-ad-block-list.sh
  • Run the shell file
/usr/local/bin/get-ad-block-list.sh

Change DNSMasq config

DNSMasq reads the adlist file and redirects DNS requests as configured.

  • Add the block list to DNSMasq configuration
echo "conf-file=/etc/dnsmasq.adblock.conf" >> /etc/dnsmasq.conf
  • Restart DNSMasq
service dnsmasq restart

Bind Apache to main IP address

By default, Apache will try to use all IP addresses. We require an IP address later in the process and so we have to tell Apache only to use the standard HDA address.

  • Edit the Apache config file using a file editor:
nano /etc/httpd/conf/httpd.conf
  • Add your HDAs IP address to this section in the conf file:
#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 192.168.1.2:80
  • Restart Apache
service httpd restart


Pixel Server

The pixel server is where we're redirecting adverts to. A simple 1x1 pixel is served on the IP address specified.

  • You need to download Pixelserv to the HDA:
wget http://proxytunnel.sourceforge.net/files/pixelserv.pl.txt 
  • Move and rename the Pixelserv binary:
mv pixelserv.pl.txt /usr/local/bin/pixelserv
  • Edit pixelserv using a file editing program of your choice
nano /usr/local/bin/pixelserv
  • Change the IP address to a free one of your choice (eg. 192.168.1.99)
$sock = new IO::Socket::INET (  LocalHost => '0.0.0.0',

change to

$sock = new IO::Socket::INET (  LocalHost => '192.168.1.99',
  • Change permissions
chmod 755 /usr/local/bin/pixelserv 

  • Create file /etc/init.d/pixelserv
nano /etc/init.d/pixelserv

and copy the following to it (changing the IP addresses and interfaces where neccessary):

#! /bin/sh
# /etc/init.d/pixelserv
#

# Carry out specific functions when asked to by the system
case "$1" in
   start)
     echo "Creating Interface "
     ifconfig p2p1:0 192.168.1.99
     echo "Starting pixelserv "
     /usr/local/bin/pixelserv &
     ;;
   stop)
     echo "Stopping script pixelserv"
     pkill -9 pixelserv &
     echo "Killing Interface "
     ifconfig p2p1:0 down
     ;;
   *)
     echo "Usage: /etc/init.d/pixelserv {start|stop}"
     exit 1
     ;;
esac
exit 0
  • Change permissions
chmod 755 /etc/init.d/pixelserv
  • To bring the new interface up and start pixelserv
/etc/init.d/pixelserv start
  • To stop pixelserv and close the virtual interface
/etc/init.d/pixelserv stop

To keep the list updated weekly, do the following:

ln -s /usr/local/bin/get-ad-block-list.sh /etc/cron.daily/get-ad-block-list

Enjoy ad-free network on ALL devices!