• Stars
    star
    976
  • Rank 46,912 (Top 1.0 %)
  • Language
    Shell
  • Created over 3 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Lists and configuration for our DNS blocking service

dns-blocklists

This repository contains the Ansible playbook that we use to generate DNS based blocking files for our Encrypted DNS, and VPN server (also known as VPN relay) based DNS blocking.

This is imported to our VPN servers frequently.

We aim to update these lists on a weekly basis. You can view the latest update by selecting the commits to this repository.

Using Encrypted DNS on Apple Devices

For convenience we have Apple configuration profiles (.mobileconfig) signed for simpler "one-click installation", or MDM management.

These are available here: https://github.com/mullvad/encrypted-dns-profiles

Differences between VPN servers and Encrypted DNS

Please note that our Encrypted DNS service includes different hostnames for each option. We currently offer the following:

  • Vanilla:
  • Ad-block:
  • Base:
    • This includes Ad-blocking, Tracker, and Malware blocking for TLS and HTTPS. The lists are what are found in this repository.
    • TLS: base.dns.mullvad.net
    • HTTPS: https://base.dns.mullvad.net/dns-query
  • Extended:
    • This includes Ad-blocking, Tracker, Malware and Social Media blocking for TLS and HTTPS. The lists are what are found in this repository.
    • TLS: extended.dns.mullvad.net
    • HTTPS: https://extended.dns.mullvad.net/dns-query
  • All:
    • This includes Ad-blocking, Tracker, Malware, Adult content, Gambling and Social Media blocking for TLS and HTTPS. The lists are what are found in this repository.
    • TLS: all.dns.mullvad.net
    • HTTPS: https://all.dns.mullvad.net/dns-query

Note that social media block lists are not available on our VPN server block lists, they are only available on the Encrypted DNS service.

Lists

The following lists are what we import to our service. You can find these defined in inventory/group_vars for the server type you wish to view.

  • doh: Encrypted DNS servers
  • relay: VPN servers (relays)

Trackers

We currently use these tracker blocklists with our service:

Advertising

We currently use these advertising blocklists with our service:

Adult content

We currently use this Adult content blocklist for our service:

Gambling

We currently use these gambling blocklists with our service:

Social media

We currently generate our own Social media blocklists for the Encrypted DNS service, not VPN servers.

You can find all the URLs in inventory/group_vars/all.yml

Malware

We currently use this malware content blocklist for our service:

Pull requests / Issues / Updating block lists

We really welcome your feedback for lists to use for blocking! We cannot action them all individually, but we will read them. This is an actively worked on project and we will take into consideration all of your requests, even if we do not reply to them.

We prefer to not block individual custom URLs or add block lists without them being fully validated and verified first. Please consider pointing us toward a reputable block list prior to making a Github Issue.

If we close your issue or reject your request, it is most likely down to us not having a way of verifying that the block list is trustworthy.

Custom DNS entries for use with our VPN service

The following is a list of all the IP addresses we use for our DNS based blocking.

These IPs can be used within custom DNS in our configuration files, or via our Apps.

To block everything enter: 100.64.0.31

Ads and Tracker combinations

100.64.0.1 - Ad blocking only
100.64.0.2 - Trackers only
100.64.0.3 - Ad blocking and tracker blocking

Malware serving website combinations

100.64.0.4 - Malware blocking only
100.64.0.5 - Ad blocking and malware blocking
100.64.0.6 - Tracker blocking and malware blocking
100.64.0.7 - Ad blocking, tracker blocking and malware blocking

Adult content blocking combinations

100.64.0.8 - Adult content blocking only
100.64.0.9 - Adult content and ad blocking
100.64.0.10 - Adult content and tracker blocking
100.64.0.11 - Adult content blocking, ad blocking and tracker blocking
100.64.0.12 - Adult content blocking and malware blocking
100.64.0.13 - Adult content blocking, ad blocking and malware blocking
100.64.0.14 - Adult content blocking, tracker blocking and malware blocking
100.64.0.15 - Adult content blocking, ad blocking, tracker blocking and malware blocking

Gambling website combinations

100.64.0.16 - Gambling blocking only
100.64.0.17 - Gambling blocking and ad blocking
100.64.0.18 - Gambling blocking and tracker blocking
100.64.0.19 - Gambling blocking, ad blocking and tracker blocking
100.64.0.20 - Gambling blocking and malware blocking
100.64.0.21 - Gambling blocking ad blocking and malware blocking
100.64.0.22 - Gambling blocking, malware blocking and tracking blocking
100.64.0.23 - Gambling blocking, ad blocking, malware blocking and tracker blocking
100.64.0.24 - Gambling blocking and adult blocking
100.64.0.25 - Gambling blocking, ad blocking and adult content blocking
100.64.0.26 - Gambling blocking, adult content blocking, and tracker blocking
100.64.0.27 - Gambling blocking, ad blocking, adult content blocking and tracker blocking
100.64.0.28 - Gambling blocking, adult content blocking and malware blocking
100.64.0.29 - Gambling blocking, ad blocking, adult content blocking, and malware blocking
100.64.0.30 - Gambling blocking, adult content blocking, malware blocking and tracker blocking
100.64.0.31 - Ad blocking, adult content blocking, gambling blocking, malware blocking, tracker blocking ("Everything")

Building

The following steps are useful only if you wish to build the lists yourself.

The output files located in output/relay/ are what are imported onto our VPN servers.

Requirements

  • Ansible Core 2.14.x =<
  • Qubes OS

Step by step

  • Ensure the values in group_vars/<group>.yml are up to date with any block lists
  • Ensure the script in scripts/generate_social_blocklists.sh has been run in a Disposible VM (dispVM) with the output qvm-copied to inventory/group_vars
  • Ensure you have added any 'custom' extra lists or websites to block
  • Run the playbook to generate the lists:
    • ansible-playbook -i inventory/ playbook.yml
    • ansible-playbook -i inventory/ playbook.yml --tags=readme can be used to generate the README on its own
  • View the output (once pushed) at https://raw.githubusercontent.com/mullvad/dns-adblock/main/output/<group>.txt?raw=true
  • Run test script: cd scripts && ./check_zonedata.sh
  • Sign the outputted relay files with your GPG code signing key, for example:
    • for list in adblock adult privacy gambling social; do gpg2 --detach-sign --armor output/relay/relay_${list}.txt > output/relay/relay_${list}.txt.gpg; done && for list in adblock adult privacy gambling social; do gpg2 --detach-sign --armor output/relay/relay_${list}.zone > output/relay/relay_${list}.gpg; done
  • Verify the outputted GPG signed files, for example:
    • for list in adblock adult privacy gambling social; do echo "Verify: ${list}" && gpg2 --verify output/relay/relay_${list}.txt.gpg output/relay/relay_${list}.txt; done && for list in adblock adult privacy gambling social; do echo "Verify: ${list}" && gpg2 --verify output/relay/relay_${list}.gpg output/relay/relay_${list}.zone; done

More Repositories

1

mullvadvpn-app

The Mullvad VPN client app for desktop and mobile
Rust
4,976
star
2

mullvad-browser

Privacy-focused browser for Linux, macOS and Windows. Made in collaboration between @torproject and @mullvad
1,259
star
3

windows-service-rs

Windows services in Rust
Rust
501
star
4

udp-over-tcp

Proxy UDP traffic over a TCP stream
Rust
343
star
5

encrypted-dns-profiles

macOS and iOS profiles to configure our DNS over TLS and DNS over HTTPS service. Can be applied with human interaction, or via MDM.
242
star
6

browser-extension

Mullvad Browser Extension improves your browsing experience while using Mullvad VPN.
TypeScript
191
star
7

libwfp

C++ library for interacting with the Windows Filtering Platform (WFP)
C++
82
star
8

nftnl-rs

Rust bindings and abstraction for libnftnl, low-level userspace access to the in-kernel nf_tables subsystem
Rust
71
star
9

pfctl-rs

Library and CLI for interfacing with the PF firewall on macOS
Rust
64
star
10

jsonrpc-client-rs

A JSON-RPC 2.0 client in and for Rust
Rust
53
star
11

jnix

Procedural macros for automatically generating conversion code between Rust and Java
Rust
47
star
12

message-queue

A redis pubsub -> websocket message queue
Go
37
star
13

mullvadvpn-app-binaries

Extra binaries to bundle with Mullvad VPN app
C
36
star
14

win-split-tunnel

Mullvad split tunnel driver for Windows
C++
36
star
15

system-configuration-rs

Bindings to System Configuration framework for macOS
Rust
35
star
16

oqs-rs

Rust bindings and key exchange for liboqs (Open Quantum Safe), a library for quantum-resistant cryptographic algorithms
Rust
35
star
17

system-transparency

Shell
33
star
18

coding-guidelines

Guides and texts about how we develop, format and work with code at Mullvad
32
star
19

windows-libraries

C++ libraries for Windows
C++
23
star
20

mullvad-wg.sh

Configuration script for using Mullvad with WireGuard on linux
Shell
19
star
21

openvpn-plugin-rs

A crate allowing easy creation of OpenVPN plugins in Rust
Rust
18
star
22

NSEventMonitor

Node.js module for monitoring NSEvents
Objective-C++
17
star
23

windows-security

Node add-on to access security features on Windows
C++
15
star
24

apisocks5

Censorship circumvention. Reroute and optionally obfuscate traffic destined for the Mullvad API.
Go
14
star
25

mnl-rs

Rust bindings and abstraction for libmnl. A minimalistic user-space library oriented to Netlink developers
Rust
8
star
26

wgephemeralpeer

Mullvad Post-Quantum-secure WireGuard tunnels for vanilla WireGuard and custom integrations.
Go
8
star
27

mullvadvpn-app-tests

Rust
3
star
28

infrastructure-ansible-packages

Ansible installation packages used by the Infrastructure Team
Shell
3
star
29

globe-mesh-builder

Parses SHP (shapefiles) and produce OpenGL compatible vertex and index buffers for drawing a spherical world map (globe). Used by the Mullvad VPN app to generate map data
Rust
2
star
30

hyper-dnscache

An implementation of the hyper Resolve trait that can cache in memory
Rust
2
star
31

grpc-sandbox

App team playing around with gRPC
Rust
2
star
32

mullvadvpn-app-assets

This repository contains the graphical assets used in mullvadvpn-app
Shell
1
star
33

heathrow_wifi

DIGITAL Command Language
1
star
34

wireguard-go

Go
1
star
35

client-binaries

Binaries that are bundled with the Mullvad VPN client.
Shell
1
star
36

supply-chain

Shared third party code audits
1
star
37

mullvadvpn-app-screenshots

Screenshots for CI purposes
1
star