Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    DNSCrypt

    Russian
    3
    7
    23.3k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      borg
      last edited by

      Здравствуйте. На днях решил заняться DNSCrypt и столкнулся с множеством неприятностей, котороые вроде как преодолел, поэтому решил написать свои действия, возможно кому то поможет, а может кто-то укажет на ошибки. Испытано было как на winserv2016(в качестве dns) так и на pf'e. Было использовано несколько источников:
      https://forum.pfsense.org/index.php?topic=111895.30
      https://docs.google.com/document/d/1BgvDY8haswQd2BgBP8ctEriy9QRX1CikdbaFqr7yaOQ/edit
      https://github.com/jedisct1/dnscrypt-proxy/wiki/Configuration
      https://dnscrypt.org/#dnscrypt-server
      https://dnscrypt.is/
      http://rutracker.wiki/%D0%9F%D0%BE%D1%88%D0%B0%D0%B3%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%D0%BF%D0%BE_%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B5_DNSCrypt_%D0%B2_Windows
      https://github.com/jedisct1/dnscrypt-server-docker/blob/master/README.md
      https://simplednscrypt.org/
      https://ramirosalas.com/2015/07/installing-dnscrypt-in-pfssense/

      Приступим:

      /etc/rc.conf_mount_rw
      nano /usr/local/etc/pkg/repos/pfSense.conf and /usr/local/etc/pkg/repos/FreeBSD.conf
      ```{ enabled: no } -> { enabled: yes }
      

      nano /etc/pkg/FreeBSD.conf

      pkg install dnscrypt-proxy
      nano /usr/local/etc/pkg/repos/pfSense.conf and /usr/local/etc/pkg/repos/FreeBSD.conf

      nano /etc/pkg/FreeBSD.conf  enabled: yes

      nano /usr/local/etc/rc.d/dnscrypt-proxy.sh

      #!/bin/sh

      $FreeBSD: head/dns/dnscrypt-proxy/files/dnscrypt-proxy.in 301978 2012-08-03 23:19:19Z brian $

      PROVIDE: dnscrypt-proxy

      REQUIRE: SERVERS cleanvar

      KEYWORD: shutdown

      BEFORE: named

      Add the following lines to /etc/rc.conf to enable dnscrypt-proxy:

      dnscrypt_proxy_enable="YES":  Set to NO by default.

      #                              Set it to YES to enable dnscrypt-proxy.

      To redirect a local resolver through dnscrypt-proxy, point it at 127.0.0.2

      and add the following to rc.conf:

      ifconfig_lo0_alias0="inet 127.0.0.2 netmask 0xffffffff"

      dnscrypt_proxy_flags='-a 127.0.0.2'

      create rc.conf file

      echo 'dnscrypt_proxy_enable="YES"' > /etc/rc.conf
      echo 'dnscrypt_proxy_flags="-a 127.0.0.1:54"' >> /etc/rc.conf

      . /etc/rc.subr

      name=dnscrypt_proxy
      rcvar=dnscrypt_proxy_enable

      stop_cmd="dnscrypt_proxy_stop"

      load_rc_config dnscrypt_proxy

      : {dnscrypt_proxy_enable:="NO"}

      command=/usr/local/sbin/dnscrypt-proxy
      procname=/usr/local/sbin/dnscrypt-proxy
      user=_dnscrypt-proxy
      localaddress=127.0.0.1:54
      pidfile=/var/run/dnscrypt-proxy.pid
      resolveraddress=93.95.228.87
      providername=2.dnscrypt-cert.ns0.dnscrypt.is
      providerkey=EE41:6A83:451C:218F:37B2:B736:78C4:999F:7DE6:89D1:31D2:7866:7C8E:A8BB:1C95:B402
      logdir=/var/log/dnscrypt-proxy.log

      command_args="-d -u  ${user} -a ${localaddress} -r ${resolveraddress} -N ${providername} -k ${providerkey} -p ${pidfile} -l ${logdir}"

      dnscrypt_proxy_stop() {
              kill -KILL cat ${pidfile} 2> /dev/null && echo "Killed ${name}."
              }

      run_rc_command "$1"

      
      

      chmod +x /usr/local/etc/rc.d/dnscrypt-proxy.sh

      /usr/local/etc/rc.d/dnscrypt-proxy.sh start

      
      

      dig -4 slashdot.org @127.0.0.1 -p 54

      если ответ получился примерно такой:
      
      

      /root: dig -4 slashdot.org @127.0.0.1 -p 54

      ; <<>> DiG 9.11.1 <<>> -4 slashdot.org @127.0.0.1 -p 54
      ;; global options: +cmd
      ;; Got answer:
      ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63224
      ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 1

      ;; OPT PSEUDOSECTION:
      ; EDNS: version: 0, flags:; udp: 4096
      ;; QUESTION SECTION:
      ;slashdot.org.                  IN      A

      ;; ANSWER SECTION:
      slashdot.org.          11      IN      A      216.34.181.45

      ;; AUTHORITY SECTION:
      slashdot.org.          85769  IN      NS      ns2.dnsmadeeasy.com.
      slashdot.org.          85769  IN      NS      ns1.dnsmadeeasy.com.
      slashdot.org.          85769  IN      NS      ns3.dnsmadeeasy.com.
      slashdot.org.          85769  IN      NS      ns4.dnsmadeeasy.com.
      slashdot.org.          85769  IN      NS      ns0.dnsmadeeasy.com.

      ;; Query time: 97 msec
      ;; SERVER: 127.0.0.1#54(127.0.0.1)
      ;; WHEN: Sat Jul 01 12:49:38 MSK 2017
      ;; MSG SIZE  rcvd: 162

      
      то пока все успешно :)
      
      Далее настравиаем **DNS Resolver** (настраивал сперва на Forwarder, но как же мы без pfblockerng, если кому то будет нужно то напишу вариант и для Forwarder)
      Services/DNS Resolver/General Settings
      Ставим галку Enable Forwarding Mode и в Custom options добавляем:
      

      do-not-query-localhost: no
      forward-zone:
      name: "."
              forward-addr: 127.0.0.1@54

      Все. После этого нужно в клиенте указать в качестве dns адрес pf'a и можно проверять:
      https://ipleak.net/
      http://en.conn.internet.nl/connection/#
      https://dnssec.vs.uni-due.de/
      1 Reply Last reply Reply Quote 0
      • werterW
        werter
        last edited by

        Доброе. Спасибо. Плюс в карму )

        P.s. Можно еще принудительно заворачивать весь dns-трафик клиента на pf с помощью правила port forwrd на LAN.

        1 Reply Last reply Reply Quote 0
        • P
          pigbrother
          last edited by

          Спасибо.

          если кому то будет нужно то напишу вариант и для Forwarder

          Буду весьма признателен.

          1 Reply Last reply Reply Quote 0
          • B
            borg
            last edited by

            Настравиаем DNS Forwarder
            Services/DNS Forwarder/General Settings
            Ставим галку Query DNS servers sequentially и в Custom options добавляем:
            strict-order server=127.0.0.1#54
            если будет ругаться на синтаксис(у меня ругается) идем Diagnostics/Edit File
            /cf/conf/config.xml - > Load
            Делаем бейкап на всякий, пролистываем в самый низ и находим <dnsmasq>Вписываем:
            <custom_options>strict-order server=127.0.0.1#54</custom_options>
            Save
            Далее в сервисах перезапускаем dnsmasq и готово.</dnsmasq>

            1 Reply Last reply Reply Quote 0
            • P
              pigbrother
              last edited by

              Спасибо!

              1 Reply Last reply Reply Quote 0
              • werterW
                werter
                last edited by

                Мерси!

                1 Reply Last reply Reply Quote 0
                • B
                  borg
                  last edited by

                  Попробовал сделать через конфиг /usr/local/etc/dnscrypt-proxy.conf

                  ProviderName    2.dnscrypt-cert.ns0.dnscrypt.is
                  ProviderKey     EE41:6A83:451C:218F:37B2:B736:78C4:999F:7DE6:89D1:31D2:7866:7C8E:A8BB:1C95:B402
                  ResolverAddress 93.95.228.87:443
                  Daemonize yes
                  PidFile /var/run/dnscrypt-proxy.pid
                  User _dnscrypt-proxy
                  LocalAddress 127.0.0.1:54
                  LocalCache on
                  EphemeralKeys off
                  Forward domains:"ваш домен" to:"ваш днс"
                  BlockIPv6 no
                  

                  Кажется так лучше работает

                  1 Reply Last reply Reply Quote 0
                  • First post
                    Last post
                  Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.