Jump to content
ankar84

Защищаем DNS запросы с помощью dnscrypt-proxy2. Бонусом блокировка рекламы.

Recommended Posts

3 часа назад, Вежливый Снайпер сказал:

Подскажите пожалуйста, что за странный трафик в логе:

[2018-10-16 23:53:20] 191.96.249.112 aids.gov ANY FORWARD 

Ни какого отношения к служебному трафику не имеет. Может используемые вами WEB адреса - подозрение.

https://a.pr-cy.ru/aids.gov/ пересылка на https://www.hiv.gov/

Edited by vasek00

Share this post


Link to post
Share on other sites

Замучался с dnscrypt-proxy2. Конфиг такой:

Скрытый текст

##############################################
#                                            #
#        dnscrypt-proxy configuration        #
#                                            #
##############################################

## This is an example configuration file.
## You should adjust it to your needs, and save it as "dnscrypt-proxy.toml"
##
## Online documentation is available here: https://dnscrypt.info/doc


##################################
#         Global settings        #
##################################

## List of servers to use
##
## Servers from the "public-resolvers" source (see down below) can
## be viewed here: https://dnscrypt.info/public-servers
##
## If this line is commented, all registered servers matching the require_* filters
## will be used.
##
## The proxy will automatically pick the fastest, working servers from the list.
## Remove the leading # first to enable this; lines starting with # are ignored.

# server_names = ['scaleway-fr', 'google', 'yandex', 'cloudflare']
# server_names = ['doh-ibksturm', 'fvz-anyone', 'fvz-anytwo', 'ibksturm', 'opennic-ethservices', 'opennic-famicoman', 'opennic-tumabox', 'opennic-luggs', 'opennic-luggs2', 'opennic-onic', 'publicarray-au', 'publicarray-au2', 'publicarray-au-doh']
## List of local addresses and ports to listen to. Can be IPv4 and/or IPv6.
## Note: When using systemd socket activation, choose an empty set (i.e. [] ).

#listen_addresses = ['192.168.1.1:53', '[fe80::52ff:20ff:fe00:1f2e%br0]:53']
listen_addresses = ['127.0.0.1:65053']
#listen_addresses = ['192.168.0.1:65053']

## Maximum number of simultaneous client connections to accept

max_clients = 250

## Switch to a non-privileged system user after listening sockets have been created.
## Two processes will be running.
## The first one will keep root privileges, but is only a supervisor, that does nothing
## except create the sockets, manage the service, and restart it if it crashes.
## The second process is the service itself, and that one will always run as a different
## user.
## Note (1): this feature is currently unsupported on Windows.
## Note (2): this feature is not compatible with systemd socket activation.

user_name = 'nobody'


## Require servers (from static + remote sources) to satisfy specific properties

# Use servers reachable over IPv4
ipv4_servers = true

# Use servers reachable over IPv6 -- Do not enable if you don't have IPv6 connectivity
ipv6_servers = false

# Use servers implementing the DNSCrypt protocol
dnscrypt_servers = true

# Use servers implementing the DNS-over-HTTPS protocol
doh_servers = true

## Require servers defined by remote sources to satisfy specific properties

# Server must support DNS security extensions (DNSSEC)
require_dnssec = false

# Server must not log user queries (declarative)
require_nolog = false

# Server must not enforce its own blacklist (for parental control, ads blocking...)
require_nofilter = false


## Always use TCP to connect to upstream servers.
## This can be can be useful if you need to route everything through Tor.
## Otherwise, leave this to `false`, as it doesn't improve security
## (dnscrypt-proxy will always encrypt everything even using UDP), and can
## only increase latency.

force_tcp = false


## HTTP / SOCKS proxy
## Uncomment the following line to route all TCP connections to a local Tor node
## Tor doesn't support UDP, so set `force_tcp` to `true` as well.

# proxy = "socks5://127.0.0.1:9050"

## How long a DNS query will wait for a response, in milliseconds

timeout = 2500

## Keepalive for HTTP (HTTPS, HTTP/2) queries, in seconds

keepalive = 30


## Load-balancing strategy: 'p2' (default), 'ph', 'fastest' or 'random'

lb_strategy = 'p2'


## Log level (0-6, default: 2 - 0 is very verbose, 6 only contains fatal errors)

# log_level = 2
log_level = 0

## log file for the application

# log_file = '/opt/var/log/dnscrypt-proxy-v2.log'

## Use the system logger (syslog on Unix, Event Log on Windows)

use_syslog = true

## Delay, in minutes, after which certificates are reloaded

cert_refresh_delay = 240


## DNSCrypt: Create a new, unique key for every single DNS query
## This may improve privacy but can also have a significant impact on CPU usage
## Only enable if you don't have a lot of network load

# dnscrypt_ephemeral_keys = false


## DoH: Disable TLS session tickets - increases privacy but also latency

# tls_disable_session_tickets = false


## DoH: Use a specific cipher suite instead of the server preference
## 49199 = TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
## 49195 = TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
## 52392 = TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305
## 52393 = TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305
##
## On non-Intel CPUs such as MIPS routers and ARM systems (Android, Raspberry Pi...),
## the following suite improves performance.
## This may also help on Intel CPUs running 32-bit operating systems.
##
## Keep tls_cipher_suite empty if you have issues fetching sources or
## connecting to some DoH servers. Google and Cloudflare are fine with it.

tls_cipher_suite = [52392, 49199]


## Fallback resolver
## This is a normal, non-encrypted DNS resolver, that will be only used
## for one-shot queries when retrieving the initial resolvers list, and
## only if the system DNS configuration doesn't work.
## No user application queries will ever be leaked through this resolver,
## and it will not be used after IP addresses of resolvers URLs have been found.
## It will never be used if lists have already been cached, and if stamps
## don't include host names without IP addresses.
## It will not be used if the configured system DNS works.
## A resolver supporting DNSSEC is recommended. This may become mandatory.
##
## People in China may need to use 114.114.114.114:53 here.
## Other popular options include 8.8.8.8 and 1.1.1.1.

fallback_resolver = '9.9.9.9:53'


## Never let dnscrypt-proxy try to use the system DNS settings;
## unconditionally use the fallback resolver.

ignore_system_dns = true


## Maximum time (in seconds) to wait for network connectivity before
## initializing the proxy.
## Useful if the proxy is automatically started at boot, and network
## connectivity is not guaranteed to be immediately available.
## Use 0 to disable.

netprobe_timeout = 30


## Offline mode - Do not use any remote encrypted servers.
## The proxy will remain fully functional to respond to queries that
## plugins can handle directly (forwarding, cloaking, ...)

# offline_mode = false


## Automatic log files rotation

# Maximum log files size in MB
log_files_max_size = 10

# How long to keep backup files, in days
log_files_max_age = 7

# Maximum log files backups to keep (or 0 to keep all backups)
log_files_max_backups = 1

#########################
#        Filters        #
#########################

## Immediately respond to IPv6-related queries with an empty response
## This makes things faster when there is no IPv6 connectivity, but can
## also cause reliability issues with some stub resolvers.
## Do not enable if you added a validating resolver such as dnsmasq in front
## of the proxy.

block_ipv6 = false

##################################################################################
#        Route queries for specific domains to a dedicated set of servers        #
##################################################################################

## Example map entries (one entry per line):
## example.com 9.9.9.9
## example.net 9.9.9.9,8.8.8.8,1.1.1.1

#forwarding_rules = '/opt/etc/dnscrypt/forwarding-rules.txt'


###############################
#        Cloaking rules       #
###############################

## Cloaking returns a predefined address for a specific name.
## In addition to acting as a HOSTS file, it can also return the IP address
## of a different name. It will also do CNAME flattening.
##
## Example map entries (one entry per line)
## example.com     10.1.1.1
## www.google.com  forcesafesearch.google.com

# cloaking_rules = '/opt/etc/dnscrypt/cloaking-rules.txt'


###########################
#        DNS cache        #
###########################

## Enable a DNS cache to reduce latency and outgoing traffic

cache = true

## Cache size

#cache_size = 512
cache_size = 2048

## Minimum TTL for cached entries

cache_min_ttl = 600


## Maximum TTL for cached entries

cache_max_ttl = 86400


## Minimum TTL for negatively cached entries

cache_neg_min_ttl = 60


## Maximum TTL for negatively cached entries

cache_neg_max_ttl = 600


###############################
#        Query logging        #
###############################

## Log client queries to a file

[query_log]

  ## Path to the query log file (absolute, or relative to the same directory as the executable file)

  # file = 'query.log'


  ## Query log format (currently supported: tsv and ltsv)

  format = 'tsv'


  ## Do not log these query types, to reduce verbosity. Keep empty to log everything.

  # ignored_qtypes = ['DNSKEY', 'NS']

############################################
#        Suspicious queries logging        #
############################################

## Log queries for nonexistent zones
## These queries can reveal the presence of malware, broken/obsolete applications,
## and devices signaling their presence to 3rd parties.

[nx_log]

  ## Path to the query log file (absolute, or relative to the same directory as the executable file)

  # file = 'nx.log'


  ## Query log format (currently supported: tsv and ltsv)

  format = 'tsv'

######################################################
#        Pattern-based blocking (blacklists)        #
######################################################

## Blacklists are made of one pattern per line. Example of valid patterns:
##
##   example.com
##   =example.com
##   *sex*
##   ads.*
##   ads*.example.*
##   ads*.example[0-9]*.com
##
## Example blacklist files can be found at https://download.dnscrypt.info/blacklists/
## A script to build blacklists from public feeds can be found in the
## `utils/generate-domains-blacklists` directory of the dnscrypt-proxy source code.

[blacklist]

  ## Path to the file of blocking rules (absolute, or relative to the same directory as the executable file)

  # blacklist_file = 'blacklist.txt'
  # blacklist_file = '/opt/etc/dnscrypt/blacklist-domains.txt'

  ## Optional path to a file logging blocked queries

  # log_file = 'blocked.log'


  ## Optional log format: tsv or ltsv (default: tsv)

  # log_format = 'tsv'

###########################################################
#        Pattern-based IP blocking (IP blacklists)        #
###########################################################

## IP blacklists are made of one pattern per line. Example of valid patterns:
##
##   127.*
##   fe80:abcd:*
##   192.168.1.4

[ip_blacklist]

  ## Path to the file of blocking rules (absolute, or relative to the same directory as the executable file)

  # blacklist_file = 'ip-blacklist.txt'


  ## Optional path to a file logging blocked queries

  # log_file = 'ip-blocked.log'


  ## Optional log format: tsv or ltsv (default: tsv)

  # log_format = 'tsv'

######################################################
#   Pattern-based whitelisting (blacklists bypass)   #
######################################################

## Whitelists support the same patterns as blacklists
## If a name matches a whitelist entry, the corresponding session
## will bypass names and IP filters.
##
## Time-based rules are also supported to make some websites only accessible at specific times of the day.

[whitelist]

  ## Path to the file of whitelisting rules (absolute, or relative to the same directory as the executable file)

  # whitelist_file = 'whitelist.txt'
  # whitelist_file = '/opt/etc/dnscrypt/domains-whitelist.txt'

  ## Optional path to a file logging whitelisted queries

  # log_file = 'whitelisted.log'


  ## Optional log format: tsv or ltsv (default: tsv)

  # log_format = 'tsv'

##########################################
#        Time access restrictions        #
##########################################

## One or more weekly schedules can be defined here.
## Patterns in the name-based blocklist can optionally be followed with @schedule_name
## to apply the pattern 'schedule_name' only when it matches a time range of that schedule.
##
## For example, the following rule in a blacklist file:
## *.youtube.* @time-to-sleep
## would block access to YouTube only during the days, and period of the days
## define by the 'time-to-sleep' schedule.
##
## {after='21:00', before= '7:00'} matches 0:00-7:00 and 21:00-0:00
## {after= '9:00', before='18:00'} matches 9:00-18:00

[schedules]

  # [schedules.'time-to-sleep']
  # mon = [{after='21:00', before='7:00'}]
  # tue = [{after='21:00', before='7:00'}]
  # wed = [{after='21:00', before='7:00'}]
  # thu = [{after='21:00', before='7:00'}]
  # fri = [{after='23:00', before='7:00'}]
  # sat = [{after='23:00', before='7:00'}]
  # sun = [{after='21:00', before='7:00'}]

  # [schedules.'work']
  # mon = [{after='9:00', before='18:00'}]
  # tue = [{after='9:00', before='18:00'}]
  # wed = [{after='9:00', before='18:00'}]
  # thu = [{after='9:00', before='18:00'}]
  # fri = [{after='9:00', before='17:00'}]

#########################
#        Servers        #
#########################

## Remote lists of available servers
## Multiple sources can be used simultaneously, but every source
## requires a dedicated cache file.
##
## Refer to the documentation for URLs of public sources.
##
## A prefix can be prepended to server names in order to
## avoid collisions if different sources share the same for
## different servers. In that case, names listed in `server_names`
## must include the prefixes.
##
## If the `urls` property is missing, cache files and valid signatures
## must be already present; This doesn't prevent these cache files from
## expiring after `refresh_delay` hours.

[sources]

  ## An example of a remote source from https://github.com/DNSCrypt/dnscrypt-resolvers

  #[sources.'public-resolvers']
  #urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/public-resolvers.md', 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md']
  #cache_file = '/opt/etc/dnscrypt/public-resolvers.md'
  #minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  #refresh_delay = 72
  #prefix = ''

  [sources.'opennic']
  urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/opennic.md', 'https://download.dnscrypt.info/resolvers-list/v2/opennic.md']
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  cache_file = '/opt/etc/dnscrypt/opennic.md'
  refresh_delay = 72
  prefix = ''

  #[sources.'quad9-resolvers']
  #urls = ['https://www.quad9.net/quad9-resolvers.md']
  #minisign_key = 'RWQBphd2+f6eiAqBsvDZEBXBGHQBJfeG6G+wJPPKxCZMoEQYpmoysKUN'
  #cache_file = '/opt/etc/dnscrypt/quad9-resolvers.md'
  #refresh_delay = 72
  #prefix = ''

  ## Another example source, with resolvers censoring some websites not appropriate for children
  ## This is a subset of the `public-resolvers` list, so enabling both is useless

  #  [sources.'parental-control']
  #  urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/parental-control.md', 'https://download.dnscrypt.info/resolvers-list/v2/parental-control.md']
  #  cache_file = 'parental-control.md'
  #  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'

## Optional, local, static list of additional servers
## Mostly useful for testing your own servers.

[static]

  # [static.'google']
  # stamp = 'sdns://AgUAAAAAAAAAAAAOZG5zLmdvb2dsZS5jb20NL2V4cGVyaW1lbnRhbA'
 

В логе ошибок нет:

Скрытый текст
Окт 17 21:58:55
 
dnscrypt-proxy[3701]
Failed to kill child process.
Окт 17 21:58:55
 
root
Started dnscrypt-proxy from .
Окт 17 21:58:56
 
dnscrypt-proxy[4822]
Source [/opt/etc/dnscrypt/opennic.md] loaded
Окт 17 21:58:56
 
dnscrypt-proxy[4822]
dnscrypt-proxy 2.0.16
Окт 17 21:58:56
 
dnscrypt-proxy[4822]
Dropping privileges

статистика портов:

/opt/etc # netstat -nlpa | grep dns
tcp        0      0 127.0.0.1:65053         0.0.0.0:*               LISTEN      4822/dnscrypt-proxy
udp      896      0 127.0.0.1:65053        0.0.0.0:*                           4822/dnscrypt-proxy
unix  2      [ ]         DGRAM                      8034 4822/dnscrypt-proxy

Но запрос nslookup ya.ru 127.0.0.1 65053 ничего не дает:

/opt/etc # nslookup ya.ru 127.0.0.1:65053
Server:    127.0.0.1
Address 1: 127.0.0.1 localhost

nslookup: can't resolve 'ya.ru': Temporary failure in name resolution
 

Куда копать? Может кто подсказать, что я делаю не так?

Edited by Linaro

Share this post


Link to post
Share on other sites
2 часа назад, Linaro сказал:

Куда копать?

listen_addresses = ['0.0.0.0:53']

Попробуй так настроить.  

  • Thanks 1

Share this post


Link to post
Share on other sites

Здравствуйте! Касательно только dnsmasq+dnscrypt. Хочу спросить по поводу зоны lib, она работает, только если в качестве dns серверов указан единственный источник [sources.'opennic']. Как мне кажется, это не совсем правильно с точки зрения надёжности, поэтому [sources.'public-resolvers'] тоже считаю нужно подключить (и любые другие не цензурируемые). Но в таком виде домены lib не разрешаются, только когда [sources.'opennic'] единственный источник lib разрешается, всё остальное работает. Приходится по старому в dnsmasq добавлять server=/.lib/5.132.191.104

Как сообщить dnscrypt-proxy что lib нужно искать в [sources.'opennic']?

Извиняюсь, может я вопрос задал коряво.

Share this post


Link to post
Share on other sites
В 06.11.2018 в 21:27, vlads сказал:

Как сообщить dnscrypt-proxy что lib нужно искать в [sources.'opennic']?

В общем, именно так реализовать вряд ли получится. Так как зону lib умеют разрешать ТОЛЬКО серверы проекта OpenNIC, то только у них и нужно спрашивать об этой зоне. Если использовать общий список серверов, который так же включает в себя серверы opennic, то разрешить узлы зоны lib скорее всего не получится, так как есть гораздо более быстрые серверы, которые и будут отвечать на ваши запросы, а они в свою очередь ничего не знают про зону lib. Поэтому решением в лоб будет использовать только серверы opennic (я именно так и делаю).

Так же можно решить это проблему средствами dnsmasq (как вы и указали) или же средствами самого dnscrypt-proxy (я имею ввиду forwarding). Но в обоих случаях, насколько я понимаю, будут выполняться обычные dns запросы, а не dnscrypt шифрованные запросы.

Share this post


Link to post
Share on other sites

Вообще, после того как я тут спросил, меня посетила идея что можно запустить ещё один процесс dnscprypt только с конфигом opennic, который будет слушать другой порт, а уже зону lib в dnsmasq описать с этим новым портом.

Share this post


Link to post
Share on other sites

Добрый.

Подскажите, что может означать вот такая запись в журнале?

Цитата

Opkg::Manager: /opt/etc/ndm/netfilter.d/10-ClientDNS-Redirect.sh: Can't find library for target `CONNNDMMARK'.

Вроде никаких специальных библиотек не требовалось раньше.

Share this post


Link to post
Share on other sites
24 минуты назад, rotor сказал:
Цитата

Opkg::Manager: /opt/etc/ndm/netfilter.d/10-ClientDNS-Redirect.sh: Can't find library for target `CONNNDMMARK'.

 

На моем девайсе аналогичное сообщение появилось. 

Share this post


Link to post
Share on other sites

@rotor, @vlad у себя в логах такой записи не вижу. Давайте "сверять время", а точнее окружение.

У меня сейчас 2.13.C.0.0-3 на Giga (KN-1010), Entware обновлял последний раз где-то с месяц или чуть больше назад.

 # dnscrypt-proxy --version
2.0.16
 #  iptables --version
iptables v1.4.21

 

Share this post


Link to post
Share on other sites

ankar84

2.14.B.0.0-1 giga II

Цитата

~ # dnscrypt-proxy --version
2.0.16
~ # iptables --version
iptables v1.4.21

 

Share this post


Link to post
Share on other sites

Попользовался две недели этим решением, практически всё устраивает, кроме того, что серверы opennic иногда долго отвечают. В настройках менял стратегию dnscrypt-proxy на fastest вместо p2, но особой разницы не заметил, т.к. два самых быстрых сервера с временем отклика в районе 50ms не всегда отвечают, и вместо них начинают отзываться более дальние с временем более 300ms.

Если заморочиться на "защищенности" и включить только серверы с поддержкой DNSSEC, то их количество сокращается, и в тесте dnsleaktest у меня отзывался всегда только один, что не очень хорошо.

Попробовал совместно с текущим решением использовать найденное здесь (спасибо Михаилу Лукьянову за помощь в реализации):

https://forum.keenetic.net/topic/3078-обход-блокировок-на-роутере/?do=findComment&comment=60919

Вот такой вариант понравился больше, т.к. в нем нет привязки только к одним dns серверам, и можно использовать любые, без потери функционала.

  • Upvote 1

Share this post


Link to post
Share on other sites
33 минуты назад, Albram сказал:

Попользовался две недели этим решением, практически всё устраивает, кроме того, что серверы opennic иногда долго отвечают. В настройках менял стратегию dnscrypt-proxy на fastest вместо p2, но особой разницы не заметил, т.к. два самых быстрых сервера с временем отклика в районе 50ms не всегда отвечают, и вместо них начинают отзываться более дальние с временем более 300ms.

Если заморочиться на "защищенности" и включить только серверы с поддержкой DNSSEC, то их количество сокращается, и в тесте dnsleaktest у меня отзывался всегда только один, что не очень хорошо.

Попробовал совместно с текущим решением использовать найденное здесь (спасибо Михаилу Лукьянову за помощь в реализации):

https://forum.keenetic.net/topic/3078-обход-блокировок-на-роутере/?do=findComment&comment=60919

Вот такой вариант понравился больше, т.к. в нем нет привязки только к одним dns серверам, и можно использовать любые, без потери функционала.

Как бы список всех серверов можно найти в https://download.dnscrypt.info/resolvers-list/json/public-resolvers.json  для dnscrypt-proxy по умолчанию в v2 возможен список из 4 серверов. Потратить день перебора или создать список IP адресов и ping на них из выбранного и попробовать в dnscrypt-proxy по 4 сервера, далее взять на пробу несколько  DNS-over-HTTPS => что-то не вериться что в итоге вы не найдете приемлемые для вас сервера. Так же не помешает параметр "cert_refresh_delay = 60" через 1час будет refresh.

Скрытый текст

[2018-11-12 16:02:27] [NOTICE] Server with the lowest initial latency: yandex (rtt: 21ms)
[2018-11-12 17:02:30] [NOTICE] Server with the lowest initial latency: yandex (rtt: 18ms)
[2018-11-12 18:02:34] [NOTICE] Server with the lowest initial latency: adguard-dns (rtt: 15ms)
[2018-11-12 19:02:38] [NOTICE] [yandex] TIMEOUT
[2018-11-12 19:02:39] [NOTICE] Server with the lowest initial latency: adguard-dns (rtt: 15ms)
[2018-11-12 20:02:42] [NOTICE] Server with the lowest initial latency: adguard-dns (rtt: 15ms)

 

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

о какой привязке идет речь в данном случае и особенно интересует без потери функционала ?

Share this post


Link to post
Share on other sites
23 минуты назад, vasek00 сказал:

о какой привязке идет речь в данном случае и особенно интересует без потери функционала ?

Речь, в данном случае, о возможности резолвить зону .lib серверами opennic.

Приведённые выше вами сервера этого не умеют.

Share this post


Link to post
Share on other sites
1 минуту назад, Albram сказал:

Речь, в данном случае, о возможности резолвить зону .lib серверами opennic.

Приведённые выше вами сервера этого не умеют.

Для этого есть dnsmasq в связке с dnscrypt тут уже про это упоминали.

Share this post


Link to post
Share on other sites
Только что, vasek00 сказал:

Для этого есть dnsmasq в связке с dnscrypt тут уже про это упоминали.

Есть, но вариант, про который я написал, мне понравился больше, т.к. не все нужные сайты есть в .lib

Share this post


Link to post
Share on other sites
11 час назад, Albram сказал:

Есть, но вариант, про который я написал, мне понравился больше, т.к. не все нужные сайты есть в .lib

Можно узнать ваш вариант решения в данном случае вопроса

...два самых быстрых сервера с временем отклика в районе 50ms не всегда отвечают, и вместо них начинают отзываться более дальние с временем более 300ms....

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

Share this post


Link to post
Share on other sites
1 час назад, vasek00 сказал:

Можно узнать ваш вариант решения в данном случае вопроса

Конечно можно: используем в dnscrypt-proxy другие серверы, более быстрые, чем opennic (хоть те же яндексовские), а за доступ к нужным ресурсам отвечает указанное выше решение от Михаила, вместо доступа к их зеркалам в зоне .lib

Share this post


Link to post
Share on other sites
2 часа назад, Albram сказал:

Конечно можно: используем в dnscrypt-proxy другие серверы, более быстрые, чем opennic (хоть те же яндексовские), а за доступ к нужным ресурсам отвечает указанное выше решение от Михаила, вместо доступа к их зеркалам в зоне .lib 

Вопрос только КАК поточней  ????

Share this post


Link to post
Share on other sites
В ‎13‎.‎11‎.‎2018 в 13:09, vasek00 сказал:

Вопрос только КАК поточней  ????

Удалил ответ, т.к. он тут не по теме)

Edited by Albram

Share this post


Link to post
Share on other sites

Так как с недавних пор лежит зеркало rutor в зоне lib я начал искать способы простого обхода блокировки основного адреса в зоне info.

Обход блокировок в данной теме это слегка оффтоп, но о нем чуть ниже. Так как критичность разрешения зоны lib уменьшилась, я оставил возможность разрешения данной зоны через фичу forwarding в dnscrypt-proxy2.

В файле forwarding-rules.txt добавил нужные сайты в зоне lib и указал несколько серверов из России со страницы всех серверов проекта OpenNIC и начал использовать общий список [sources.'public-resolvers'] тем самым получил и максимальную скорость резолвинга всех адресов и возможность резолвинга адресов зоны lib.

Теперь про обход. Пробовал красить пакеты из определенного ipset и отправлять их в таблицу маршрутизации, где шлюзом указан интерфейс OpenVPN подключения по инструкции @Александр Рыжов вот отсюда. Но сайты не открывались, хоть traceroute правильно показывал, что вторым хопом раскрашенные пакеты уходили в туннель.

Сейчас рабочим решением оказалось просто по крону раз в час запускать скрипт, который берет построчно все адреса сайтов из заданного файла, с помощью nslookup разрешит их IP адреса, для которых с помощью route добавит статический маршрут через интерфейс ovpn_br0 в OpenVPN туннель. И данное решение у меня работает стабильно. Так же добавленные маршруты можно отследить на странице Маршрутизация в WebGui Кинетика. 

#!/bin/sh 

for i in `cat /opt/root/vpnsitelist.txt`; do
    #по каждой строке из файла с ресурсами (FQDN), на которые нужно подключаться через VPN сервер
    for j in `nslookup $i | egrep -v 192.168.1.1 | awk '/Addr/ {print $3}'`; do
        #получаем только результаты резолвинга и их добавляем в качестве статического маршрута через интерфейс ovpn_br0
        #в данном случае, в качестве DNS сервера используется локальный адрес роутера - 192.168.1.1
        #по IPv6 адресам из резолвинка получаем сообщение вида "route: resolving IPv6 address"        
        route add -host $j dev ovpn_br0
    done
done

 

Edited by ankar84

Share this post


Link to post
Share on other sites
1 минуту назад, Albram сказал:

В файле конфигурации dnscrypt-proxy указываем желаемые для использования серверы (здесь об этом уже написано было, потому нет смысла повторяться).

Затем нужно определить каким методом провайдер блокирует доступ к ресурсам из списка РКН. Для этого придётся отключить все сделанные изменения при установке dnscrypt-proxy (отключить сетевые правила и фильтры, и вернуть использование dns серверов провайдера). После этого запускаем blockcheck на любой клиентской машине за роутером (можно и на роутере, но для этого на нем нужно установить python не ниже 3.4, а т.к. при установке dnscrypt ставился python версии 2.7, то я не стал разводить серпентарий из питонов на роутере).

После того как определён метод блокировки, выбираем какими именно правилами её обходить.

Всё это подробно расписано в теме, на которую я давал ссылку, по которой я и делал: https://forum.keenetic.net/topic/3078-обход-блокировок-на-роутере/?do=findComment&comment=60919

Значит не так понял вопрос который звучал про использование dnscrypt-proxy

Цитата

 

Попользовался две недели этим решением, практически всё устраивает, кроме того, что серверы opennic иногда долго отвечают. В настройках менял стратегию dnscrypt-proxy на fastest вместо p2, но особой разницы не заметил, т.к. два самых быстрых сервера с временем отклика в районе 50ms не всегда отвечают, и вместо них начинают отзываться более дальние с временем более 300ms. 

Если заморочиться на "защищенности" и включить только серверы с поддержкой DNSSEC, то их количество сокращается, и в тесте dnsleaktest у меня отзывался всегда только один, что не очень хорошо.

 

а все рассуждения свелись к обходу блокировке

Share this post


Link to post
Share on other sites
1 минуту назад, vasek00 сказал:

Значит не так понял вопрос который звучал про использование dnscrypt-proxy

а все рассуждения свелись к обходу блокировке

Видимо да, не так понял. Подумал, что вопрос про то, как использовать совместно эти два решения.

Share this post


Link to post
Share on other sites

Quad9 DNS

Скрытый текст

У вас есть выбор Google Public DNS, OpenDNS, FreeDNS и многие другие, в том числе новичок под названием Quad9 DNS. Но стоит ли переключиться на Quad9 DNS? Это более безопасно, чем альтернативы? Или это быстрее, чем у конкурентов? Давайте рассмотрим все, что вам нужно знать о Quad9.... Глобальный кибер-альянс (GCA), IBM и Packet Clearing House объединились для создания нового безопасного DNS. Система намерена блокировать подавляющее большинство вредоносных программ, вредоносных доменов, инфраструктуры бот-сетей и т.д. Он работает так же, как и другие альтернативные DNS-системы, но команда разработчиков считает, что он имеет преимущество перед некоторыми из его прямых конкурентов.

https://xakinfo.ru/2018/01/quad9-dns-vs-opendns/

https://www.quad9.net/tag/dnscrypt/

Для dnscrypt-proxy пример

Скрытый текст

##server_names = ['cloudflare', 'quad9-dnscrypt-ip4-filter-pri', 'adguard-dns', 'yandex']
server_names = ['quad9-dnscrypt-ip4-filter-pri', 'quad9-dnscrypt-ip4-filter-alt', 'quad9-dnscrypt-ip4-nofilter-pri', 'yandex']
...
# Use servers implementing the DNS-over-HTTPS protocol
doh_servers = true
...
[sources.'public-resolvers']
  urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/public-resolvers.md', 'https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md']
  cache_file = 'public-resolvers.md'
  minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3'
  refresh_delay = 72
  prefix = ''

## Quad9 over DNSCrypt - https://quad9.net/
[sources.quad9-resolvers]
  urls = ["https://www.quad9.net/quad9-resolvers.md"]
  minisign_key = "RWQBphd2+f6eiAqBsvDZEBXBGHQBJfeG6G+wJPPKxCZMoEQYpmoysKUN"
  cache_file = "quad9-resolvers.md"
  refresh_delay = 72
  prefix = "quad9-"
...
[static]
...


в итоге будет скачен файл quad9-resolvers.md со списком resolvers выбираете какой вам более удобен
....filter-pri - filter primary
....filter-alt - filter alternative
....nofilter-pri
....nofilter-alt
....
doh-ip4-filter-pri - DNS-over-HTTPS filter primary
doh-ip4-filter-alt


[2018-11-13 14:20:19] [NOTICE] Source [public-resolvers.md] loaded
[2018-11-13 14:20:19] [NOTICE] Source [quad9-resolvers.md] loaded
[2018-11-13 14:20:19] [NOTICE] dnscrypt-proxy 2.0.16
[2018-11-13 14:20:19] [NOTICE] Now listening to 127.0.0.2:65553 [UDP]
[2018-11-13 14:20:19] [NOTICE] Now listening to 127.0.0.2:65553 [TCP]
[2018-11-13 14:20:19] [NOTICE] [adguard-dns] OK (crypto v1) - rtt: 16ms
[2018-11-13 14:20:23] [NOTICE] [cloudflare] OK (DoH) - rtt: 46ms
[2018-11-13 14:20:24] [NOTICE] [quad9-dnscrypt-ip4-filter-pri] OK (crypto v1) - rtt: 68ms
[2018-11-13 14:20:24] [NOTICE] [yandex] OK (crypto v1) - rtt: 26ms
[2018-11-13 14:20:24] [NOTICE] Server with the lowest initial latency: adguard-dns (rtt: 16ms)
[2018-11-13 14:20:24] [NOTICE] dnscrypt-proxy is ready - live servers: 4

[2018-11-13 14:44:37] [NOTICE] Source [quad9-resolvers.md] loaded
[2018-11-13 14:44:41] [NOTICE] Source [public-resolvers.md] loaded
[2018-11-13 14:44:41] [NOTICE] dnscrypt-proxy 2.0.16
[2018-11-13 14:44:41] [NOTICE] Now listening to 127.0.0.2:65553 [UDP]
[2018-11-13 14:44:41] [NOTICE] Now listening to 127.0.0.2:65553 [TCP]
[2018-11-13 14:44:41] [NOTICE] [quad9-dnscrypt-ip4-filter-pri] OK (crypto v1) - rtt: 76ms
[2018-11-13 14:44:41] [NOTICE] [quad9-dnscrypt-ip4-filter-alt] OK (crypto v1) - rtt: 78ms
[2018-11-13 14:44:41] [NOTICE] [quad9-dnscrypt-ip4-nofilter-pri] OK (crypto v1) - rtt: 64ms
[2018-11-13 14:44:41] [NOTICE] [yandex] OK (crypto v1) - rtt: 17ms
[2018-11-13 14:44:41] [NOTICE] Server with the lowest initial latency: yandex (rtt: 17ms)
[2018-11-13 14:44:41] [NOTICE] dnscrypt-proxy is ready - live servers: 4

 

 

Share this post


Link to post
Share on other sites
В ‎13‎.‎11‎.‎2018 в 15:49, vasek00 сказал:

Для dnscrypt-proxy пример

Попробовал я эти серверы, но что-то не впечатлила скорость отклика, по сравнению с расположенными ближе.

Учитывая, что в настройках у меня стратегия fasters, то дело до них доходить будет редко.

Скрытый текст

server_names = ['quad9-dnscrypt-ip4-nofilter-pri', 'quad9-dnscrypt-ip4-nofilter-alt' , 'yandex', 'cpunks-ru']


Source [quad9-resolvers.md] loaded 
Source [public-resolvers.md] loaded 
[quad9-dnscrypt-ip4-nofilter-pri] OK (crypto v1) - rtt: 49ms 
[quad9-dnscrypt-ip4-nofilter-alt] OK (crypto v1) - rtt: 48ms 
[cpunks-ru] OK (crypto v1) - rtt: 18ms 
[yandex] OK (crypto v1) - rtt: 19ms 
Server with the lowest initial latency: cpunks-ru (rtt: 18ms) 
dnscrypt-proxy is ready - live servers: 4 

 

Share this post


Link to post
Share on other sites
27 минут назад, Albram сказал:

Попробовал я эти серверы, но что-то не впечатлила скорость отклика, по сравнению с расположенными ближе. 

quad9 как бы свежий решил показать его скорость ( у других может быть другая), так например у меня например якобы быстрый cloudflare дает 30-40ms, adguard-dns от 15-26ms, yandex от 17-33ms.

Но quad9 как бы еще и блокировщик.

Цитата

Система намерена блокировать подавляющее большинство вредоносных программ, вредоносных доменов, инфраструктуры бот-сетей и т.д. Он работает так же, как и другие альтернативные DNS-системы, но команда разработчиков считает, что он имеет преимущество перед некоторыми из его прямых

С вашей стороны он вообще 48ms, с моей он был 76ms.

Share this post


Link to post
Share on other sites
5 минут назад, vasek00 сказал:

quad9 как бы свежий решил показать его скорость ( у других может быть другая), так например у меня например якобы быстрый cloudflare дает 30-40ms, adguard-dns от 15-26ms, yandex от 17-33ms.

Но quad9 как бы еще и блокировщик.

С вашей стороны он вообще 48ms, с моей он был 76ms.

Да, про блокировщик прочитал сразу, но он мне как раз не нужен. У вас больше 70 на серверах с фильтром, без фильтра чуть быстрее, во всяком случае в приведённом логе.

Share this post


Link to post
Share on other sites

@vlad @rotor я сегодня обновился до 2.14 релиза и подтверждаю проблему со скриптом приземления всех DNS запросов на резолвер роутера:

Дек 3 22:46:51 ndm
Opkg::Manager: /opt/etc/ndm/netfilter.d/01-ClientDNS-Redirect.sh: Can't find library for target `CONNNDMMARK'.

Взываю на помощь @Александр Рыжов и @Le ecureuil

Каких-то библиотек не находит простой скрипт

#!/bin/sh
[ "$type" == "ip6tables" ] && exit 0
[ "$table" != "nat" ] && exit 0
[ -z "$(iptables-save | grep " --dport 53 -j DNAT --to-destination 192.168.1.1")" ] && iptables -t nat -I PREROUTING -p udp --dport 53 -j DNAT --to-destination 192.168.1.1:53
exit 0

 

  • Thanks 1
  • Upvote 2

Share this post


Link to post
Share on other sites

У меня воспроизводится ещё одна проблема, dns запросы пролетают мимо dnscrypt-proxy,в итоге сайт показывает заглушку провайдера. 

Share this post


Link to post
Share on other sites
В 17.11.2018 в 14:03, Albram сказал:

Да, про блокировщик прочитал сразу, но он мне как раз не нужен. У вас больше 70 на серверах с фильтром, без фильтра чуть быстрее, во всяком случае в приведённом логе. 

У меня схема другая, сервера по Dnscrypt

Скрытый текст

[2018-12-03 09:10:41] [NOTICE] [adguard-dns] OK (crypto v1) - rtt: 61ms
[2018-12-03 09:10:46] [NOTICE] [cpunks-ru] OK (crypto v1) - rtt: 27ms
[2018-12-03 09:10:46] [NOTICE] [yandex] OK (crypto v1) - rtt: 19ms
[2018-12-03 09:10:48] [NOTICE] Server with the lowest initial latency: yandex (rtt: 19ms)
[2018-12-03 09:10:48] [NOTICE] dnscrypt-proxy is ready - live servers: 3
[2018-12-03 10:10:50] [NOTICE] [cloudflare] OK (DoH) - rtt: 38ms
[2018-12-03 10:10:55] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 21ms)
[2018-12-03 11:10:57] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 17ms)
[2018-12-03 12:11:00] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 17ms)
[2018-12-03 13:11:02] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 17ms)
[2018-12-03 14:11:07] [NOTICE] [yandex] TIMEOUT
[2018-12-03 14:11:07] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 22ms)
[2018-12-03 15:11:09] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 21ms)
[2018-12-03 16:11:15] [NOTICE] Server with the lowest initial latency: yandex (rtt: 17ms)
[2018-12-03 17:11:19] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 28ms)
[2018-12-03 18:11:22] [NOTICE] Server with the lowest initial latency: yandex (rtt: 17ms)
[2018-12-03 19:11:25] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 22ms)
[2018-12-03 20:11:28] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 22ms)
[2018-12-03 21:11:30] [NOTICE] Server with the lowest initial latency: yandex (rtt: 26ms)
[2018-12-03 22:11:33] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 17ms)
[2018-12-03 23:11:35] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 22ms)
[2018-12-04 00:11:37] [NOTICE] Server with the lowest initial latency: yandex (rtt: 25ms)
[2018-12-04 01:11:40] [NOTICE] Server with the lowest initial latency: yandex (rtt: 21ms)
[2018-12-04 02:11:42] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 21ms)
[2018-12-04 03:11:45] [NOTICE] Server with the lowest initial latency: yandex (rtt: 22ms)
[2018-12-04 04:11:47] [NOTICE] Server with the lowest initial latency: yandex (rtt: 21ms)
[2018-12-04 05:11:50] [NOTICE] Server with the lowest initial latency: yandex (rtt: 20ms)
[2018-12-04 06:11:52] [NOTICE] Server with the lowest initial latency: yandex (rtt: 23ms)
[2018-12-04 07:11:55] [NOTICE] Server with the lowest initial latency: yandex (rtt: 22ms)
[2018-12-04 08:11:57] [NOTICE] Server with the lowest initial latency: yandex (rtt: 17ms)
[2018-12-04 09:11:59] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 22ms)
[2018-12-04 10:12:05] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 22ms)
[2018-12-04 11:12:08] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 22ms)
[2018-12-04 12:12:14] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 36ms)
[2018-12-04 13:12:17] [NOTICE] Server with the lowest initial latency: cpunks-ru (rtt: 27ms)

adguard-dns упал по скорости с 15-20 до рекордных 60

фильтрую только dnsmasq + на браузере (ПК/сартфоне/планшете)

Share this post


Link to post
Share on other sites
7 часов назад, vlad сказал:

У меня воспроизводится ещё одна проблема, dns запросы пролетают мимо dnscrypt-proxy,в итоге сайт показывает заглушку провайдера. 

Нужно проверить, работает ли приземление DNS запросов клиентов на роутер, например, командой

~ # iptables-save | grep " --dport 53 -j DNAT --to-destination 192.168.1.1"
Can't find library for target `CONNNDMMARK'
-A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.1.1:53

Так же с помощью tcpdump host IP_проверяемого_девайса посмотреть куда именно проходят запросы, на какой сервер.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.


×
×
  • Create New...