mirror of
https://github.com/trailofbits/algo.git
synced 2025-09-05 19:43:22 +02:00
Use systemd socket activation properly for dnscrypt-proxy
Instead of fighting systemd socket activation, configure it to listen on the correct VPN service IPs. This is more systemd-native and reliable. Changes: - Create socket override to listen on VPN IPs instead of localhost - Clear default listeners and add VPN service IPs - Use empty listen_addresses in dnscrypt-proxy.toml for socket activation - Keep socket enabled and let systemd manage the activation - Add handler for restarting socket when config changes Benefits: - Works WITH systemd instead of against it - Survives package updates better - No dependency conflicts - More reliable service management This approach is cleaner than disabling socket activation entirely and ensures dnscrypt-proxy is accessible to VPN clients on the correct IPs. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
0524908ba7
commit
767d615788
4 changed files with 48 additions and 5 deletions
|
@ -3,9 +3,16 @@
|
||||||
systemd:
|
systemd:
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
|
|
||||||
|
- name: restart dnscrypt-proxy.socket
|
||||||
|
systemd:
|
||||||
|
name: dnscrypt-proxy.socket
|
||||||
|
state: restarted
|
||||||
|
daemon_reload: true
|
||||||
|
when: ansible_distribution == 'Ubuntu' or ansible_distribution == 'Debian'
|
||||||
|
|
||||||
- name: restart dnscrypt-proxy
|
- name: restart dnscrypt-proxy
|
||||||
systemd:
|
systemd:
|
||||||
name: dnscrypt-proxy
|
name: dnscrypt-proxy
|
||||||
state: restarted
|
state: restarted
|
||||||
daemon_reload: true
|
daemon_reload: true
|
||||||
when: ansible_distribution == 'Ubuntu'
|
when: ansible_distribution == 'Ubuntu' or ansible_distribution == 'Debian'
|
||||||
|
|
|
@ -26,12 +26,11 @@
|
||||||
|
|
||||||
- meta: flush_handlers
|
- meta: flush_handlers
|
||||||
|
|
||||||
- name: Ubuntu | Stop and disable dnscrypt-proxy socket before starting service
|
- name: Ubuntu | Ensure dnscrypt-proxy socket is enabled
|
||||||
systemd:
|
systemd:
|
||||||
name: dnscrypt-proxy.socket
|
name: dnscrypt-proxy.socket
|
||||||
state: stopped
|
enabled: true
|
||||||
enabled: false
|
state: started
|
||||||
failed_when: false
|
|
||||||
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
|
when: ansible_distribution == 'Debian' or ansible_distribution == 'Ubuntu'
|
||||||
|
|
||||||
- name: dnscrypt-proxy enabled and started
|
- name: dnscrypt-proxy enabled and started
|
||||||
|
|
|
@ -50,6 +50,37 @@
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
|
|
||||||
|
- name: Ubuntu | Ensure socket override directory exists
|
||||||
|
file:
|
||||||
|
path: /etc/systemd/system/dnscrypt-proxy.socket.d/
|
||||||
|
state: directory
|
||||||
|
mode: '0755'
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
|
||||||
|
- name: Ubuntu | Configure dnscrypt-proxy socket to listen on VPN IPs
|
||||||
|
copy:
|
||||||
|
dest: /etc/systemd/system/dnscrypt-proxy.socket.d/10-algo-override.conf
|
||||||
|
content: |
|
||||||
|
[Socket]
|
||||||
|
# Clear default listeners
|
||||||
|
ListenStream=
|
||||||
|
ListenDatagram=
|
||||||
|
# Add VPN service IPs
|
||||||
|
ListenStream={{ local_service_ip }}:53
|
||||||
|
ListenDatagram={{ local_service_ip }}:53
|
||||||
|
{% if ipv6_support %}
|
||||||
|
ListenStream=[{{ local_service_ipv6 }}]:53
|
||||||
|
ListenDatagram=[{{ local_service_ipv6 }}]:53
|
||||||
|
{% endif %}
|
||||||
|
NoDelay=true
|
||||||
|
DeferAcceptSec=1
|
||||||
|
mode: '0644'
|
||||||
|
notify:
|
||||||
|
- daemon-reload
|
||||||
|
- restart dnscrypt-proxy.socket
|
||||||
|
- restart dnscrypt-proxy
|
||||||
|
|
||||||
- name: Ubuntu | Add custom requirements to successfully start the unit
|
- name: Ubuntu | Add custom requirements to successfully start the unit
|
||||||
copy:
|
copy:
|
||||||
dest: /etc/systemd/system/dnscrypt-proxy.service.d/99-algo.conf
|
dest: /etc/systemd/system/dnscrypt-proxy.service.d/99-algo.conf
|
||||||
|
|
|
@ -37,10 +37,16 @@
|
||||||
## List of local addresses and ports to listen to. Can be IPv4 and/or IPv6.
|
## List of local addresses and ports to listen to. Can be IPv4 and/or IPv6.
|
||||||
## Note: When using systemd socket activation, choose an empty set (i.e. [] ).
|
## Note: When using systemd socket activation, choose an empty set (i.e. [] ).
|
||||||
|
|
||||||
|
{% if ansible_distribution == 'Ubuntu' or ansible_distribution == 'Debian' %}
|
||||||
|
# Using systemd socket activation on Ubuntu/Debian
|
||||||
|
listen_addresses = []
|
||||||
|
{% else %}
|
||||||
|
# Direct binding on non-systemd systems
|
||||||
listen_addresses = [
|
listen_addresses = [
|
||||||
'{{ local_service_ip }}:53'{% if ipv6_support %},
|
'{{ local_service_ip }}:53'{% if ipv6_support %},
|
||||||
'[{{ local_service_ipv6 }}]:53'{% endif %}
|
'[{{ local_service_ipv6 }}]:53'{% endif %}
|
||||||
]
|
]
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
## Maximum number of simultaneous client connections to accept
|
## Maximum number of simultaneous client connections to accept
|
||||||
|
|
Loading…
Add table
Reference in a new issue