GithubHelp home page GithubHelp logo

ishan-marikar / adblocking-vpn Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bobnisco/adblocking-vpn

2.0 3.0 0.0 4 KB

๐Ÿ”’ Create your own VPN server that blocks malicious domains to enhance your security and privacy

License: MIT License

adblocking-vpn's Introduction

Roll your own Adblocking VPN

This is a how to guide to creating your own VPN server that also blocks malicious domains to enhance your security and privacy while browsing.

How does this work?

Quite simply, this guide will set you up with a Linux server that runs OpenVPN, with Dnsmasq, with a modified hosts file that routes offending sites to 0.0.0.0.

Prerequisites

  • You will need a Debian/CentOS/Ubuntu server to run your OpenVPN server on.
    • If you don't have one, you can get a low cost VPS from a provider like Bandwagon Host
    • Disclaimer: Wherever you get a server from, be sure you're obeying their TOS. I'm not responsible for anything you do from following this guide.

Instructions

  1. Get OpenVPN installed on your server. For this, we will use Nyr's fantastic OpenVPN installer script
  • wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh
    • Follow the instructions to get it set up, it should take about 1 minute
    • It will generate an .ovpn file which you will use to connect to the VPN with from your client. We'll need this later on, so feel free to scp it to your client machine.
  1. Now we're going to overwrite our hosts file to route malicious domains to 0.0.0.0 by using StevenBlack's amazing hosts project.
  • wget https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts -O /etc/hosts
  1. Install Dnsmasq
  • sudo apt-get install dnsmasq
  1. We need to edit the dnsmasq config file to do a few things:
  • sudo vim /etc/dnsmasq.conf
    • Enable domain-needed and bogus-priv
    • Add in some alternative DNS servers (if you don't like the one provided by your host). For this example, we'll add Google DNS
    server=8.8.8.8
    server=8.8.4.4
    
    • Tell dnsmasq to listen on both localhost and to the subnet that OpenVPN created
    listen-address=127.0.0.1
    listen-address=10.8.0.1
    
  1. Edit the OpenVPN config file to resolve dhcp through dnsmasq
  • vim /etc/openvpn/server.conf
    • Add push "dhcp-option DNS 10.8.0.1"
    • Delete any other lines about "dhcp-option"
  1. Create a crontab entry that updates your hosts file every night at midnight:
  • crontab -e
    • Add the following line 0 0 * * * wget https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts -O /etc/hosts && service openvpn restart
  1. Restart the services
  • sudo service dnsmasq restart && sudo service openvpn restart
  1. At this point, we have an OpenVPN server routing traffic through Dnsmasq, which is checking our hosts file for malicious hosts, and falling back to a DNS provider for non-malicious hosts. Using the .ovpn file from earlier, you can now connect to the VPN from your client.

Adding/Removing Users

Thanks to the thoughtful work on Nyr, we can just use their script from the first step to manage users. It will detect that OpenVPN is already installed and prompt you to Add a new User, Removing existing user, or Remove OpenVPN completely: wget https://git.io/vpn -O openvpn-install.sh && bash openvpn-install.sh

License

These instructions are licensed under an MIT License

adblocking-vpn's People

Contributors

bobnisco avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.