Ce didacticiel vous montrera comment configurer un service DNS qui est facile à entretenir, facile à configurer et qui est généralement plus sécurisé que le service BIND classique. Cet article suppose que vous exécutez un VPS avec FreeBSD installé.
Pour commencer, ouvrez votre terminal et installez ce package:
<ceph>[~]# pkg install djbdns
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 3 packages will be affected (of 0 checked):
New packages to be INSTALLED:
djbdns: 1.05_20,1
ucspi-tcp: 0.88_2
daemontools: 0.76_17
The process will require 1 MB more space.
251 KB to be downloaded.
Proceed with this action? [y/N]: y
Fetching djbdns-1.05_20,1.txz: 100% 139 KB 142.4k/s 00:01
Fetching ucspi-tcp-0.88_2.txz: 100% 62 KB 63.1k/s 00:01
Fetching daemontools-0.76_17.txz: 100% 51 KB 51.7k/s 00:01
Checking integrity... done (0 conflicting)
[1/3] Installing ucspi-tcp-0.88_2...
[1/3] Extracting ucspi-tcp-0.88_2: 100%
[2/3] Installing daemontools-0.76_17...
[2/3] Extracting daemontools-0.76_17: 100%
[3/3] Installing djbdns-1.05_20,1...
[3/3] Extracting djbdns-1.05_20,1: 100%
L'installation installera automatiquement des packages supplémentaires ( daemontools
et ucspi-tcp
).
Créez deux utilisateurs gtinydns
et gdnslog
. Commencez avec le premier utilisateur:
<ceph>[~]# adduser
Username: gtinydns
Full name: gtinydns
Uid (Leave empty for default):
Login group [gtinydns]:
Login group is gtinydns. Invite gtinydns into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh rzsh nologin) [sh]: nologin
Home directory [/home/gtinydns]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]: yes
Lock out the account after creation? [no]:
Username : gtinydns
Password : <random>
Full Name : gtinydns
Uid : 1002
Class :
Groups : gtinydns
Home : /home/gtinydns
Home Mode :
Shell : /usr/sbin/nologin
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (gtinydns) to the user database.
adduser: INFO: Password for (gtinydns) is: rTsada2131sa1Mg
Add another user? (yes/no): no
Goodbye!
Maintenant, ajoutez le deuxième utilisateur:
<ceph>[~]# adduser
Username: gdnslog
Full name: gdnslog
Uid (Leave empty for default):
Login group [gdnslog]:
Login group is gdnslog. Invite gdnslog into other groups? []:
Login class [default]:
Shell (sh csh tcsh zsh rzsh nologin) [sh]: nologin
Home directory [/home/gdnslog]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]: yes
Lock out the account after creation? [no]:
Username : gdnslog
Password : <random>
Full Name : gdnslog
Uid : 1003
Class :
Groups : gdnslog
Home : /home/gdnslog
Home Mode :
Shell : /usr/sbin/nologin
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (gdnslog) to the user database.
adduser: INFO: Password for (gdnslog) is: jWsdad33aasdaFa0
Add another user? (yes/no): no
Goodbye!
Exécutez la commande suivante. Remplacez l'adresse IP par l'adresse de votre serveur Vultr.
<ceph>[~]# tinydns-conf gtinydns gdnslog /usr/local/etc/tinydns 108.61.100.100
Cette commande créera des répertoires, des fichiers et d'autres sous-répertoires dans /usr/local/etc/tinydns
. Il mettra également l'adresse IP du VPS /usr/local/etc/tinydns/env/IP
.
Créez le répertoire /service
.
<ceph>[~]# mkdir /service
Modifiez votre /etc/rc.conf
fichier:
<ceph>[~]# ee /etc/rc.conf
... et et ces lignes:
svscan_enable="YES"
svscan_servicedir="/service"
Enregistrez la configuration et démarrez le svscan
service:
<ceph>[~]# /usr/local/etc/rc.d/svscan start
Starting svscan.
Ensuite, allez dans ce répertoire:
<ceph>[~]# cd /usr/local/etc/tinydns/root
Modifiez le data
fichier:
<ceph>[root]# ee data
... et ajoutez quelques données DNS:
# domain1.com
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
&domain1.com::dns1.domain1.com.:3600
&domain1.com::dns2.domain1.com.:3600
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
# IP's (A records)
=dns1.domain1.com:108.61.210.99:3600
=dns2.domain1.com:89.201.163.42:3600
=mail1.domain1.com:89.201.163.42:3600
=mail2.domain1.com:85.114.41.8:3600
=www.domain1.com:108.61.178.194:3600
=test1.domain1.com:193.198.184.100:3600
=test2.domain1.com:108.61.178.215:3600
# Aliases
+domain1.com:108.61.178.194:3600
+smtp.domain1.com:89.201.163.42:3600
+imap.domain1.com:89.201.163.42:3600
Enregistrez le fichier et quittez.
Exécuter ls
:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data
Convertissez vos données texte au format de base de données:
<ceph>[root]# make
/usr/local/bin/tinydns-data
Exécutez à ls
nouveau:
<ceph>[root]# ls
Makefile add-alias add-childns add-host add-mx add-ns data data.cdb
Remarquez le data.cdb
fichier. Vous l'avez créé avec la make
commande.
Et encore une chose, créez un lien symbolique:
<ceph>[root]# ln -s /usr/local/etc/tinydns /service
Testez maintenant votre nouveau serveur DNS. Remplacez 108.61.178.110
par l'adresse IP de votre serveur.
<ceph>[root]# host www.domain1.com 108.61.178.110
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases:
www.domain1.com has address 108.61.178.194
Recherche de serveur de noms:
<ceph>[root]# host -t ns domain1.com 108.61.178.110
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases:
domain1.com name server dns1.domain1.com.
domain1.com name server dns2.domain1.com.
Recherche Mailserver MX:
<ceph>[root]# host -t mx domain1.com 108.61.178.110
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases:
domain1.com mail is handled by 10 mail1.domain1.com.
domain1.com mail is handled by 30 mail2.domain1.com.
Encore une fois pour être sûr:
<ceph>[root]# host mail1.domain1.com 108.61.178.110
Using domain server:
Name: 108.61.178.110
Address: 108.61.178.110#53
Aliases:
mail1.domain1.com has address 89.201.163.42
Toutes nos félicitations! Vous disposez d'un serveur DNS fonctionnel. Remplacez domain1.com
par votre domaine. Après chaque modification, exécutez la make
commande pour créer un nouveau data.cdb
fichier.
Explication du fichier de données:
Les enregistrements "A" commencent par un =
signe. Alias ou enregistrements CNAME avec un +
signe. Les serveurs de messagerie commencent par le @
signe. Serveurs de noms avec le &
signe.
Exemple 1:
=test1.domain1.com:193.198.184.100:3600
=
signifie enregistrement "A". test1.domain1.com
est le nom DNS, IP 193.198.184.100
est l'adresse dans laquelle se test1.domain1.com
résout et 3600 est le TTL (durée de vie).
Exemple 2:
# MX
@domain1.com::mail1.domain1.com.:10:3600
@domain1.com::mail2.domain1.com.:30:3600
Dans cet exemple, mail1
et mail2
sont des serveurs de messagerie pour domain1.com
. mail1
a la priorité 10 et la mail2
priorité 30. Cela signifie que les serveurs de messagerie essaieront d'abord de distribuer le courrier à mail1
. En cas d' mail1
échec, ils essaieront mail2
.
La ligne suivante marque le début des informations de zone. C'est requis.
Zdomain1.com:dns1.domain1.com.:ns.domain1.com.:2013101203:604800:86400:2419200:604800:3600
2013101203
numéro est utilisé lorsque vous avez un DNS secondaire sur un autre fournisseur. Lorsque vous changez le nombre en 2013101204
, le DNS secondaire saura qu'il y a des changements dans le DNS et récupérera les changements. Ceci est juste à titre informatif (vous auriez besoin du service de transfert DNS AXFR). Alternativement, vous pouvez copier et coller vos modifications DNS entre deux serveurs DJBDNS avec le rsync
programme.
Si vous avez PF Firewall sur votre serveur FreeBSD, ajoutez cette ligne pour autoriser les requêtes DNS:
pass quick proto {tcp, udp} from any to $me port 53 flags S/SA keep state