В этом выпуске мы настроим резолвинг DNS. Нам нужны обычные домены, альтернативные TLD (при этом блокчейн-бейзед TLD должны юзать фуллноды для резолва), все должно кешироваться, плюс надо поднять собственную доменную зону `.puk`.
Для обычных доменов мы будем использовать dnscrypt-proxy. Его нету в stable, поэтому надо подключить unstable репозитории. Потом надо поставить приоритет для стейбла, записав это в `/etc/apt/preferences`.
Package: *
Pin: release a=unstable
Pin-Priority: 700
Package: *
Pin: release a=stable
Pin-Priority: 900
Обновляем репозитории
sudo apt-get update
Ставим dnscrypt-proxy
sudo apt-get install dnscrypt-proxy/unstable
sudo mkdir /var/run/dnscrypt-proxy
sudo chown -R _dnscrypt-proxy /var/run/dnscrypt-proxy
Открываем файл `/etc/default/dnscrypt-proxy`.
В `DNSCRYPT_PROXY_RESOLVER_NAME` записывается имя сервера. Полный список можно посмотреть в `/usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv`. Криптокоммуна выбрала `cloudns-can`.
В `DNSCRYPT_PROXY_OPTIONS` пишем `--ephemeral-keys --pidfile=/var/run/dnscrypt-proxy/dnscrypt-proxy.pid`.
Создаем директорию, чтобы переписать параметры стандартного юнита.
sudo mkdir /etc/systemd/system/dnscrypt-proxy.socket.d
Делаем `nano /etc/systemd/system/dnscrypt-proxy.socket.d/override.conf` и пишем туда следующее
[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:5333
ListenDatagram=127.0.0.1:5333
Это адрес, на котором dnscrypt-proxy будет слушать.
Перелоадываем юнит, рестартим dnscrypt-proxy
sudo systemctl reenable dnscrypt-proxy.socket
sudo systemctl restart dnscrypt-proxy
Пробуем, должно работать.
nslookup -port=5333 bnw.im 127.0.0.1
Ставим namecoind
sudo sh -c 'echo "deb http://download.opensuse.org/repositories/home:/p_conrad:/coins/Debian_8.0/ /" >> /etc/apt/sources.lists'
wget http://download.opensuse.org/repositories/home:p_conrad:coins/Debian_8.0/Release.key
gpg --with-fingerprint Release.key # C39B 1D48 8C88 5617 1C1F 6CB3 29D8 C8DA C444 7CF3, проверьте, в криптокоммуне был проверен с помощью разных экзит-нод
sudo apt-key add - < Release.key && rm Release.key
sudo apt-get update
sudo apt-get install namecoin
sudo useradd -m -r -s /bin/false namecoind
sudo mkdir /home/namecoind/.namecoin
Пишем в `/home/namecoind/.namecoin/namecoin.conf` вот это (пароль и логин сменить)
rpcuser=user
rpcpassword=pass
namehistory=1
server=1
rpcport=8336
rpcallowip=127.0.0.1
Создаем директорию для пидфайла и ставим везде права
sudo mkdir /var/run/namecoind
sudo chown -R namecoind:namecoind /var/run/namecoind
sudo chown -R namecoind:namecoind /home/namecoind
sudo chmod -R 700 /home/namecoind
sudo chmod 710 /home/namecoind
sudo chmod 710 /home/namecoind/.namecoin
sudo chmod 440 /home/namecoind/.namecoin/namecoin.conf
Теперь нужно установить nmcontrol
sudo useradd -G namecoind -m -r -s /bin/false nmcontrol
sudo su -s /bin/bash nmcontrol
cd
git clone https://github.com/namecoin/nmcontrol.git
python nmcontrol/nmcontrol.py --help # сгенерит конфиги
sudo mkdir /var/run/nmcontrol
sudo chown -R nmcontrol:nmcontrol /var/run/nmcontrol
sudo chmod -R 700 /home/nmcontrol
Редактируем конфиги в /home/nmcontrol/.config/nmcontrol/conf
В `plugin-data.conf` пишем это
start=1
update.from=namecoin
import.from=namecoin
update.namecoin=/home/namecoind/.namecoin/namecoin.conf
import.namecoin=/home/namecoind/.namecoin/namecoin.conf
update.mode=ondemand
В `plugin-dns.conf` раскомменчиваем `start=1` и `disable_ns_lookups=0`.
В `plugin-main.conf` раскомменчиваем `start=1` и `daemon=1`.
В `plugin-http.conf`, `plugin-rpc.conf` и `plugin-systray.conf` пишем `start=0`.
В `service-dns.conf` пишем это
start=1
host=127.0.0.1
disable_standard_lookups=1
port=5334
resolver=127.0.0.1,
Ставим emercoin
sudo useradd -m -r -s /bin/false emercoind
sudo mkdir /var/run/emercoind
sudo mkdir /home/emercoind/.emercoin
sudo touch /home/emercoind/.emercoin/emercoin.conf
sudo chown -R emercoind:emercoind /var/run/emercoind
sudo chmod -R 700 /home/emercoind
sudo chmod -R 400 /home/emercoind/.emercoin/emercoin.conf
sudo su -s /bin/bash emercoind
wget http://sourceforge.net/projects/emercoin/files/0.3.7/emercoin-0.3.7-linux.tar.gz/download # если вы увидите этот гайд сильно позже, то возможно стоит посмотреть не вышла ли версия поновее
tar -xzf emercoin-0.3.7-linux.tar.gz
Пишем это в `/home/emercoind/.emercoin/emercoin.conf` (пароль и логин сменить)
rpcuser=user
rpcpassword=pass
listen=1
server=1
rpcallowip=127.0.0.1
rpcport=8775
maxconnections=80
gen=0
daemon=1
emcdns=1
emcdnsallowed=.coin|.emc|.lib|.bazar
emcdnsverbose=4
emcdnsport=5335
Ставим unbound
sudo apt-get install unbound
Пишем в /etc/unbound/unbound.conf [вот это](http://0bin.net/paste/1QBuvoChb9ViVVdi#zZrLWUpKe2En33KNGbHlkEIvo0Hbc6DVruhztDXmhhS).
Что там происходит конкретно, объяснять сложно и должно, я попытался добавить комментарии к некоторым опциям. В общем это делает резолвить все днс-запросы на обычные домены через dnscrypt-proxy, добавляет резолв доменов от emercoin и namecoin, плюс локальную зону .puk, в которой сейчас запущен один сайт http://bnw.puk и кеширует DNS-запросы, чтобы это было все не пиздец медленно.
На криптосервере для мониторинга процессов и автоматического их рестарта используется monit. Добавляем [это говно](http://0bin.net/paste/0q+yhYOt76oKvbJr#1S4weFmBBYVFDI80KGIDyQrKRLKq-cXb5Y30858lWl+) туда (`/etc/monit/conf.d/cryptocommune.conf`). Если вы не используете monit, то тут в принципе видно, как это должно стартовать.
Перезапускаем unbound
sudo systemctl restart unbound
Пробуем что-нибудь порезолвить
nslookup google.com 127.0.0.1
nslookup nf.bit 127.0.0.1
nslookup flibusta.lib 127.0.0.1
nslookup bnw.puk 127.0.0.1
Ура?