DNSCrypt
-
Здравствуйте. На днях решил заняться 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.confnano /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_enablestop_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.logcommand_args="-d -u ${user} -a ${localaddress} -r ${resolveraddress} -N ${providername} -k ${providerkey} -p ${pidfile} -l ${logdir}"
dnscrypt_proxy_stop() {
kill -KILLcat ${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/
-
Доброе. Спасибо. Плюс в карму )
P.s. Можно еще принудительно заворачивать весь dns-трафик клиента на pf с помощью правила port forwrd на LAN.
-
Спасибо.
если кому то будет нужно то напишу вариант и для Forwarder
Буду весьма признателен.
-
Настравиаем 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> -
Спасибо!
-
Мерси!
-
Попробовал сделать через конфиг /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
Кажется так лучше работает