Table of Contents

OpenWrt

OpenWrt est une distribution GNU/Linux minimaliste pour matériel embarqué. Historiquement développée pour remplacer le firmware des routeurs basés sur des systèmes sur une puce Broadcom.

Paramétrage IPv4

Pour des raisons évidentes, IPv4 est entièrement pris en charge dans le micrologiciel par défaut.

Protocole "static", IPv4

Nom Type Obligatoire Par défaut Description
ipaddr adresse ip oui, si aucun ip6addr n'est défini. (aucun) Adresse IP. [openwrt 12.09] Il peut s'agir d'une liste de ipaddr , c'est-à-dire : plusieurs adresses IP seront affectées à l'interface. Si, au lieu d'une liste, plusieurs ipaddr sont spécifiés comme options, seul le dernier est appliqué.
netmask masque de réseau oui, si aucun ip6addr n'est défini (aucun) Masque de réseau
gateway adresse IP non (aucun) Passerelle par défaut
broadcast adresse IP non (aucun) Adresse de diffusion (générée automatiquement si elle n'est pas définie)
dns liste des adresses ip non (aucun) serveur(s) DNS
dns_metric entier non 0 métrique DNS
dns_search liste de noms de domaine non (aucun) Liste de recherche pour la recherche de nom d'hôte
metric entier non 0 Spécifie la métrique de route par défaut à utiliser

Protocole "dhcp"

Nom Type Obligatoire Par défaut Description
broadcast booléen non 0 Activer l'indicateur de diffusion dans les requêtes DHCP, requis pour certains FAI, par ex.
ipaddr addresse IP non (aucun) Adresse IP à demander au serveur DHCP
hostname chaîne non (aucun) Nom d'hôte à inclure dans les requêtes DHCP
clientid chaîne non system default Remplacer l'identifiant client dans les requêtes DHCP
vendorid chaîne non system default Remplacer la classe de fournisseur dans les requêtes DHCP
dns liste d'adresses IP non (aucun) Compléter le(s) serveur(s) DNS attribué(s) par DHCP, ou n'utiliser que ceux-ci si peerdns vaut 0
peerdns booléen non 1 Utiliser le(s) serveur(s) DNS fourni(s) par DHCP
defaultroute booléen non 1 S'il faut créer une route par défaut via la passerelle reçue
customroutes chaîne non (aucune) Liste séparée par des espaces des routes supplémentaires à insérer via la passerelle reçue
metric entier non 0
classlessroute booléen non 1 Indique s'il faut demander l'option « route sans classe » (option DHCP 121) — disponible depuis LEDE r2001
reqopts chaîne non (aucun) Liste séparée par des espaces d'options DHCP supplémentaires à demander au serveur
sendopts chaîne non (aucun) Liste séparée par des espaces d'options DHCP supplémentaires à envoyer au serveur. Syntaxe : option:valeur où option est soit un code entier, soit un nom symbolique tel que nom d'hôte.
norelease booléen non 0 Si défini NE PAS libérer l'adresse DHCP lors de l'arrêt de l'interface
zone firewall zone non (aucune) Zone de firewall à laquelle cette interface doit être ajoutée

Ces paramètres sont gérés en partie par netifd (dans interface.c) et en partie par un script shell dans lib/netifd/proto/dhcp.sh.

OpenWrt utilise dnsmasq et odhcpd pour servir DNS/DHCP et DHCPv6 par défaut.

Dnsmasq sert de serveur DNS de mise en cache en aval s'annonçant aux clients DHCP. Cela permet de meilleures performances et une meilleure gestion de la fonctionnalité DNS sur le réseau local. Chaque requête DNS reçue qui n'est pas actuellement en cache est transmise aux serveurs DNS en amont.

Lorsqu'on effectue un routage entre deux interfaces (c'est-à-dire qu'elles ne sont pas pontées), on constate que les clients situés à l'extrémité du réseau qui envoient des requêtes DHCP n'obtiennent aucune réponse, car la diffusion DHCP ne peut pas être routée entre les interfaces.

Cela peut être résolu sans configurer de serveur DHCP indépendant pour le sous-réseau distant en configurant dnsmasq pour qu'il agisse comme un relais DHCP. Dans cette configuration, il écoute les requêtes DHCP normalement, les transmet à un serveur DHCP distant, puis toute réponse qu'il reçoit est rediffusée dans le sous-réseau d'origine.

Cette configuration permet à un seul serveur DHCP de gérer les attributions d'adresses sur un vaste réseau divisé en plusieurs sous-réseaux.

Pour configurer le serveur DHCP (activé par défaut), ajouter la section suivante à /etc/config/dhcp:

config relay 'id'
        option interface 'lan'
        option local_addr '1.1.1.1'
        option server_addr '2.2.2.2'
Nom Type Obligatoire Par défaut Description
id chaîne oui (aucun) Un nom unique pour la section, qui doit être différent de tous les autres noms de section.
interface chaîne oui (aucun) Nom de l'interface OpenWRT (PAS le nom du périphérique réseau) où se trouve le serveur DHCP de destination.
local_addr chaîne oui (aucun) La propre adresse IP de ce périphérique OpenWRT sur le sous-réseau distant, où il écoutera les requêtes DHCP.
server_addr chaîne oui (aucun) Adresse IP du serveur DHCP en amont accessible via le réseau donnée par l'option d'interface. Les réponses DHCP récupérées sur le sous-réseau distant seront relayées vers ce serveur. Cette adresse doit être acheminée correctement (c'est-à-dire que l'on peut pinger à partir de la ligne de commande OpenWRT).

Configuration en amont pour les interfaces WAN

Les sections suivantes décrivent la configuration des connexions IPv4 au FAI ou à un routeur en amont.

Pour une liaison montante avec une connectivité IPv4 native, on peut simplement utiliser la configuration par défaut.

# uci show network
...
network.wan=interface
network.wan.device='eth0.2'
network.wan.proto='dhcp'
...
# cat /etc/config/network
...
config interface 'wan'
	option device 'eth0.2'
	option proto 'dhcp'
...

Si une interface est configurée en tant que client dhcp, la route par défaut reçue par dhcp sera la seule répertoriée et supprimera les autres routes/métriques par défaut définies pour d'autres interfaces si ces interfaces viennent “avant” l'interface avec dhcp en termes de valeurs «device». Par exemple:

config interface 'wan'
    option device 'eth0'
    option proto 'static'
    ...
config interface 'wan2'
    option device 'eth1'
    option proto 'dhcp'
    ...

L'interface avec dhcp vient après (car eth1 vient après eth0) et va écraser les routes par défaut mises en place par l'interface « wan ». Alors que ce n'est pas vrai au contraire. Si on a:

config interface 'wan'
    option device 'eth0'
    option proto 'dhcp'
    ...
 
config interface 'wan2'
    option device 'eth1'
    option proto 'static'
    ...

Les deux routes par défaut configurées par wan et wan2 apparaîtront dans la table de routage.

Configuration en aval pour les interfaces LAN

Pour une liaison descendante avec connectivité IPv4, on peut simplement utiliser la configuration par défaut

# uci show network
network.lan=interface
network.lan.device='br-lan'
network.lan.proto='static'
network.lan.netmask='255.255.255.0'
network.lan.ip6assign='60'
network.lan.ipaddr='192.168.1.1'
# /etc/config/network
config interface 'lan'
	option device 'br-lan'
	option proto 'static'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option ipaddr '192.168.1.1'
 
config device 'lan_dev'
	option name 'br-lan'
	option type 'bridge'
	list ports 'lan3'
	list ports 'lan4'
...

Exemples de configuration réseau

Vous trouverez ci-dessous quelques exemples de configurations d'interface spéciales non standard.

Pont sans IP

config interface 'example'
	option proto   'none'
	option device  'br-lan'
	option auto    '1'
 
config device 'example_dev'
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'
	list ports 'eth1'

DHCP sans passerelle par défaut

config interface 'example'
	option proto   'dhcp'
	option device  'eth0'
	option defaultroute' '0'

DHCP et IPv6

config interface 'example'
	option proto     'dhcp'
	option device    'eth0'
 
config alias
	option interface 'example'
	option proto     'static'
	option ip6addr   '2001:0DB8:100:F00:BA3::1'

Configuration IP statique avec plusieurs serveurs DNS

config interface 'example'
	option proto     'static'
	option device    'eth0'
	option ipaddr    '192.168.1.200'
	option netmask   '255.255.255.0'
	list   dns       '192.168.1.1'
	list   dns       '192.168.10.1'

Configuration IP statique et passerelle par défaut avec métrique non nulle

config interface 'example'
	option proto     'static'
	option device    'eth0'
	option ipaddr    '192.168.1.200'
	option netmask   '255.255.255.0'
	option dns       '192.168.1.1'
 
config route
	option interface 'example'
	option target    '0.0.0.0'
	option netmask   '0.0.0.0'
	option gateway   '192.168.1.1'
	option metric    '100'

Plusieurs adresses IP

Affectation de plusieurs adresses IP à la même interface :

config interface 'foo'
	option device 'eth1'
	list ipaddr '10.8.0.1/24'
	list ipaddr '10.9.0.1/24'
	list ip6addr 'fdca:abcd::1/64'
	list ip6addr 'fdca:cdef::1/64'

Spécification de plusieurs interfaces partageant le même appareil :

config interface 'foo'
	option device 'eth1'
	option ipaddr '10.8.0.1'
	option netmask '255.255.255.0'
	option ip6addr 'fdca:abcd::1/64'
 
config interface 'foo2'
	option device 'eth1'
	option ipaddr '10.9.0.1'
	option netmask '255.255.255.0'
	option ip6addr 'fdca:cdef::1/64'