27 octobre 2014

Configurer un raspberry pi en coupure

Comment configurer un raspberry pi pour qu’il soit en coupure entre deux réseaux ?

 
Voici la proposition d’infrastructure: le raspberry pi est placé entre deux routeurs. On configurera deux IP sur l’interface.

schema rapberry pi

A quoi ça sert?

A vous de voir …

Configuration des interfaces et du routage

Comme nous venons de le dire, on va configurer deux IP sur l’interface eth0 du raspberry pi.

Voici le fichier de configuration de l’interface:

pi@raspberrypi ~ $ cat /etc/network/interfaces 
auto lo

iface lo inet loopback

auto eth0
iface eth0 inet static
	address 192.168.1.10
	netmask 255.255.255.0
	gateway 192.168.1.1 

auto eth0:0
iface eth0:0 inet static
	address 192.168.3.1
	netmask 255.255.255.0

pi@raspberrypi ~ $ 

Dans notre cas, la passerelle par défaut est configurée vers le routeur relié à internet.

On active le routage:

Tout d’abord, en live (attention au reboot …)

root@raspberrypi:/home/pi# echo 1 > /proc/sys/net/ipv4/ip_forward

Puis de manière plus persistante:

pi@raspberrypi ~ $ sudo vi /etc/sysctl.conf 

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Voici la table de routage:

pi@raspberrypi ~ $ netstat -r -n
Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic   MSS Fenêtre irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.3.0     0.0.0.0         255.255.255.0   U         0 0          0 eth0
pi@raspberrypi ~ $ 

Translation d’adresse

Pour le plaisir et pour ne pas avoir à configurer de route sur le routeur relié à internet, On ajoute en plus de la translation d’adresse.

pi@raspberrypi ~ $ sudo iptables -t nat -A POSTROUTING -s 192.168.3.2 -o eth0 -j MASQUERADE

Conclusion

Voilà, on a un raspberry en coupure entre deux réseaux.

Bonus: installation de squid en proxy http transparent

Installation de squid

root@raspberrypi:/media# apt-get install squid3

Configuration de squid

On précise le mode transparent après la directive http_port et le réseau local autorisé pour le protocole http.

root@raspberrypi:/home/pi# vi /etc/squid3/squid.conf
http_port 3128 transparent
acl localnet src 192.168.3.0/24
http_access allow localnet

Squid est redémarré (/etc/init.d/squid3 restart).

Redirection du trafic vers squid

Et on oublie pas de rediriger le trafic http vers le port 3128 utilisé par squid.

root@raspberrypi:/home/pi# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128

Vérification

Les logs des sites visités sont dans le fichier access.log

2 commentaires pour “Configurer un raspberry pi en coupure”

  1. reivilo1998 dit :

    Bonjour,

    Sujet intéressant mais je me pose une question quant à la connectique utilisée.

    En effet, par défaut, le raspberry pi ne possède qu’une carte réseau. Donc comment on fait pour le connecter à deux routeurs ?
    1 / On lui ajoute une carte réseau ?
    2 / On met un switch entre le routeur 192.168.1.1 et le rapsberry pi ? Et dans ce cas comment on configure ce switch ?

    Je n’ai pas de super connaissances en réseau mais ces éclaircissements m’aideraient beaucoup.

    Merci par avance.

    • clem dit :

      Bonjour,

      Dans l’exemple, j’utilise un alias pour la carte eth0. Dans la conf, il y a donc une IP pour eth0 et une IP pour eth0:0. Dans ce cas, aucune sécurité sur le lien (problème de spoofing, …): c’est pour du test ou de la supervision de réseau perso.

      Plus sérieusement, on pourrait aussi ajouter une interface réseau via un port usb. Il y aurait dans ce cas deux interfaces réseau bien distinctes. A vérifier la reconnaissance du matériel par le système d’exploitation.

      Une troisième solution avec un switch: on configure deux vlans sur le switch. Et on fait passer les deux réseaux sur le lien entre le switch et le raspberry avec un tag 802.1q. Dans ce cas, l’interface du raspberry aura deux IPs dans sa conf.

      Il y a peut être encore d’autres solutions…