simple-adblock: dnsmasq.ipset option support, better handling of IDNs, updated README
Signed-off-by: Stan Grishin <stangri@melmac.net>
This commit is contained in:
parent
1f81686c0e
commit
c6beee74f9
4 changed files with 420 additions and 229 deletions
|
@ -5,8 +5,8 @@
|
|||
include $(TOPDIR)/rules.mk
|
||||
|
||||
PKG_NAME:=simple-adblock
|
||||
PKG_VERSION:=1.8.0
|
||||
PKG_RELEASE:=4
|
||||
PKG_VERSION:=1.8.1
|
||||
PKG_RELEASE:=7
|
||||
PKG_MAINTAINER:=Stan Grishin <stangri@melmac.net>
|
||||
PKG_LICENSE:=GPL-3.0-or-later
|
||||
|
||||
|
|
|
@ -5,24 +5,39 @@ A simple DNSMASQ/Unbound-based AdBlocking service for OpenWrt/LEDE Project.
|
|||
## Features
|
||||
|
||||
- Super-fast due to the nature of supported block lists and parallel downloading/processing of the blacklists.
|
||||
- Supports both hosts files and domains lists for blocking (to keep it lean and fast).
|
||||
- Supports hosts files and domains lists for blocking.
|
||||
- Everything is configurable from Web UI.
|
||||
- Allows you to easily add your own domains to whitelist or blacklist.
|
||||
- Allows you to easily add URLs to your own blocked hosts or domains lists to block/whitelist (just put whitelisted domains one per line).
|
||||
- Requires no configuration for the download utility wherever you want to use wget/libopenssl or uclient-fetch/libustream-mbedtls.
|
||||
- Installs dependencies automatically.
|
||||
- Doesn't stay in memory -- creates the list of blocked domains and then uses DNSMASQ/Unbound and firewall rules to serve NXDOMAIN or 127.0.0.1 (depending on settings) reply for blocked domains.
|
||||
- Allows you to easily add URLs to your own blocked hosts or domains lists to block/whitelist (just put whitelisted domains one per line in the file you're linking).
|
||||
- Supports multiple modes of AdBlocking implementations with DNSMASQ and Unbound.
|
||||
- Doesn't stay in memory -- creates the list of blocked domains and then uses DNSMASQ/Unbound and firewall rules to serve NXDOMAIN or 127.0.0.1 reply or to reject access (depending on settings) for blocked domains.
|
||||
- As some of the default lists are using https, reliably works with either wget/libopenssl, uclient-fetch/libustream-mbedtls or curl.
|
||||
- Very lightweight and easily hackable, the whole script is just one ```/etc/init.d/simple-adblock``` file.
|
||||
- Retains the downloaded/sorted AdBlocking list on service stop and reuses it on service start (use ```dl``` command if you want to force re-download of the list).
|
||||
- Has an option to store a compressed copy of the AdBlocking list in persistent memory which survives reboots.
|
||||
- Blocks ads served over https (unlike PixelServ-derived solutions).
|
||||
- Blocks ads inside browsers with [DNS-over-HTTPS proxy](https://en.wikipedia.org/wiki/DNS_over_HTTPS) built-in, like [Mozilla Firefox](https://support.mozilla.org/en-US/kb/firefox-dns-over-https#w_about-dns-over-https) or [Google Chrome/Chromium](https://blog.chromium.org/2019/09/experimenting-with-same-provider-dns.html) -- with the ```dnsmasq.ipset``` option.
|
||||
- Proudly made in Canada, using locally-sourced electrons.
|
||||
|
||||
If you want a more robust AdBlocking, supporting free memory detection and complex block lists, supporting IDN, check out [net/adblock](https://github.com/openwrt/packages/tree/master/net/adblock/files).
|
||||
|
||||
## Screenshot (luci-app-simple-adblock)
|
||||
## Screenshots (luci-app-simple-adblock)
|
||||
|
||||

|
||||
Service Status
|
||||
|
||||

|
||||
|
||||
Configuration - Basic Configuration
|
||||
|
||||

|
||||
|
||||
Configuration - Advanced Configuration
|
||||
|
||||

|
||||
|
||||
Whitelist and Blocklist Management
|
||||
|
||||

|
||||
|
||||
## Requirements
|
||||
|
||||
|
@ -30,6 +45,14 @@ This service requires the following packages to be installed on your router: ```
|
|||
|
||||
To satisfy the requirements for connect to your router via ssh and run the following commands:
|
||||
|
||||
### How to use DNSMASQ ipset
|
||||
|
||||
The ```dnsmasq.ipset``` option requires you to install ```ipset``` and ```dnsmasq-full``` instead of the ```dnsmasq```. To do that, connect to your router via ssh and run the following command:
|
||||
|
||||
```sh
|
||||
opkg update; opkg remove dnsmasq; opkg install dnsmasq-full ipset;
|
||||
```
|
||||
|
||||
### OpenWrt 15.05.1 Requirements
|
||||
|
||||
```sh
|
||||
|
@ -126,6 +149,7 @@ Currently supported options are:
|
|||
| --- | --- |
|
||||
|```dnsmasq.addnhosts```|Creates the DNSMASQ additional hosts file ```/var/run/simple-adblock.addnhosts``` and modifies DNSMASQ settings, so that DNSMASQ resolves all blocked domains to "local machine": 127.0.0.1. This option doesn't allow block-list optimization (by removing secondary level domains if the top-level domain is also in the block-list), so it results in a much larger block-list file, but, unlike other DNSMASQ-based options, it has almost no effect on the DNS look up speed. This option also allows quick reloads of DNSMASQ on block-list updates.|
|
||||
|```dnsmasq.conf```|Creates the DNSMASQ config file ```/var/dnsmasq.d/simple-adblock``` so that DNSMASQ replies with NXDOMAIN: "domain not found". This option allows the block-list optimization (by removing secondary level domains if the top-level domain is also in the block-list), resulting in the smaller block-list file. This option will slow down DNS look up speed somewhat.|
|
||||
|```dnsmasq.ipset```|Creates the DNSMASQ ipset file ```/var/dnsmasq.d/simple-adblock.ipset``` and the firewall rule to reject the matching requests. This is the only option for AdBlocking if you're using a browser with [DNS-over-HTTPS proxy](https://en.wikipedia.org/wiki/DNS_over_HTTPS) built-in, like [Mozilla Firefox](https://support.mozilla.org/en-US/kb/firefox-dns-over-https#w_about-dns-over-https) or [Google Chrome/Chromium](https://blog.chromium.org/2019/09/experimenting-with-same-provider-dns.html). This option allows the block-list optimization (by removing secondary level domains if the top-level domain is also in the block-list), resulting in the smaller block-list file. This option requires you install ```dnsmasq-full``` and ```ipset``` [as described here](#how-to-use-dnsmasq-ipset).<br/>PLEASE NOTE, that unlike other options which are truly domain name based blocking, this is essentially an IP address based blocking, ie: if you try to block ```google-analytics.com``` with this option, it may also block/break things like YouTube, Hangouts and other Google services if they share IP address(es) with ```google-analytics.com```.|
|
||||
|```dnsmasq.servers```|Creates the DNSMASQ servers file ```/var/run/simple-adblock.servers``` and modifies DNSMASQ settings so that DNSMASQ replies with NXDOMAIN: "domain not found". This option allows the block-list optimization (by removing secondary level domains if the top-level domain is also in the block-list), resulting in the smaller block-list file. This option will slow down DNS look up speed somewhat. This is a default setting as it results in the smaller block-file and allows quick reloads of DNSMASQ.|
|
||||
|```unbound.adb_list```|Creates the Unbound config file ```/var/lib/unbound/adb_list.simple-adblock``` so that Unbound replies with NXDOMAIN: "domain not found". This option allows the block-list optimization (by removing secondary level domains if the top-level domain is also in the block-list), resulting in the smaller block-list file.|
|
||||
|
||||
|
@ -143,4 +167,4 @@ Please head to [OpenWrt Forum](https://forum.openwrt.org/t/simple-adblock-fast-l
|
|||
|
||||
## Thanks
|
||||
|
||||
I'd like to thank everyone who helped create, test and troubleshoot this service. Special thanks to [@hnyman](https://github.com/hnyman) for general package/luci guidance, [@dibdot](https://github.com/dibdot) for general guidance and block-list optimization code, [@ckuethe](https://github.com/ckuethe) for the curl support, non-ASCII filtering and compressed cache code, [@EricLuehrsen](https://github.com/EricLuehrsen) for the Unbound support information and [@phasecat](https://forum.openwrt.org/u/phasecat/summary) for submitting bugs and testing.
|
||||
I'd like to thank everyone who helped create, test and troubleshoot this service. Special thanks to [@hnyman](https://github.com/hnyman) for general package/luci guidance, [@dibdot](https://github.com/dibdot) for general guidance and block-list optimization code, [@ckuethe](https://github.com/ckuethe) for the curl support, non-ASCII filtering and compressed cache code, [@EricLuehrsen](https://github.com/EricLuehrsen) for the Unbound support information, [@mushoz]( https://github.com/mushoz) for performance testing and [@phasecat](https://forum.openwrt.org/u/phasecat/summary) for submitting various bugs and testing.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
config simple-adblock 'config'
|
||||
option enabled '0'
|
||||
option dns 'dnsmasq.servers'
|
||||
option dns_instance '0'
|
||||
option verbosity '2'
|
||||
option force_dns '1'
|
||||
option led 'none'
|
||||
|
@ -9,7 +10,6 @@ config simple-adblock 'config'
|
|||
option curl_retry '3'
|
||||
option parallel_downloads '1'
|
||||
option debug '0'
|
||||
option allow_non_ascii '0'
|
||||
option compressed_cache '0'
|
||||
list whitelist_domain 'raw.githubusercontent.com'
|
||||
# list blacklist_hosts_url 'http://support.it-mate.co.uk/downloads/hosts.txt'
|
||||
|
|
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue