14/11/2008
200811140800 ntp ipv6 ntp.org
NTP et IPV6
6tuation
Je faisais mumuse avec de l'ipv6 sur une Fonera 2200 / OpenWRT lorsque le besoin s'est fait sentir
d'un serveur de temps ipv6 ready. Mon ami google m'a fait (justement) connaitre
J'ai donc décidé de monter mon(es) serveur(s) de temps.
6tèmes
- freebsd
- openwrt
Kimsufi / FreeBSD 7.0
Rien de particulier, le système de base comprenant un ntpd:kimsufi# grep ntpd /etc/rc.conf ntpd_enable="YES" ntpd_sync_on_start="YES" ntpd_flags="-L -p /var/run/ntpd.pid -f /var/db/ntpd.drift" kimsufi# cat /etc/ntp.conf server ntp.ovh.net server ntp.via.ecp.fr server 0.fr.pool.ntp.org server 2.fr.pool.ntp.fr driftfile /var/db/ntp.drift
ntp.ovh.net est un serveur de niveau 1 (GPS).
Extrait du pf.conf:
kimsufi# grep ntp /etc/pf.conf
pass quick on $ext_if inet proto { udp,tcp } from any to any port ntp
pass quick on $ext_if inet6 proto { udp,tcp } from any to any port ntp
Une fois le dns correctement renseigné on peut ajouter notre serveur à pool.ntp.org. La procédure se résume à la création d'un compte et un formulaire vous permet d'ajouter votre(vos) serveur(s) au pool (vérifiez votre pf.conf avant, vous gagnerez du temps :)
Fonera 2200 / OpenWRT (snapshot du 20081104)
Connectivité ipv6:# opkg install kmod-ipv6 # opkg install ip6tables # opkg install kmod-ip6tables # opkg install ipDans le but d'avoir une machine ipv6 only, je remplace dropbear par openssh. Cette manipulation ne peut se faire qu'avec une console série:
# opkg install openssh-client # opkg install openssh-serverServeur ntp:
# opkg install openntpd # cat /etc/ntp.conf server ntp6.bsdsx.fr server ntp6.space.net server ntp.via.ecp.fr server ntp2.cines.frC'est parti:
# /etc/init.d/ntp start
ip6tables
En simplifiant, ipv6 affecte au moins deux adresses ip à chaque interface: une limitée au réseau local (fe80.....) et une autre publique, routable et accessible depuis n'importe où.
Il faut donc filtrer les accès aux machines ipv6:
# cat /etc/init.d/firewall6
#!/bin/sh /etc/rc.common
# Copyright (C) 2008 OpenWrt.org
START=46
PRIVATE=fe80::aaaa:bbbb:cccc:dddd
start() {
# raz des regles
ip6tables -F
ip6tables -X
# on DROP tout le traffic entrant
ip6tables -P INPUT DROP
# pas de filtre sur l'interface lo
ip6tables -A INPUT -i lo -j ACCEPT
# pas de filtre sur l'adresse lien-local
ip6tables -A INPUT -d $PRIVATE -j ACCEPT
# on laisse entrer icmpv6
ip6tables -A INPUT -p icmpv6 -j ACCEPT
# les reponses NTP
ip6tables -A INPUT -p udp --sport ntp -j ACCEPT
}
stop() {
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
}
Les puristes d'ip[6]tables me pardonneront (je l'espère :) ce script un peu trop simpliste.
La Fonera est désormais accessible uniquement sur son adresse privée. Si on tente,
depuis une machine située sur le même lien:
dsx@mini>ping6 -c 1 fe80::aaaa:bbbb:cccc:dddd PING6(56=40+8+8 bytes) fe80::1%lo0 --> fe80::aaaa:bbbb:cccc:dddd ping6: sendmsg: Network is unreachable ping6: wrote fe80::aaaa:bbbb:cccc:dddd 16 chars, ret=-1 ^C --- fe80::aaaa:bbbb:cccc:dddd ping6 statistics --- 1 packets transmitted, 0 packets received, 100.0% packet lossEt là, c'est le drame. Notre ami google nous apprend rapidementt qu'avec ipv6, en cas d'utilisation d'adresse locale il faut préciser l'interface de sortie:
dsx@mini>ping6 -c 1 fe80::aaaa:bbbb:cccc:dddd%ne3 PING6(56=40+8+8 bytes) fe80::wwww:xxxx:yyyy:zzzz%ne3 --> fe80::aaaa:bbbb:cccc:dddd%ne3 16 bytes from fe80::aaaa:bbbb:cccc:dddd%ne3, icmp_seq=0 hlim=64 time=1.566 ms --- fe80::aaaa:bbbb:cccc:dddd%ne3 ping6 statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 1.566/1.566/1.566/NaN msReste à vérifier notre serveur ntp:
# /etc/init.d/ntp stop # ntpd -d reply from 2001:41d0:1:34b6::1: offset -0.011423 delay 0.082885, next query 9s reply from 2001:660:6301:f13::2:1: offset -0.005595 delay 0.092083, next query 7s reply from 2002:8ac3:802d:1243::71: offset -0.014533 delay 0.096260, next query 5s reply from 2001:608::1000:1: offset 0.001858 delay 0.100866, next query 5s reply from 2002:8ac3:802d:1243::71: offset -0.010519 delay 0.086758, next query 8s reply from 2001:608::1000:1: offset -0.199183 delay 0.498697, next query 6s reply from 2001:660:6301:f13::2:1: offset 0.003043 delay 0.070645, next query 6s
Mer6
Possédant plusieurs Fonera, j'ai décidé d'utiliser ces mini routeurs wifi pour découvrir ipv6. Cette démarche a été riche d'enseignements:
- participation au pool ntp.org
- ipv6
- ip6tables
A venir:
- dnmasq (ipv6 compliant :)
- ipv6 + ipsec sur le lien wifi
- un antique routeur adsl Netgear supporté par OpenWRT
- passer le réseau local en ipv6 only (pas facile avec un iPhone :)
Merci à toute l'équipe d'OpenWRT pour leur fantastique travail et à www.pouf.org qui m'a incité à rejoindre ntp.org.
![Validate my Atom 1.0 feed [Valid Atom 1.0]](/valid-atom.png)
![Validate my RSS feed [Valid RSS]](/valid-rss-rogers.png)