Configurei um DNS com AdBlock usando dnsmasq para economizar pacotes na VPN do WireGuard
Olá, sou um inútil.
Minha conexão é de 1.5Mbps, mas quando há anúncios, o carregamento começa de repente e pacotes desnecessários são gerados, então quero parar com isso.
Embora seja 1.5Mbps ilimitado, parece haver um limite de 10GB em 3 dias, e quando a comunicação caiu para 200kbps, foi um inferno, então peço desculpas, mas vou configurar um DNS para consultas na minha própria rede via VPN para bloquear anúncios.
Instalar dnsmasq
Meu servidor WireGuard está em um ambiente FreeBSD, então usarei pkg.
$ pkg search dnsmasq
dnsmasq-2.90_2,1 Lightweight DNS forwarder, DHCP, and TFTP server
$ pkg install dnsmasq
Updating FreeBSD repository catalogue...
FreeBSD repository is up to date.
All repositories are up to date.
The following 7 package(s) will be affected (of 0 checked):
New packages to be INSTALLED:
dnsmasq: 2.90_4,1
gettext-runtime: 0.23
gmp: 6.3.0
indexinfo: 0.3.1
libidn2: 2.3.7
libunistring: 1.2
nettle: 3.10.1
Number of packages to be installed: 7
The process will require 15 MiB more space.
3 MiB to be downloaded.
Proceed with this action? [y/N]: y
[1/7] Fetching indexinfo-0.3.1.pkg: 100% 6 KiB 5.9kB/s 00:01
[2/7] Fetching libidn2-2.3.7.pkg: 100% 155 KiB 158.7kB/s 00:01
[3/7] Fetching dnsmasq-2.90_4,1.pkg: 100% 390 KiB 398.9kB/s 00:01
[4/7] Fetching nettle-3.10.1.pkg: 100% 2 MiB 1.6MB/s 00:01
[5/7] Fetching libunistring-1.2.pkg: 100% 683 KiB 699.4kB/s 00:01
[6/7] Fetching gmp-6.3.0.pkg: 100% 498 KiB 510.4kB/s 00:01
[7/7] Fetching gettext-runtime-0.23.pkg: 100% 235 KiB 241.2kB/s 00:01
Checking integrity... done (0 conflicting)
[1/7] Installing indexinfo-0.3.1...
[1/7] Extracting indexinfo-0.3.1: 100%
[2/7] Installing libunistring-1.2...
[2/7] Extracting libunistring-1.2: 100%
[3/7] Installing gmp-6.3.0...
[3/7] Extracting gmp-6.3.0: 100%
[4/7] Installing libidn2-2.3.7...
[4/7] Extracting libidn2-2.3.7: 100%
[5/7] Installing nettle-3.10.1...
[5/7] Extracting nettle-3.10.1: 100%
[6/7] Installing gettext-runtime-0.23...
[6/7] Extracting gettext-runtime-0.23: 100%
[7/7] Installing dnsmasq-2.90_4,1...
[7/7] Extracting dnsmasq-2.90_4,1: 100%
=====
Message from dnsmasq-2.90_4,1:
--
To enable dnsmasq, edit /usr/local/etc/dnsmasq.conf and
set dnsmasq_enable="YES" in /etc/rc.conf[.local]
Further options and actions are documented inside
/usr/local/etc/rc.d/dnsmasq
SECURITY RECOMMENDATION
~~~~~~~~~~~~~~~~~~~~~~~
It is recommended to enable the wpad-related options
at the end of the configuration file (you may need to
copy them from the example file to yours) to fix
CERT Vulnerability VU#598349.
$ echo 'dnsmasq_enable="YES" ' >> /etc/rc.local
Adicione o seguinte como caminho do arquivo de configuração a ser aplicado em /usr/local/etc/dnsmasq.conf.
conf-dir=/usr/local/etc/dnsmasq.d
Criar pasta
mkdir /usr/local/etc/dnsmasq.d
cd /usr/local/etc/dnsmasq.d
Agora, importe a lista para adblock.
curl -o /usr/local/etc/dnsmasq.d/adblock.conf https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts
Como o dnsmasq não consegue ler o formato acima, vou formatá-lo.
cat adblock.conf | awk '/^0.0.0.0/ {print "address=/"$2"/0.0.0.0"}' > tmp
rm adblock.conf
mv tmp adblock.conf
Verificar arquivo de configuração
Com o mínimo, ficou assim.
# cat dnsmasq.conf | grep -v '^#' | grep [A-z]
no-resolv
server=1.1.1.1
interface=wg0
listen-address=10.0.0.1
log-queries
conf-dir=/usr/local/etc/dnsmasq.d
Iniciar
Isso o iniciará.
# service dnsmasq start
Starting dnsmasq.
Lado do cliente WireGuard
Defina o servidor DNS do lado do cliente como o ListenIP do dnsmasq. Portanto, neste caso, será 10.0.0.1.
Testar
Ao conectar com um smartphone (o cliente neste caso) aos domínios listados em adblock.conf, pode-se confirmar que o acesso é bloqueado com sucesso.
Com isso, é possível bloquear adicionando domínios que veiculam anúncios conforme necessário.
Especificar subdomínios no dnsmasq
Ao adicionar . antes do domínio, como mostrado abaixo, é possível especificar o domínio incluindo subdomínios.
address=/.test.com/0.0.0.0
Com a minha conexão de smartphone de 1.5Mbps, a veiculação de anúncios é bastante crítica, então acho que foi bom ter implementado isso, certo?
Até mais. Obrigado.