Tags

bin_sh fail-over fail2ban freebsd install ipv6 jail kimsufi nginx ntp ntp.org rrdcgi symon var_empty

Powered by

blOg
maRkdown
awK
shEll

14/11/2008

[ ntp ipv6 ntp.org ]

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 http://www.pouf.org/categories/3-IPv6 et plus précisément http://www.pouf.org/archives/95-Public-IPv6-NTP-Server.html.

J'ai donc décidé de monter mon(es) serveur(s) de temps.

6tèmes

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 ip

Dans 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-server

Serveur ntp:

# opkg install openntpd
# cat /etc/ntp.conf
server ntp6.bsdsx.fr
server ntp6.space.net
server ntp.via.ecp.fr
server ntp2.cines.fr

C'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:

# 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 loss

Et 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:

# 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 ms

Reste à 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:

A venir:

Merci à toute l'équipe d'OpenWRT pour leur fantastique travail et à www.pouf.org qui m'a incité à rejoindre ntp.org.


Lien vers ce billet