Tags

arm arpaname bin_sh blocage blosxom bsd bsdfrance cblog certification chroot cluster dg834 dhcp diffusion dns dnsmasq domU dovecot fail-over fail2ban firefox fossil freebsd ftp git guruplug install ipv6 jail kernel kimsufi lex libre linutop liste makefile mikrotik ml150 mohawk nanojail netbook netbsd nginx ntp ntp.org openbsd openntpd openrd opensmtpd openwrt orke pkgng poudriere privee proxy pxe python rc.conf rescue reverse rmll routage route rrdcgi sendmail serial sieve sjail sl2009 ssd sshd symon unbound update usb var_empty vimperator world xen yacc zfs

Powered by

blOg
maRkdown
awK
shEll

17/10/2015

[ ipv6 routage ]

201510171800 ipv6 routage

Le réseau ipv6 de mon chez moi de moi que j'ai personnellement moi-même

Mon FAI qui a tout compris me fournit un /61 soit 8 /64 (il n'a pas encore compris les bonnes pratiques d'attribution d'adresses ipv6). J'en ai fait l'usage suivant:

pouetbox 2a01:e35:zzz:f660::1/64
 |
mikrotik eth1 2a01:e35:zzz:f660::2/64
 |
 vlan10 2a01:e35:zzz:f661::2/64
 |
cisco sg300
 |   |   |
 |   |   linutop vlan630 2a01:e35:zzz:f663:214:bff:fe80:337b/64 (re0)
 |   |
 |   dell n7010 vlan640 2a01:e35:zzz:f664:40:15::1/64 (alc0)
 |      |
 |      tap6 2a01:e35:zzz:f665:40:15::1/96
 |
mac mini
 |  |  |
 |  |  vlan630 2a01:e35:zzz:f663::1/64 (gem0)
 |  |
 |  vlan640 2a01:e35:zzz:f664::1/64 (gem0)
 |
 gem0 2a01:e35:zzz:f661::22/64

2a01:e35:zzz:f660::/64

Le réseau entre ma pouetbox et mon routeur mikrotik. Oui, un /64 pour connecter 2 machines. Pas moyen de faire autrement.

2a01:e35:zzz:f661::/64

Le réseau entre mon routeur mikrotik et mon mac mini openbsd. Oui, un /64 pour connecter 2 machines. Mais c'est un prétexte pour faire mumuse avec les vlans (parce que cette engeance de cisco sg300 a beau être "ipv6 compliant", ce n'est qu'un client ipv6 tout juste capable d'accepter *UNE SEULE* adresse) et utiliser pf afin de sécuriser les autres /64.

Mes 2 fonera (dns) sont aussi dans ce réseau.

2a01:e35:zzz:f663::/64

Les machines de ce réseau n'offrent aucun service (excepté du ssh, oeuf corse).

2a01:e35:zzz:f664::/64

Les machines de ce réseau font de la virtualisation. Je réserve à chacune un /96 tiré de 2a01:e35:zzz:f665::/64. Exemple de configuration de 2a01:e35:zzz:f664:X:Y::1/64:

ospf

Le mac mini fait office de passerelle pour les réseaux 2a01:e35:zzz:f663::/64 et 2a01:e35:zzz:f663::/64. Il annonce ces réseaux par ospf:

$ cat /etc/ospf6.conf
redistribute connected

area 0.0.0.0 {
        interface gem0 {
        }
}

Côté mikrotik:

Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, o - ospf, b - bgp, 
U - unreachable 
 #      DST-ADDRESS             GATEWAY                  DISTANCE
 0 A S  ::/0                    fe80::f6ca:e5ff:fe5b:...        1
 1 ADC  2a01:e35:zzz:f660::/64  ether1-gateway                  0
 2 ADC  2a01:e35:zzz:f661::/64  vlan10                          0
 3 ADo  2a01:e35:zzz:f663::/64  fe80::20d:93ff:fe62:b...      110
 4 ADo  2a01:e35:zzz:f664::/64  fe80::20d:93ff:fe62:b...      110
 6 ADC  2a01:e35:zzz:f666::/64  wlan2                           0

ripng

Les machines de virtualisation annoncent leur /96 par ripng. Exemple d'un netbsd:

$ grep route6d /etc/rc.conf
route6d=YES
route6d_flags="-n -N lo0,alc0 -O 2a01:e35:zzz:f665:40:15::/96,tap6"

Le mac mini écoute les annonces ripng en provenance de vlan640:

$ grep route6d /etc/rc.conf.local
route6d=YES
route6d_flags="-N gem0,vlan630"

Reste à annoncer en ospf le réseau 2a01:e35:zzz:f665::/64:

$ cat /etc/ospf6.conf
redistribute connected
redistribute 2a01:e35:zzz:f665::/64

area 0.0.0.0 {
        interface gem0 {
        }
}

Extrait du pf.conf pour laisser passer toutes ces annonces:

# ospf
pass in quick on egress proto ospf
# routed
pass in quick on vlan inet6 proto udp to port 521

Trop beau pour être vrai

Seul petit point noir: route6d d'OpenBSD n'est pas fonctionnel (version 5.8 comprise). Mais c'est sans compter avec jca@ qui a magistralement corrigé le problème:

http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/usr.sbin/route6d/route6d.c.diff?r1=1.67&r2=1.68

Un grand merci à lui.

Et en vrai ça marche ?

Côté mikrotik:

Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, o - ospf, b - bgp, 
U - unreachable 
 #      DST-ADDRESS              GATEWAY                  DISTANCE
 0 A S  ::/0                     fe80::f6ca:e5ff:fe5b:...        1
 1 ADC  2a01:e35:zzz:f660::/64  ether1-gateway                  0
 2 ADC  2a01:e35:zzz:f661::/64  vlan10                          0
 3 ADo  2a01:e35:zzz:f663::/64  fe80::20d:93ff:fe62:b...      110
 4 ADo  2a01:e35:zzz:f664::/64  fe80::20d:93ff:fe62:b...      110
 5 ADo  2a01:e35:zzz:f665:40... fe80::20d:93ff:fe62:b...      110
 6 ADC  2a01:e35:zzz:f666::/64  wlan2                           0

Depuis une machine extérieure:

dsx@blade>ping6 -c 3 2a01:e35:zzz:f664:40:15:0:1
PING6(56=40+8+8 bytes) 2a02:27d0:0:dead:beef::205 --> 2a01:e35:zzz:f664:40:15:0:1
16 bytes from 2a01:e35:zzz:f664:40:15:0:1, icmp_seq=0 hlim=53 time=24.744 ms
16 bytes from 2a01:e35:zzz:f664:40:15:0:1, icmp_seq=1 hlim=53 time=24.181 ms
16 bytes from 2a01:e35:zzz:f664:40:15:0:1, icmp_seq=2 hlim=53 time=24.472 ms

--- 2a01:e35:zzz:f664:40:15:0:1 ping6 statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 24.181/24.466/24.744/0.230 ms

Alors, c'est pas fun l'ipv6 ?


Lien vers ce billet

02/10/2015

[ freebsd rc.conf ]

201510021800 freebsd rc.conf

Configurer FreeBSD

Pour autant que je me souvienne, la configuration d'un système FreeBSD s'est toujours faite en éditant un unique fichier: /etc/rc.conf.

Nom de la machine, configuration des interfaces réseau, type de clavier, listes des services à démarrer, tout y est, tout y passe.

Pourtant, depuis l'importation du système NetBSD 1.5 RC il y a plus de 14 ans, il était possible de séparer la configuration dans différents fichiers au sein du répertoire /etc/rc.conf.d/.

532 	load_rc_config()
533 	{
534 	        _command=$1
535 	        if [ -z "$_command" ]; then
536 	                err 3 'USAGE: load_rc_config command'
537 	        fi
538
539 	        . /etc/rc.conf
540 	        if [ -f /etc/rc.conf.d/"$_command" ]; then
541 	                . /etc/rc.conf.d/"$_command"
542 	        fi
543 	}

Les afficionados des systèmes de contrôle de version (rcs, cvs, subversion, git, mercurial ...) et/ou des gestionnaires de configuration (puppet, chef, ansible, salt ...) y verront je pense un certain intéret:

La configuration d'un portable pourrait se faire comme suit:

/etc/rc.conf.d/hostname
hostname="n150.bsdsx.fr"

/etc/rc.conf.d/network
wlans_ath0="wlan0"
ifconfig_wlan0="WPA DHCP"

/etc/rc.conf.d/ntpd
ntpd_enable="YES"

/etc/rc.conf.d/powerd
powerd_enable="YES"

/etc/rc.conf.d/sendmail
sendmail_enable="NONE"

/etc/rc.conf.d/syscons
keymap="fr.iso.acc.kbd"

Mais depuis la révision 270392, il est possible de découper la configuration d'un service encore plus finement:

1292 	if [ -f /etc/rc.conf.d/"$_name" ]; then
1293 	        debug "Sourcing /etc/rc.conf.d/$_name"
1294 	        . /etc/rc.conf.d/"$_name"
1295 	elif [ -d /etc/rc.conf.d/"$_name" ] ; then
1296 	        local _rc
1297 	        for _rc in /etc/rc.conf.d/"$_name"/* ; do
1298 	                if [ -f "$_rc" ] ; then
1299 	                        debug "Sourcing $_rc"
1300 	                        . "$_rc"
1301 	                fi
1302 	        done
1303 	fi

La configuration d'un serveur pourrait se faire comme suit:

/etc/rc.conf.d/hostname
hostname="n150.bsdsx.fr"

/etc/rc.conf.d/ntpd
ntpd_enable="YES"

/etc/rc.conf.d/sendmail
sendmail_enable="NONE"

/etc/rc.conf.d/syscons
keymap="fr.iso.acc.kbd"

/etc/rc.conf.d/routing
defaultrouter="192.0.2.1"
ipv6_defaultrouter="2001:db8:0:dead:beef::1"

/etc/rc.conf.d/ipfw/ipfw
firewall_enable="YES"
firewall_type="/etc/rc.conf.d/ipfw/rules"

/etc/rc.conf.d/ipfw/log
firewall_logging="YES"
firewall_logif="YES"

/etc/rc.conf.d/network/cloned
cloned_interfaces="lo1 lo2"

/etc/rc.conf.d/network/bce0
ifconfig_bce0="inet 192.0.2.2 netmask 255.255.255.0"
ifconfig_bce0_ipv6="inet6 2001:db8:0:dead:beef::2 prefixlen 64"

/etc/rc.conf.d/network/lo1
ifconfig_lo1="inet 172.16.0.1 netmask 255.255.0.0"

/etc/rc.conf.d/network/lo2
ifconfig_lo2_ipv6="inet6 2001:db8:1337::1 prefixlen 64"

/etc/rc.conf.d/sshd/sshd
sshd_enable="YES"

/etc/rc.conf.d/sshd/flags
sshd_flags="-o UsePAM=no -o AllowGroups=wheel -o PermitRootLogin=without-password -o ListenAddress=localhost"

Et oui, attention aux routes par défaut, c'est bien dans routing et pas dans network.


Lien vers ce billet