mercredi 14 mai 2014

Linux - Le routeur du pauvre



Oyé oyé les amis !

Avant de commencer, j'apporte une précision à mon titre d'article quelque peu provocateur. En effet de nombreux routeurs physiques (pour ne pas dire tous) fonctionnent avec un OS ayant une base linux. Donc aujourd'hui je vais vous montrer qu'il est très simple de transformer votre PC linux en routeur ! Si, si ! Pas besoin de dépenser des milles et des cents dans un routeur matériel, linux le fait pour vous !

En effet, il vous faut:
  • 1 PC (par exemple celui qui prend la poussière dans le grenier)
  • 2 cartes réseaux (c'est bien sûr un minimum, sinon on va pas router grand chose...à moins de tagguer les trames et de relier la carte sur un port du switch en mode trunk mais je ne vais pas compliquer la chose ici).
  • 1 OS Linux

Et maintenant ?

Pour commencer, il faut configurer les IP sur chacune des cartes réseaux. Dans un second temps il faut activer le forwarding. Pour cela, deux méthodes s'offrent à vous: soit de façon temporaire soit de façon permanente.


  • Activation temporaire (valable jusqu'au prochain redémarrage)
(ceci est un exemple à saisir en ligne de commande)
ifconfig eth0 192.168.1.1 255.255.255.0
ifconfig eth1 10.0.0.1 255.0.0.0

Ensuite il faut modifier le fichier "ip_forward" en mettant la valeur à 1
echo 1 > /proc/sys/net/ipv4/ip_forward

  • Activation permanente
1. Modification du fichier "/etc/network/interfaces" ou "/etc/sysconfig/network-scripts/ifcfg-ethX" suivant la distribution utilisée :

---> Si fichier "/etc/network/interfaces"
# interface réseau 1
    auto eth0
    iface eth0 inet static
        address 192.168.1.1
        netmask 255.255.255.0
        network 192.168.1.0
        broadcast 192.168.1.255

# interface réseau 2
    auto eth1
    iface eth1 inet static
        address 10.0.0.1
        netmask 255.0.0.0
        network 10.0.0.0
        broadcast 10.255.255.255



--> Si fichier "/etc/sysconfig/network-scripts/ifcfg-ethX"

Sur le fichier "ifcfg-eth0":
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.1
BROADCAST=192.168.1.255
HWADDR=00:11:22:33:44:55
NETWORK=192.168.1.0
ONBOOT=yes
TYPE=Ethernet

et sur le fichier "ifcfg-eth1":
DEVICE=eth1
BOOTPROTO=static
IPADDR=10.0.0.1
BROADCAST=10.255.255.255
HWADDR=aa:bb:cc:dd:ee:ff
NETWORK=10.0.0.0
ONBOOT=yes
TYPE=Ethernet


2. Autorisation du forwarding en éditant le fichier "/etc/sysctl.conf" ou "/etc/sysconfig/network" suivant la distribution utilisée :
---> Si fichier "/etc/sysctl.conf":
net.ipv4.ip_forward = 1

---> Si fichier "/etc/sysconfig/network":
FORWARD_IPV4=true

3. Redémarrer les services réseau
service network restart


Résumé

Au final, notre petit Linux nous permet de faire la passerelle entre nos deux réseaux. Avouez que cela est plus trivial, non ? On pourra bien sûr (et il est fortement recommandé de) filtrer les flux. Par exemple avec IPTable.... (d'ailleurs je pense que ce sera l'objet d'un futur article).


Une alternative ?

Oui, enfaite il existe une distribution toute prête, il s'agit de: ZeroShell. N'exagérons rien non plus puisqu'elle permet d'offrir plein d'autre service réseau comme le DNS, le DHCP, Radius et j'en passe. Pour plus d'information, voici le lien vers le site officiel : www.zeroshell.net