Projet

Général

Profil

Wiki » Historique » Version 6

sacha, 26/12/2022 00:41

1 5 sacha
{{>toc}}
2
3 1 sacha
# DNS récursif Ouvert DoH DoT & HA
4
5
Aquilenet propose deux serveurs DNS ouverts cf https://www.aquilenet.fr/services/dns/
6 4 sacha
On a mis aussi un DNS ouvert sur l'IP 45.67.81.23 car facile à retenir, avec l'adresse de dns.aquilenet.fr (voir [http://dns.aquilenet.fr](http://dns.aquilenet.fr)) . Nous en avons profité pour ajouter [DoH](https://fr.wikipedia.org/wiki/DNS_over_HTTPS) et [DoT](https://fr.wikipedia.org/wiki/DNS_over_TLS) et d'avoir cette adresse en IP Virtuelle partagée entre Gaia et Hades.
7
Cette IP virtuelle est portée par Keepalived sur Hades le primaire et Gaia le secondaire. Si le démon Keepalived est arrêté sur Hades, l'ip bascule sur Gaia. Si on redémarre le démon sur Hades, ce dernier reprend l'IP: pratique pour les mises à jour, le service continue à fonctionner.
8 1 sacha
9 6 sacha
Une configuration spécifique pour l'ip de ce vlan a été fait sur les switches et les hyperviseurs, elle n'est pas abordée dans ce document.
10
11 3 sacha
## Configurations communes à Gaia et Hades
12 1 sacha
13 3 sacha
### Apache2
14 6 sacha
15
* /etc/apache2/ports.conf
16
17
Pour que l'ip 45.67.81.23 puisse répondre en http sur le port 80 et que les autres sites fonctionnent en 443 sur l'ip de d'hades/gaia
18
~~~
19
Listen 80
20
NameVirtualHost 185.233.100.2:443
21
NameVirtualHost [2a0c:e300::2]:443
22
<IfModule ssl_module>
23
        Listen 185.233.100.2:443
24
        Listen [2a0c:e300::2]:443
25
</IfModule>
26
27
<IfModule mod_gnutls.c>
28
        Listen 185.233.100.2:443
29
        Listen [2a0c:e300::2]:443
30
</IfModule>
31
~~~
32 1 sacha
33
* /etc/apache2/sites-enabled/dns.aquilenet.fr.conf 
34
~~~
35
<VirtualHost *:80>
36
        ServerAdmin webmaster@aquilenet.fr
37
        ServerName dns.aquilenet.fr
38
        DocumentRoot /srv/www/dns.aquilenet.fr 
39
40
        ErrorLog ${APACHE_LOG_DIR}/dns.aqln.error.log 
41
        LogLevel warn
42
        CustomLog ${APACHE_LOG_DIR}/dns.aqln.access.log combined
43
44
        Alias /.well-known/acme-challenge /srv/letsencrypt/challenges/dns.aquilenet.fr
45
        <Directory /srv/letsencrypt/challenges/dns.aquilenet.fr>
46
            Require all granted
47
        </Directory>
48
        <Directory />
49
                Options FollowSymLinks 
50
                AllowOverride None
51
                Require all granted
52
        </Directory>
53
</VirtualHost>
54
~~~
55
56 3 sacha
### Bind9
57 1 sacha
58
BIND 9.17.10 implémente DoH, au jour de l'installation il n'est disponible que dans les backports bullseye (A changer quand il sera dans main).
59
60
* /etc/bind/named.conf.options
61
62
 Dans la catégorie "options {"
63
~~~
64
        listen-on-v6 { 2a0c:e300::101; };
65
        listen-on { 185.233.100.101; 45.67.81.23; };
66
        # DOH
67
        listen-on port 443 tls local-tls http default { 45.67.81.23; };
68
        # DoT
69
        listen-on port 853 tls local-tls { 45.67.81.23; };
70
        recursion yes;
71
        dnssec-validation auto;
72
~~~
73
74
~~~
75
# DoH DoT
76
tls local-tls {
77
    key-file "/etc/letsencrypt/live/dns.aquilenet.fr/privkey.pem";
78
    cert-file "/etc/letsencrypt/live/dns.aquilenet.fr/fullchain.pem";
79
    dhparam-file "/etc/bind/dhparam.pem";
80
    protocols { TLSv1.2; TLSv1.3; };
81
    prefer-server-ciphers yes;
82
    session-tickets no;
83
};
84
~~~
85
86 3 sacha
### AppArmor
87 1 sacha
88
*  /etc/apparmor.d/local/usr.sbin.named
89
90
~~~
91
/etc/letsencrypt/** r,
92
~~~
93
appliquer avec: `apparmor_parser -r /etc/apparmor.d/usr.sbin.named`
94 3 sacha
95
## Configurations spécifiques
96
97
### Génération du certificat SSL sur Hades
98
99
~~~
100
certbot --apache --agree-tos --email sysop@aquilenet.fr -d dns.aquilenet.fr
101
chgrp bind /etc/letsencrypt/live/dns.aquilenet.fr/privkey.pem
102
chmod 0640 /etc/letsencrypt/live/dns.aquilenet.fr/privkey.pem
103
openssl dhparam -out /etc/bind/dhparam.pem 4096
104
~~~
105
106
Copie du certificat sur gaia
107
108
* /etc/letsencrypt/renewal-hooks/post/sync-cert.sh
109
~~~
110
#!/bin/bash
111
rsync -aPHSA /etc/letsencrypt/archive/dns.aquilenet.fr gaia:/etc/letsencrypt/archive/
112
~~~
113
114
### Keepalived
115
116
#### Hades Master
117
118
* /etc/keepalived/keepalived.conf
119
120
~~~
121
global_defs {
122
  notification_email {
123
    sysop@aquilenet.fr
124
  }
125
  notification_email_from vrrp-dns@aquilenet.fr.fr
126
  smtp_server localhost
127
  smtp_connect_timeout 30
128
}
129
130
vrrp_instance DNS {
131
  state MASTER 
132
  interface eth0
133
  virtual_router_id 101 
134
  priority 100
135
  advert_int 2
136
  smtp_alert
137
  unicast_src_ip 185.233.100.16 
138
  unicast_peer {
139
    185.233.100.2
140
  }
141
  virtual_ipaddress {
142
    45.67.81.23/32 dev eth1 scope global # VIP
143
  }
144
}
145
~~~
146
147
#### Gaia Slave
148
149
* /etc/keepalived/keepalived.conf
150
151
~~~
152
global_defs {
153
  notification_email {
154
    sysop@aquilenet.fr
155
  }
156
  notification_email_from vrrp-dns@aquilenet.fr.fr
157
  smtp_server localhost
158
  smtp_connect_timeout 30
159
}
160
161
vrrp_instance DNS {
162
  state BACKUP
163
  interface eth0
164
  virtual_router_id 101
165
  priority 50
166
  advert_int 2
167
  smtp_alert
168
  unicast_src_ip 185.233.100.2
169
  unicast_peer {
170
    185.233.100.16
171
  }
172
  virtual_ipaddress {
173
    45.67.81.23/32 dev eth1 scope global # VIP
174
  }
175
}
176
177 1 sacha
~~~
178 4 sacha
179
## Validation
180
181
* test du service
182
~~~
183
dig +https +short x.org @45.67.81.23      
184
131.252.210.176
185
dig +tls +short x.org @45.67.81.23      
186
131.252.210.176
187
~~~
188
189
* bascule keepalived