Решил я автоматизировать процесс запуска dnscrypt-proxy с помощью systemd, ибо надоело после каждой перезагрузки запускать из консоли. Погуглил — нашел готовый шаблон — сделал. Вроде бы можно насладиться успехом — но нет, мне захотелось разобраться что это за конфиги и что они делают. Все шло успешно, пока я не споткнулся об одну теоретически решаемую проблему, при желании заменить целый конфиг на пару символов.
dnscrypt-proxy — софт, цель которого в шифровании DNS трафика и его обменом со специальными DNS серверами.
dnscrypt-proxy имеет функцию прослушивания трафика с помощью атрибута -a [ip:port]
Итак, имеется есть два юнита: сокет dnscrypt-proxy.socket, который слушает IP 127.0.0.2:53(DNS трафик, в моем случае) и перенаправляет весь трафик на служебный юнит dnscrypt-proxy.service, который уже работает непосредственно с dnscrypt-proxy, если я правильно разобрался.
Так вот, сам вопрос: почему команда dnscrypt-proxy -R dns.server.name -a 127.0.0.2:53 не равна записи ExecStart=/usr/sbin/dnscrypt-proxy -R dns.server.name -a 127.0.0.2:53 в конфиге? Иначе как объяснить, что первая работает, а вторая — нет?
__________
Вот как выглядят юниты:
-----
/etc/systemd/system/dnscrypt-proxy.service
[Unit]
Description=DNSCrypt client proxy
Requires=dnscrypt-proxy.socket
[Install]
WantedBy=multi-user.target
[Service]
Type=simple
NonBlocking=true
ExecStart=/usr/sbin/dnscrypt-proxy -R dns.server.name
-----
/etc/systemd/system/dnscrypt-proxy.socket
[Unit]
Description=dnscrypt-proxy listening socket
After=network.target
[Socket]
ListenStream=127.0.0.2:53
ListenDatagram=127.0.0.2:53
[Install]
WantedBy=sockets.target