#OpenWrt
{{INLINETOC}}
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 | Spécifie la métrique de route à utiliser pour la route par défaut et les routes personnalisées
| 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'
```
* Le dernier DNS listé sera le premier à être choisi pour la résolution de nom.
* Il faut redémarrer le service pour appliquer la nouvelle configuration DNS : `service dnsmasq restart`
###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'
```