Настройка DNS с AdBlock с помощью dnsmasq для экономии пакетов на VPN WireGuard

7 min

language: ja bn en es hi pt ru zh-cn zh-tw

Здравствуйте, я бездарь.

У меня сейчас линия 1.5 Мбит/с, и когда есть реклама, загрузка начинается сразу, и генерируются лишние пакеты, поэтому я хочу это прекратить.
Хотя 1.5 Мбит/с и безлимитный, кажется, есть ограничение в 10 ГБ за 3 дня, и когда скорость упала до 200 кбит/с, это был ад, поэтому, извините, я настрою DNS, который будет запрашиваться через VPN, в своей собственной среде для блокировки рекламы.

Установка dnsmasq

Мой сервер WireGuard работает на FreeBSD, поэтому я использую 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

В качестве пути к файлу конфигурации для применения, добавьте следующее в /usr/local/etc/dnsmasq.conf.

conf-dir=/usr/local/etc/dnsmasq.d

Создание папки

mkdir /usr/local/etc/dnsmasq.d
cd /usr/local/etc/dnsmasq.d

Теперь импортируем список для adblock.

curl -o /usr/local/etc/dnsmasq.d/adblock.conf https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts

В вышеуказанном виде dnsmasq не сможет его прочитать, поэтому отформатируем его.

cat adblock.conf | awk '/^0.0.0.0/ {print "address=/"$2"/0.0.0.0"}' > tmp
rm adblock.conf 
mv tmp adblock.conf

Проверка файла конфигурации

Минимальная конфигурация выглядит так:

# 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

Запуск

Теперь запустим его.

# service dnsmasq start
Starting dnsmasq.

На стороне клиента WireGuard

Установите DNS-сервер на стороне клиента как IP-адрес прослушивания dnsmasq. В данном случае это будет 10.0.0.1.

Тестирование

Для доменов, указанных в adblock.conf, в данном случае, поскольку клиент — это смартфон, при подключении со смартфона можно подтвердить, что доступ к ним успешно заблокирован.

Таким образом, добавляя домены, которые распространяют рекламу, по мере необходимости, стало возможным их блокировать.

Указание поддоменов в dnsmasq

Как показано ниже, добавив . перед доменом, можно указать домен, включая его поддомены.

address=/.test.com/0.0.0.0

На моей линии 1.5 Мбит/с для смартфона, просто показ рекламы довольно критичен, так что, думаю, хорошо, что я это внедрил?
До новых встреч. Всего наилучшего.

Related Posts