Dans /var/named/etc/named.conf
options { version ""; // remove this to allow version queries listen-on { any; }; listen-on-v6 { any; }; // allow-recursion { clients; }; }; logging { //category lame-servers { null; }; category lame-servers { default_syslog; }; category update { default_syslog; }; category security { default_syslog; }; }; // Standard zones // zone "." { type hint; file "standard/root.hint"; }; zone "localhost" { type master; file "standard/localhost"; allow-transfer { localhost; }; }; zone "127.in-addr.arpa" { type master; file "standard/loopback"; allow-transfer { localhost; }; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" { type master; file "standard/loopback6.arpa"; allow-transfer { localhost; }; }; // "VeriSign patch" zone "com" { type delegation-only; }; zone "net" { type delegation-only; }; // Specific zones zone "narf.ssji.net" { type master; file "master/narf.ssji.net.zone"; }; zone "0.10.in-addr.arpa" { type master; file "master/0.10.in-addr.arpa"; };
$ORIGIN narf.ssji.net. $TTL 21600 ; 6 hours @ IN SOA mudrublic.narf.ssji.net. shtrom-narf-ssji.ssji.net. ( 2005060541 ; serial 3600 ; refresh (1 hour) 1800 ; retry (30 minutes) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) NS ns1.narf.ssji.net. $ORIGIN narf.ssji.net. mudrublic A 10.0.0.1 shmoldu A 10.0.0.2 ns1 CNAME mudrublic wpad CNAME mudrublic $ORIGIN flying.narf.ssji.net. mudrublic A 10.0.1.1 ns1 CNAME mudrublic wpad CNAME mudrublic www CNAME shmoldu
$ORIGIN 0.10.in-addr.arpa. $TTL 6h @ IN SOA mudrublic.narf.ssji.net. shtrom-narf-ssji.ssji.net. ( 2005060501 ; serial 1h ; refresh 30m ; retry 7d ; expiration 1h ) ; minimum NS ns1.narf.ssji.net. $ORIGIN 0.0.10.in-addr.arpa. 1 PTR mudrublic.narf.ssji.net. 2 PTR shmoldu.narf.ssji.net. $ORIGIN 1.0.10.in-addr.arpa. 1 PTR mudrublic.flying.narf.ssji.net.
Named est chroot()
é et setuid()
é. On donne tous les fichiers du chroot à l'user named.
$ sudo chown -R named /var/named
Il n'y a rien à faire pour qu'il marche grâce aux fichiers (/var/named)+/etc/rndc.conf
Add in /etc/dhclient.conf
.
prepend domain-name-servers 127.0.0.1;
La clé à générer est du même format que celle pour rndc
, on utilise rndc-confgen
:
$ rndc-confgen -a -c ~/dhcp_updater.key -k DHCP_UPDATER wrote key file "~/dhcp_updater.key"
On a besoin d'un ISC-DHCP 3.0:
$ sudo pkg_add isc-dhcp-server-3.0.2.tgz $ sudo mv /usr/sbin/dhcpd /usr/sbin/dhcpd.old $ sudo ln -s /usr/local/sbin/dhcpd /usr/sbin/dhcpd
Dans /etc/rc.conf
:
dhcpd_flags=“”
→ dhcpd_flags=“-q”
On ajoute la clé dhcp_updater.key
au début de /etc/dhcpd.conf
et on en change les droits:
$ sudo chmod 600 /etc/dhcpd.conf
Dans /etc/dhcpcd.conf
:
ddns-update-style interim; ignore client-updates; key DHCP_UPDATER { algorithm hmac-md5; secret "xxx"; }; zone narf.ssji.net. { primary 127.0.0.1; key DHCP_UPDATER; } zone 0.10.in-addr.arpa. { primary 127.0.0.1; key DHCP_UPDATER; }
Les zones à mettre à jour:
shared-network 10.0.0.0 { ddns-domainname "narf.ssji.net"; } shared-network 10.0.1.0 { ddns-domainname "flying.narf.ssji.net"; (...) }
Rajouter le contenu de dhcp_updater.key
dans /var/named/etc/named.conf
:
$ sudo sh -c "cat ~/dhcp_updater.key >> /var/named/etc/named.conf"
Rajouter aussi cette la ligne allow-update
dans chaque zone devant être mise à jour.
allow-update { key DHCP_UPDATER; };
le ddns-update à tendance à pourrir les fichiers de zones qu'il modifie, il vaut mieux penser à en faire des sauvegardes.
On veut être un Authoritative server pour narf.ssji.net
par rapport à l'extérieur.
On veut discriminer les gens à leur IP pour savoir si il viennent du réseau local ou non. On créé une ACL qu'on rajoute dans le named.conf
. On autorise ensuite la récursion (demande au DNS de résoudre lui même des noms sur lesquels il n'est pas autoritatif) seulement pour les client locaux.
acl local { 127.0.0.1; 10.0.0.0/24; 10.0.1.0/24; ::1; 2001:7a8:4cc2:100::/64; 2001:7a8:4cc2:101::/64; }; options { (...) allow-recursion { "local"; }; };
On sépare ensuite, le named.conf
en deux views:
local
pour les machines internes qui résoud tout et dans laquelle les ddns-updates
sont autoriséesoutside
pour tout le reste qui ne résoud que ce pour quoi elle est authoritativeview "local" { match-clients {"local"; }; (...) zone "narf.ssji.net" { type master; file "master/narf.ssji.net.zone.local"; allow-update { key DHCP_UPDATER; }; }; (...) }; view "outside" { match-clients {"any"; }; zone "narf.ssji.net" { type master; file "master/narf.ssji.net.zone"; }; };
Elle contient les adresses IPv4 locales non routables. Il s'agit de l'ancienne narf.ssji.net.zone
.
Elle contient les pointeurs vers l'adress IPv4 du FAI, la seule qui ait cours en dehors du réseau local…
$ORIGIN narf.ssji.net. $TTL 21600 ; 6 hours @ IN SOA mudrublic.narf.ssji.net. shtrom-narf-ssji.ssji.net. ( 2005061812 ; serial 3600 ; refresh (1 hour) 1800 ; retry (30 minutes) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) NS ns1.narf.ssji.net. $ORIGIN narf.ssji.net. mudrublic A 81.56.148.2 shmoldu A 81.56.148.2 ns1 CNAME mudrublic www CNAME shmoldu $ORIGIN flying.narf.ssji.net. mudrublic A 81.56.148.2 ns1 CNAME mudrublic
On a (grâce au tunnel) des adresses en 2001:7a8:4cc2:100:/65
(100
et 101
selon l'interface).
On peut rajouter les associations de type 'AAAA' et 'A6' directement dans les fichiers de zones. Comme ce sera deux fois exactement les même infos (local
et outside
), on va plutôt faire un $INCLUDE
On rajoute donc dans narf.ssji.net.zone
et narf.ssji.net.zone.local
la ligne suivante
$INCLUDE master/ip6.narf.ssji.net
Et dans le fichier ip6.narf.ssji.net
on peut mettre toutes nos adresses IPv6.
$ORIGIN narf.ssji.net. @ A6 48 0:0:0:100:: netv6.whymper.ssji.net. mudrublic AAAA 2001:7a8:4cc2:100::1 A6 64 ::1 @ ;\[x0000000000000001] PTR mudrublic faterv AAAA 2001:7a8:4cc2:100:240:f4ff:fe75:c005 A6 64 ::240:f4ff:fe75:c005 @ ;\[x0240F4FFFE75C005] PTR faterv itadakamisu AAAA 2001:7a8:4cc2:100:290:27ff:fe5b:83e7 A6 64 ::290:27ff:fe5b:83e7 @ ;\[x029027FFFE5B83E7] PTR itadakamisu paperbox AAAA 2001:7a8:4cc2:100:200:c0ff:fe3c:36d4 A6 64 ::200:c0ff:fe3c:36d4 @ ;\[x0200C0FFFE3C36D4] PTR paperbox schtrnick AAAA 2001:7a8:4cc2:100:208:c7ff:fe0c:82ab A6 64 ::208:c7ff:fe0c:82ab @ ;\[x0208C7FFFE0C82AB] PTR schtrnick shmoldu AAAA 2001:7a8:4cc2:100:250:fcff:fe24:a183 A6 64 ::250:fcff:fe24:a183 @ ;\[x0250FCFFFE24A183] PTR shmoldu ; KsK elena AAAA 2001:7a8:4cc2:100:211:24ff:fe79:a67a A6 64 ::211:24ff:fe79:a67a @ ;\[x021124FFFE79A67A] PTR elena $ORIGIN flying.narf.ssji.net. @ A6 48 0:0:0:101:: netv6.whymper.ssji.net. mudrublic AAAA 2001:7a8:4cc2:101::1 A6 64 ::1 @ ;\[x0000000000000001] PTR mudrublic schtrnick AAAA 2001:7a8:4cc2:101:209:b5ff:fe8b:234a A6 64 ::209:b5ff:fe8b:234a @ ;\[x0209B5FFFE8B234A] PTR schtrnick ; KsK elena AAAA 2001:7a8:4cc2:101:211:24ff:fe92:3493 A6 64 ::211:24ff:fe92:3493 @ ;\[x021124FFFE923493] PTR elena
Elle vont toutes les deux contenir les mêmes informations, au moins à la base. Pour éviter la redondance, on les mets dans un fichier qui sera $INCLUDE
é.
Dans le fichier ip6.0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2
:
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR mudrublic.narf.ssji.net. f.d.6.6.4.5.e.f.f.f.1.a.8.0.2.0 IN PTR drublic.narf.ssji.net. 4.d.6.3.c.3.e.f.f.f.0.c.0.0.2.0 IN PTR paperbox.narf.ssji.net. 3.8.1.a.4.2.e.f.f.f.c.f.0.5.2.0 IN PTR shmoldu.narf.ssji.net. 5.0.0.c.5.7.e.f.f.f.4.f.0.4.2.0 IN PTR faterv.narf.ssji.net. b.a.2.8.c.0.e.f.f.f.7.c.8.0.2.0 IN PTR schtrnick.narf.ssji.net. 7.e.3.8.b.5.e.f.f.f.7.2.0.9.2.0 IN PTR itadakamisu.narf.ssji.net. ; KsK a.7.6.a.9.7.e.f.f.f.4.2.1.1.2.0 IN PTR elena.narf.ssji.net.
Et dans ip6.1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2
:
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 IN PTR mudrublic.flying.narf.ssji.net. a.4.3.2.b.8.e.f.f.f.b.5.9.0.2.0 IN PTR schtrnick.flying.narf.ssji.net. ; KsK 3.9.4.3.2.9.e.f.f.f.4.2.1.1.2.0 IN PTR elena.flying.narf.ssji.net.
On rajoute pour chaque vue.
zone "0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.int" { type master; file "master/0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.int"; }; zone "1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.int" { type master; file "master/1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.int"; };
La zone 0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.int
:
$ORIGIN 0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.in-addr.ip6.int $TTL 21600 ; 6 hours @ IN SOA mudrublic.narf.ssji.net. shtrom-narf-ssji.ssji.net. ( 2005061801 ; serial 3600 ; refresh (1 hour) 1800 ; retry (30 minutes) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) NS ns1.narf.ssji.net. $INCLUDE master/ip6.0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2
Et 1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.in-addr.ip6.int
:
$ORIGIN 1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.int. $TTL 21600 ; 6 hours @ IN SOA mudrublic.ssji.net. shtrom-narf-ssji.ssji.net. ( 2005061805 ; serial 3600 ; refresh (1 hour) 1800 ; retry (30 minutes) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) NS ns1.narf.ssji.net. $INCLUDE master/ip6.1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2
On rajoute pour chaque vue.
zone "0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.arpa" { type master; file "master/0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.arpa"; }; zone "1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.arpa" { type master; file "master/1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.arpa"; };
La zone 0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.arpa
:
$ORIGIN 0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.in-addr.ip6.arpa $TTL 21600 ; 6 hours @ IN SOA mudrublic.narf.ssji.net. shtrom-narf-ssji.ssji.net. ( 2005061801 ; serial 3600 ; refresh (1 hour) 1800 ; retry (30 minutes) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) NS ns1.narf.ssji.net. $INCLUDE master/ip6.0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2
Et 1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.in-addr.ip6.arpa
:
$ORIGIN 1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.arpa. $TTL 21600 ; 6 hours @ IN SOA mudrublic.ssji.net. shtrom-narf-ssji.ssji.net. ( 2005061805 ; serial 3600 ; refresh (1 hour) 1800 ; retry (30 minutes) 604800 ; expire (1 week) 3600 ; minimum (1 hour) ) NS ns1.narf.ssji.net. $INCLUDE master/ip6.1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2
On va autoriser les serveurs de Ssji à être secondaires pour la zone narf.ssji.net
. On leur créé une nouvelle ACL:
acl ssji { 62.212.108.4; 213.41.140.194; 2001:7a8:3030::face; 2001:7a8:4cc2::1; }; (...) view "outside" { (...) zone "narf.ssji.net" { (...) allow-transfer { ssji; }; }; zone "0.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.int" { (...) allow-transfer { ssji; }; }; zone "1.0.1.0.2.c.c.4.8.a.7.0.1.0.0.2.ip6.int" { (...) allow-transfer { ssji; }; }; };
On rajoute dans le SOA de toutes nos zone
NS whymper.ssji.net. NS zorglub.ssji.net.
De même, on va servir de serveurs secondaire à Ssji.
view "outside" { (...) zone "ssji.net" { type slave; masters { 62.212.108.48; }; allow-transfer { ssji; }; }; };