Как установить прокси-приложение dnscrypt с блокировщиком рекламы / вредоносных программ в операционной системе Linux с WireGuard или OpenVPN?
DNSCrypt – это протокол для аутентификации и шифрования трафика DNS между вашим устройством и рекурсивными серверами DNS, такими как Google, Cloudflare, серверами ISP/сторонних поставщиков или вашего собственного сервера DoH на основе Nginx + Bind9.
Dnscrypt-proxy – это бесплатное приложение с открытым исходным кодом, поддерживающее такие протоколы, как DNSCrypt v2 и DNS-over-HTTPS (DoH).
Он также предотвращает спуфинг DNS.
Он использует криптографические подписи для проверки того, что ответы исходят от выбранного резолвера DNS и не были подделаны.
https://dnscrypt.info/public-servers/
Как установить dnscrypt-proxy
Установка прокси dnscrypt на Linux
Выполните команду в соответствии с вашим дистрибутивом Linux от имени пользователя root:
Debian/Ubuntu пользователи используйте apt/apt-get ##
$ sudo apt install dnscrypt-proxy
## Alpine Linux пользователи используйте apk##
$ sudo apk add dnscrypt-proxy
## CentOS / RHEL пользователи:
## Добавьте EPEL репозиторий на CentOS 8 или RHEL 8
## используйте yum ##
$ sudo yum install dnscrypt-proxy
## Arch Linux используйте pacman ##
$ sudo pacman -S dnscrypt-proxy
## OpenSUSE/SUSE Linux пользователи используйте zypper ##
$ sudo zypper in dnscrypt-proxy
## Fedora пользователи используйте dnf ##
$ sudo dnf install dnscrypt-proxy
Настройка прокси dnscrypt
Отредактируйте dnscrypt-proxy.toml в каталоге /etc/dnscrypt-proxy/.
Например:
$ ls -l /etc/dnscrypt-proxy/
$ sudo vim /etc/dnscrypt-proxy/dnscrypt-proxy.toml
server_names = [ 'google' 'cloudflare']
server_names = [ 'cloudflare']
listen_addresses = ['127.0.0.1:53', '[::1]:53']
Для моего VPN 172.168.0.0/24:
listen_addresses = ['127.0.0.1:53', '172.168.0.1:53' ]
ipv6_servers = true
dnscrypt_servers = true
doh_servers = true
cache = true
require_dnssec = true
## ## example.com ## =example.com ## ads.* ## ads*.example.* ## ads*.example[0-9]*.com
blacklist_file = '/etc/dnscrypt-proxy/blacklist.txt'
Установка списка adblocker для прокси dnscrypt
Вот небольшой скрипт bash для загрузки и обновления списка.
#!/bin/bash DEST="/etc/dnscrypt-proxy/blacklist.txt" # # Blocks both adware + malware # See for other lists https://github.com/StevenBlack/hosts SRC="https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" TMP_B_FILE="$(mktemp)" TMP_B_FILE_SORTED="$(mktemp)" wget --timeout=10 --tries=5 -qO- "${SRC}" | grep -Ev "(localhost)" | grep -Ev "#" | sed -E "s/(0.0.0.0 |127.0.0.1 |255.255.255.255 )//" >> "${TMP_B_FILE}" awk '/^[^#]/ { print $1 }' "${TMP_B_FILE}" | sort -u > "${TMP_B_FILE_SORTED}" cp -f "${TMP_B_FILE_SORTED}" "$DEST" rm -f "${TMP_B_FILE}" "${TMP_B_FILE_SORTED}"
# ./update-adblocker.sh
# more /etc/dnscrypt-proxy/blacklist.txt
@daily /path/to/update-adblocker.sh
Как включить прокси-службу dnscrypt
Используйте команду systemctl, чтобы включить службу dnscrypt-proxy на Linux:
$ sudo systemctl enable dnscrypt-proxy
$ sudo systemctl start dnscrypt-proxy
$ sudo systemctl status dnscrypt-proxy
● dnscrypt-proxy.service - DNSCrypt-proxy client Loaded: loaded (/usr/lib/systemd/system/dnscrypt-proxy.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2020-10-10 05:44:29 EDT; 4s ago Docs: https://github.com/jedisct1/dnscrypt-proxy/wiki Main PID: 5108 (dnscrypt-proxy) Tasks: 8 (limit: 11328) Memory: 13.8M CGroup: /system.slice/dnscrypt-proxy.service └─5108 /usr/bin/dnscrypt-proxy --config /etc/dnscrypt-proxy/dnscrypt-proxy.toml Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: Wiring systemd TCP socket #1, dnscrypt-proxy.socket, [::1]:53 Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: Wiring systemd UDP socket #2, dnscrypt-proxy.socket, 127.0.0.1:53 Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: Wiring systemd UDP socket #3, dnscrypt-proxy.socket, [::1]:53 Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: Source [public-resolvers] loaded Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: /etc/dnscrypt-proxy/relays.md: open sf-ux5n6prgb5kk4yzf.tmp: read-only file system Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: Source [relays] loaded Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: Firefox workaround initialized Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: [cloudflare] OK (DoH) - rtt: 18ms Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: Server with the lowest initial latency: cloudflare (rtt: 18ms) Oct 10 05:44:29 centos-8-cloud.sweet.home dnscrypt-proxy[5108]: dnscrypt-proxy is ready - live servers: 1
$ sudo rc-update add dnscrypt-proxy
$ sudo rc-service dnscrypt-proxy