====== Information ====== * DNSCrypt ((https://dnscrypt.info)) * dnscrypt-proxy ((https://github.com/jedisct1/dnscrypt-proxy)) ===== Prerequisites ===== * [[distros:opensuse_tumbleweed_gnome | openSUSE Tumbleweed]] ((local DNS server)) ====== Create Group and User ====== **** sudo groupadd 'dnscryptbuilder' && sudo useradd -c 'DNSCrypt Builder User' -d '/var/lib/dnscryptbuilder' -g 'dnscryptbuilder' -m -r 'dnscryptbuilder' ====== Dependencies ====== **** sudo zypper install git-core go ====== Install ====== * https://github.com/jedisct1/dnscrypt-proxy/wiki/building ===== Build ===== ==== Switch User ==== **** sudo su 'dnscryptbuilder' -s '/bin/bash' ==== Compile ==== **** cd '/tmp' && rm -Rf '/tmp/dnscrypt-proxy' '/tmp/go-build'* ~/'go' && git clone -b 'master' 'https://github.com/jedisct1/dnscrypt-proxy.git' '/tmp/dnscrypt-proxy' --depth '1' && cd '/tmp/dnscrypt-proxy/dnscrypt-proxy' && go get -d && go clean && go build -ldflags='-s -w' && exit ===== Install ===== **** sudo mv '/tmp/dnscrypt-proxy/dnscrypt-proxy/dnscrypt-proxy' '/usr/sbin/dnscrypt-proxy' && sudo chown 'root':'root' '/usr/sbin/dnscrypt-proxy' && sudo chmod +x '/usr/sbin/dnscrypt-proxy' && sudo restorecon -v '/usr/sbin/dnscrypt-proxy' && cd ~ && sudo rm -Rf '/tmp/dnscrypt-proxy' '/tmp/go-build'* '/var/lib/dnscryptbuilder/go' && sync ====== Settings ====== ===== References ===== * https://github.com/jedisct1/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml * https://github.com/DNSCrypt/dnscrypt-resolvers ===== Notes ===== * ''server_names'' can be commented-out in order to query all available servers, and then manually curated to select the servers with lowest response times ===== Settings ===== sudo mkdir -p '/etc/dnscrypt-proxy' && sudo -e '/etc/dnscrypt-proxy/dnscrypt-proxy.toml' server_names = ['cloudflare', 'ev-us2', 'ventricle.us', 'opennic-onic'] keepalive = 10 fallback_resolver = '185.121.177.177:53' ipv6_servers = true require_dnssec = true [blacklist] blacklist_file = 'blacklist.txt' [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' [sources.'opennic'] urls = ['https://raw.githubusercontent.com/DNSCrypt/dnscrypt-resolvers/master/v2/opennic.md', 'http://download.dnscrypt.info/resolvers-list/v2/opennic.md'] cache_file = 'opennic.md' minisign_key = 'RWQf6LRCGA9i53mlYecO4IzT51TGPpvWucNSCh1CBM0QTaLn73Y7GFO3' ===== Blacklist ===== sudo -e '/etc/dnscrypt-proxy/blacklist.txt' # Facebook 2018/03/19 *.facebook.* *.fbcdn.* *.tfbnw.* *.fbsbx.* *.fb.* *.whatsapp.* *.instagram.* ====== Services ====== ===== Main ===== sudo -e '/etc/systemd/system/dnscrypt-proxy.service' && sudo systemctl daemon-reload && sudo systemctl enable 'dnscrypt-proxy' --now && sudo systemctl status 'dnscrypt-proxy' -l [Unit] Description=dnscrypt-proxy After=network-online.target Wants=network-online.target [Service] Type=simple WorkingDirectory=/etc/dnscrypt-proxy ExecStart='/usr/sbin/dnscrypt-proxy' ProtectControlGroups=yes ProtectKernelModules=yes ProtectKernelTunables=yes PrivateDevices=yes PrivateTmp=yes ProtectHome=yes ProtectSystem=yes ReadWritePaths='/etc/dnscrypt-proxy' NoNewPrivileges=yes RestrictNamespaces=yes MemoryDenyWriteExecute=yes RestrictRealtime=yes [Install] WantedBy=multi-user.target ===== Updater ===== ==== Service ==== sudo -e '/etc/systemd/system/dnscrypt-proxy-up.service' [Service] Type=oneshot WorkingDirectory=/tmp ProtectControlGroups=yes ProtectKernelModules=yes PrivateDevices=yes PrivateTmp=yes ProtectHome=yes RestrictNamespaces=yes MemoryDenyWriteExecute=yes RestrictRealtime=yes ExecStartPre='/usr/bin/rm' -Rf '/tmp/dnscrypt-proxy' '/tmp/go-build'* '/var/lib/dnscryptbuilder/go' ExecStartPre='/bin/bash' -c 'sudo -u "dnscryptbuilder" git clone -b "master" "https://github.com/jedisct1/dnscrypt-proxy.git" "/tmp/dnscrypt-proxy" --depth '1'' ExecStartPre='/bin/bash' -c 'cd "/tmp/dnscrypt-proxy/dnscrypt-proxy" && sudo -u "dnscryptbuilder" go get -d' ExecStartPre='/bin/bash' -c 'cd "/tmp/dnscrypt-proxy/dnscrypt-proxy" && sudo -u "dnscryptbuilder" go clean' ExecStart='/bin/bash' -c 'cd "/tmp/dnscrypt-proxy/dnscrypt-proxy" && sudo -u "dnscryptbuilder" go build -ldflags="-s -w"' ExecStartPost='/usr/bin/mv' '/tmp/dnscrypt-proxy/dnscrypt-proxy/dnscrypt-proxy' '/usr/sbin/dnscrypt-proxy' ExecStartPost='/usr/bin/chown' 'root':'root' '/usr/sbin/dnscrypt-proxy' ExecStartPost='/usr/bin/chmod' +x '/usr/sbin/dnscrypt-proxy' ExecStartPost='/usr/bin/systemctl' restart 'dnscrypt-proxy' ExecStartPost='/usr/bin/rm' -Rf '/tmp/dnscrypt-proxy' '/tmp/go-build'* '/var/lib/dnscryptbuilder/go' ExecStartPost='/usr/bin/sync' ==== Timer ==== **** sudo -e '/etc/systemd/system/dnscrypt-proxy-up.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'dnscrypt-proxy-up.timer' --now && sudo systemctl start 'dnscrypt-proxy-up' && sudo systemctl status 'dnscrypt-proxy-up' -l [Unit] Description=dnscrypt-proxy Updater After=network-online.target Wants=network-online.target [Timer] OnCalendar=weekly Persistent=true [Install] WantedBy=timers.target