Après avoir posté il y a quelques années un article sur la livebox fibre, son côté instable, et les manipulations nécessaire pour pouvoir s’en débarrasser, je vous propose dans cet article la même opération pour la livebox fibre de Sfr/Neuf

Donc, comment se débarrasser de la neufbox fibre, et la remplacer par un routeur à soi sous Linux, mode d’emploi …

Il y a quelques années, j’avais eu la chance d’avoir une des premières livebox fibre au bureau que ma boite louait à Paris.

Comme toutes les livebox, le bout de triangle en plastique qui nous servait de routeur plantait régulièrement, ce qui gênait considérablement notre travail. Nous avions alors réussi à nous en débarrasser, et cela a donné lieu à cet article sur la livebox fibre : comment s’en débarrasser.

Depuis, nous avons déménagé, et le local que nous occupons désormais n’a plus la fibre orange (sniff) mais la fibre sfr/neuf/cegetel/vivendi/universal …

neufbox_nb5_fibre.jpg
La Neufbox Fibre N5

Même problème : il advient que la neufbox marche plutôt bien sauf si l’on utilise vraiment le réseau (lire « faire beaucoup de nombreux sockets que ce soit en UDP ou en TCP »). Dans ce cas, des connexions aussi simple qu’un bon vieux FTP descendent à 5Ko/s… Quand on est habitué à la fibre, un tel débit est bien évidemment inacceptable.

Cet article de blog vous explique donc comment ne plus utiliser la sfrbox (ou neufbox) fibre pour pouvoir mettre en lieu et place votre propre routeur sous Linux (ou tout autre système d’exploitation libre).

Autre avantage de cette solution : il vous permet de disposer de votre adresse IP publique sur un équipement à vous, et pas seulement sur la neufbox (même si celle-ci vous propose diverses options de port entrant, cela peu poser problème …)

Description des éléments techniques

Tout d’abord, nommons les éléments en présence : Le boitier carré avec une grosse led rouge ou verte en haut au centre, c’est la « neufbox ». Le boitier carré blanc avec l’arrivée fibre et une sortie ethernet cuivre, c’est le « gpon ». Nous nommerons aussi « routeur » la machine à vous, qui possèdera 2 interfaces réseau ethernet, et sur laquelle vous aurez installé Linux (dans mon cas une debian Lenny, mais cela marchera aussi avec une ubuntu desktop ou ubuntu server)

neufbox_gpon.jpg neufbox_nb5_cote.jpg

Nous allons donc supprimer la neufbox, mais garder bien évidemment le boitier GPON, nécessaire à l’accès à Internet. Notez que je n’ai jamais fait planter ce boitier : il semble faire suffisamment peu d’opérations sur vos contenus pour ne pas leur poser de problème particulier…

L’installation logicielle

vous allez donc commencer par profiter de l’accès à Internet fourni par votre neufbox pour installer les packages qui vont bien sur votre routeur :


aptitude install dhcp3-server dhcp3-client iptables procps bind9 linux-igd

Une fois cela fait, nous allons configurer le client dhcp sur eth0, l’interface réseau que nous brancherons entre le routeur et le gpon, à la place de la neufbox :

dans /etc/dhcp3/dhclient.conf, commentez les lignes qui ne commencent pas par # (pour cela ajoutez un # en début de ligne) et ajoutez les lignes suivantes :


option classless-static-routes code 121 = array of ip-address, ip-address ;
send vendor-class-identifier "neufbox5_NB5-SER-r1_NB5-MAIN-R2.2.2";
supersede domain-name-servers 127.0.0.1;
request subnet-mask, routers, domain-name, domain-name-servers, host-name, ntp-servers, broadcast-address, root-path, merit-dump, classless-static-routes;

Cela configure le client dhcp pour envoyer à neuf une requête dhcp « qui leur plait » ce qui provoquera de la part de Neuf/SFR une réponse positive à la demande d’IP de notre client DHCP. Sans ces paramètres (notamment la liste des request et le vendor-class-identifier) cela ne fonctionnera pas.

Ensuite, configurez votre interface réseau pour passer en dhcp, et prendre l’IP de la neufbox côté réseau local, donc dans /etc/network/interfaces :


auto lo eth0 eth1
iface lo inet loopback

# Interface vers NEUF sur le GPON :
iface eth0 inet dhcp

# Interface vers le réseau interne :
iface eth1 inet static
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
# Ces lignes activent le NAT vers Internet :
up /sbin/iptables -t nat -D POSTROUTING -s 192.168.1.0/24 -j MASQUERADE || true
up /sbin/iptables -t nat -D POSTROUTING -s 192.168.1.0/24 -j MASQUERADE || true
up /sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE || true
# Cette ligne lancera un script de pare-feu si besoin (voir plus loin dans cet article)
up /etc/network/iptables_on.sh || true

Une fois cela fait, nous allons configurer le noyau linux pour qu’il serve de routeur. Cela se passe dans /etc/sysctl.conf, où vous mettrez la ligne suivante :


net.ipv4.ip_forward=1

Dernière étape, servir le DHCP sur le réseau local. Pour cela, rendez-vous dans /etc/dhcp3/dhcpd.conf, commentez toutes les lignes qui ne le sont pas (ajoutez un # au début des lignes) et ajoutez le bloc suivant :


default-lease-time 14400;
max-lease-time 86400;
authoritative;
log-facility local7;

subnet 192.168.1.0 netmask 255.255.255.0
option routers 192.168.1.1;
range 192.168.1.10 192.168.1.254;
option domain-name-servers 192.168.1.1;

et voilà !

Théoriquement, il suffit de brancher le tout comme il faut, puis redémarrer les services suivants pour que cela prenne effet :


/etc/init.d/procps restart
/etc/init.d/networking restart
/etc/init.d/dhcp3-server restart

et vous obtiendrez sur eth0 une adresse IP publique avec un accès à Internet que vous servirez sur eth1.

Si votre routeur sert aussi divers services, comme Samba, daap ou avahi, je vous conseille de poser aussi le script de pare-feu suivant. Il configure aussi le suivi des connections FTP, IRC et SIP, ce qui permet d’utiliser ces protocoles à travers le NAT sans problème.

Mettez-le dans /etc/network/iptables_on.sh et rendez-le exécutable via chmod a+x /etc/network/iptables_on.sh :


#!/bin/sh

# This interface is the one on the Internet :
INET_IFACE="eth0"

# Purge all firewall rules :
iptables -F
iptables -t nat -F

# Load firewall connection tracking modules :
modprobe nf_conntrack_ftp
modprobe nf_conntrack_irc
modprobe nf_conntrack_sip

# Set firewall policy to "accept" any connection :
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# Deny Samba :
iptables -A INPUT -i $INET_IFACE -p tcp --dport 445 -j DROP
iptables -A INPUT -i $INET_IFACE -p tcp --dport 139 -j DROP
iptables -A INPUT -i $INET_IFACE -p udp --dport 138 -j DROP
iptables -A INPUT -i $INET_IFACE -p udp --dport 137 -j DROP

# Deny Avahi :
iptables -A INPUT -i $INET_IFACE -p udp --dport 5353 -j DROP
# Deny Daap :
iptables -A INPUT -i $INET_IFACE -p tcp --dport 3689 -j DROP

# Masquerade outgoing connection :
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

Dernière chose, si vous souhaitez que votre router se comporte correctement avec vos logiciels utilisant uPNP, le package linux-igd que nous avons installé plus tôt fera l’affaire. Pour le configurer, procédez ainsi :

dans /etc/default/linux-igd remplissez les lignes comme suit :


EXTIFACE=eth0

INTIFACE=eth1

ALLOW_MULTICAST=yes

et relancez le service via /etc/init.d/linux-igd restart

Voilà, c’est tout. Si vous avez des questions sur d’autres paramètres utiles à votre connexion, ou sur d’autres façon de pouvoir configurer votre neufbox fibre, n’hésitez pas !

Et le téléphone ? Et la télé ?

Bien évidemment, pour l’instant, cela ne vous permet pas de faire tourner la télévision ou le téléphone de votre accès à Internet, puisque vous n’utilisez plus la neufbox.

Cependant, dans mes investigations, j’ai trouvé comment utiliser le compte téléphonique SIP, dont la neufbox demande les paramètres à Neuf lors de son démarrage …

Aussi un prochain article traitera de la téléphonie, et peut-être un dernier pour la télévision (espérons que nous pourrons voir les chaînes de télévision sur un PC : pour des enregistrements ou de la rediffusion, ce serait parfait 🙂 )

Catégories : français