Routeur Linux

De NCad Wiki
Aller à la navigation Aller à la recherche

Routeur IPv4

Routage des paquets IPv4

  • Dé-commenter la ligne suivante dans le fichier /etc/sysctl.conf :
net.ipv4.ip_forward=1

Les modifications sont prises en compte après redémarrage de la machine.

Translation d'adresse

  • Activation de la translation d’adresse pour les machines du réseau 192.168.1.0/24 :

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth1 -j MASQUERADE

  • Il est également possible de choisir son adresse IPv4 de sortie si l'on dispose de plusieurs IPs publiques :

iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o ppp0 -j SNAT --to-source <ip_publique>

Redirection de port DNAT

iptables -t nat -A PREROUTING -p tcp -m tcp -d <ip_publique> -i ppp0 --dport 25 -j DNAT --to-destination 192.168.1.49:25

Sauvegarde des règles iptables

  • La sauvegarde des règles iptables en vigueur s'effectue depuis la commande iptables-save :

iptables-save > /etc/iptables.up.rules

  • Les règles étant sauvegardées dans le fichier iptables.up.rules, il est possible de recharger les règles manuellement grâce à la commande iptables-restore :

iptables-restore < /etc/iptables.up.rules

  • On peut aussi appliquer le chargement de ces règles à chaque démarrage / redémarrage de l'interface réseau en ajoutant la ligne suivante dans le fichier /etc/network/interfaces :
post-up iptables-restore < /etc/iptables.up.rules

Routage IPv6

Routage des paquets IPv6

  • Dé-commenter la ligne suivante dans le fichier /etc/sysctl.conf :
net.ipv6.conf.all.forwarding=1

Configuration sans état Stateless

  • Basée sur l'adresse MAC qui utilise le Neighbor Discovery Protocol (NDP). Radvd envoi la configuration IPv6 à intervalle régulier (route par défaut et préfixe) sans se soucier sur les machines distantes sont configurées.
  • Installation de radvd
  • Configuration de radvd
interface eth0
{
      AdvSendAdvert on;
      prefix 2001:3615:c0c0:c100::/64
      {
              AdvOnLink on;
              AdvAutonomous on;
              AdvRouterAddr on;
      };
      RDNSS fe80::b42e:1bff:fe13:aa4c {
      };
};

Configuration avec état Stateful

Configuration de Radvd

  • Radvd n'est ici utilisé uniquement pour annoncer le routeur de sortie (route par défaut).
interface eth0
{
       AdvSendAdvert on;
       AdvManagedFlag on;
       AdvOtherConfigFlag on;
       prefix 2001:3615:c0c0:c100::/64 {
               AdvAutonomous off;
               AdvRouterAddr on;
               MinRtrAdvInterval 3;
               MaxRtrAdvInterval 10;
       };
};
  1. AdvSendAdvert : Activation du daemon.
  2. AdvManagedFlag : Configuration IP gérée en Statefull / DHCPv6.
  3. AdvOtherConfigFlag : Autre informations fournis en Statefull / DHCPv6 (DNS, baux DHCP, domaine de recherche, ...).
  4. AdvAutonomous : Annonce du préfixe - désactivé dans le cas d'une configuration Statefull car géré par DHCPv6.
  5. AdvRouterAddr : Annonce de la passerelle de sortie / route par défaut.

Configuration du client DHCPv6

  • Le client DHCPv6 permettra de récupérer le prefixe IPv6 attribué par l'opérateur et ainsi de s'annoncer auprès de son serveur DHCP.
  • L'installation du client dhcpv6 s'effectue en installant le paquet .

sudo apt-get install wide-dhcpv6-client

  • /etc/wide-dhcpv6/dhcp6c.conf
interface ppp0 {
   send ia-pd 0;
};


id-assoc pd 0 {
   prefix-interface eth0 {
       sla-len 8;
       sla-id 1;
   };
};
  • Vérification

ip -6 route "2001:3615:c0c0:c101::/64 dev eth0 proto kernel metric 256
fc00:10:46::/64 dev eth0 proto kernel metric 256
fe80::/64 dev eth0 proto kernel metric 256
fe80::/10 dev ppp0 metric 1
fe80::/10 dev ppp0 proto kernel metric 256
default dev ppp0 metric 1024

Configuration du serveur DHCPv6

  • Installation de dhcpv6

sudo apt-get install wide-dhcpv6-server

  • /etc/wide-dhcpv6/dhcp6c.conf

option domain-name-servers fc00:10:46::46; option domain-name "net.glx";

interface eth0 {
       address-pool pool1 3600;
       address-pool pool2 3600;
};

pool pool1 {
       range 2001:3615:c0c0:c100::200 to 2001:3615:c0c0:c100::400;
};

pool pool2 {
       range fc00:10:46::200 to fc00:10:46::400;
};