**Cette page a été importée automatiquement de notre ancien wiki mais n'a pas encore été révisée.**

# Howto Reseau sous Debian

## Configuration IP fixe

La configuration d'une interface réseau avec une IP fixée se passe dans
le fichier _/etc/network/interfaces_. Voici un exemple simple :

~~~
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address 192.0.43.10
        netmask 255.255.255.0
        gateway 192.0.43.254
~~~

Pour l'IPv6 il faut rajouter :

~~~
iface eth0 inet6 static
         address 2001:500:88:200::10
         netmask 48
         up /bin/ip route add 2000::0/3 via 2001:500:88:200::254
~~~

Si besoin d'exécuter des commandes après l'activation de l'interface (classiquement
des ajouts de routes), on utilise l'option _up_. Par exemple :

~~~
auto eth0
iface eth0 inet static
        address 192.0.43.10
        netmask 255.255.255.0
        gateway 192.0.43.254
        up /sbin/route add -net 192.0.42.0/24 gw 192.0.43.242
~~~

Pour ajouter des interfaces virtuelles, toujours via _/etc/network/interfaces_ on fera :

~~~
auto eth0:0
iface eth0:0 inet static
        address 192.0.43.11
        netmask 255.255.255.0
~~~

Note 1 : certains hébergeurs comme OVH préconisent une configuration un peu différente, voir [wiki:ServeurOVH#IPFailOver]

Note 2 : dans certains cas particuliers (comme le besoin de préciser le nom de l'interface
dans une commande _iptables_) on souhaite avoir un nom d'interface virtuelle sans les ":".
Il faudra donc passer par la commande _ip_ (voir ci-dessous).

Mais tout cela se gère également dynamiquement via les commande _ifconfig_ et _ip_.
Quelques exemples :

~~~
# ifconfig eth0 add 192.0.43.11 netmask 255.255.255.0
# ip addr add 192.0.43.12/24 dev eth0
# ip addr add 192.0.43.13/24 dev label eth0:3
# ip addr del 192.0.43.12/24
~~~

Attention, avec la commande _ip_ le résultat ne sera pas visible avec _ifconfig_
si aucun label du type eth0:N n'est donné à l'interface ; on ne verra l'adresse qu'avec un :

~~~
# ip addr show
~~~

Notons que dans certains cas particuliers (comme le besoin de préciser le nom de l'interface
dans une commande _iptables_) on souhaite avoir un nom d'interface virtuelle sans les ":".
On utilisera donc simplement un label sans ":" :

~~~
# ip addr add 192.0.43.13/24 dev label eth00
# iptables -t nat -A POSTROUTING -o eth00 [...]
~~~

## Configuration serveur(s) DNS

Le fichier _/etc/hosts_ permet d'indiquer manuellement des enregistrements DNS, du type :

~~~
127.0.0.1 ad.doubleclick.net
~~~

Pour note, ces enregistrements sont par défaut prioritaires sur les réponses des serveurs DNS
(et pour rappel, les commandes dig et host n'utilisent PAS _/etc/hosts_).

La configuration du (ou des) serveur(s) DNS s'effectue dans le fichier _/etc/resolv.conf_.
Voici un exemple classique :

~~~
search example.com
nameserver 192.0.42.53
nameserver 192.0.43.53
options timeout:2 attempts:2
~~~

Pour des précisions sur les options possibles : _man resolv.conf_

Note : si l'on utilise Postfix, il faut le redémarrer suite à un changement dans _/etc/resolv.conf_ (car il est chrooté par dédaut et il gère sa propre copie dans /var/spool/postfix)

## Bridge

Pour créer un bridge :

~~~
# brctl addbr br0
# brctl addif br0 eth0
# ifconfig eth0 up
~~~

Au niveau /etc/network/interfaces on aura ainsi :

~~~
auto eth0
iface eth0 inet manual

auto br0    
iface br0 inet manual
        bridge_ports eth0
~~~

Et l'on listera les infos d'un bridge via :

~~~
# brctl show
bridge name     bridge id               STP enabled     interfaces
br0            8000.001e0beac6c0       no               eth0
~~~

Pour avoir un bridge vide :

~~~
auto br0    
iface br0 inet manual
        bridge_ports none
~~~


## VLAN

~~~
# aptitude install vlan
# modprobe 8021q
~~~

Pour ajouter dans le VLAN 42

~~~
# vconfig add eth0 42
# ifconfig eth0.42
~~~

Le fichier /etc/network/interfaces :

~~~
# cat /etc/network/interfaces
auto eth0.42
iface eth0.42 inet static
        address 192.0.43.10
        netmask 255.255.255.0
        gateway 192.0.43.254
~~~

### Gestion des VLAN avec iproute

L'utilitaire ip (paquet iproute) permet aussi de gérer les VLAN.
Exemple :


~~~
# ip link add link eth0 name eth0.42 type vlan id 42
# ip addr add 192.168.1.1/24 dev eth0.42
# ip link set dev eth0.42 up
~~~


## Désactiver IPv6

De façon temporaire :

~~~
# sysctl -w net.ipv6.conf.all.disable_ipv6=1
~~~

De façon définitive :

~~~
# echo net.ipv6.conf.all.disable_ipv6=1 >> /etc/sysctl.conf
~~~

<https://vincent.bernat.im/fr/blog/2014-tcp-time-wait-state-linux.html>

## Changer son adresse MAC

~~~
# ifconfig eth0 hw ether 01:23:45:67:89:0a
~~~

## FAQ

### Bascule réseau à chaud

Si l'on fait une modification réseau sur un serveur distant il est important de ne pas perdre la main.
Voici une méthode possible en utilisant [screen](HowtoScreen), exemple avec la bascule sur un bridge :

~~~
# cp /etc/network/interfaces /var/backups/
# vim /etc/network/interfaces
[...]

# screen -S network -dm bash -c "sleep 300; cp /var/backups/interfaces /etc/network/; systemctl stop networking; systemctl start networking"
# screen -S reboot -dm bash -c "sleep 600; reboot"
# systemctl restart networking; ip a d 192.0.2.42/24 dev eth0; ip a a 192.0.2.42/24 dev br0; ip r d default via 192.0.2.1 dev eth0; ip r a default via 192.0.2.1 dev br0
~~~

Ainsi, si l'on perd la main, la machine revient accessible en quelques minutes.
Si l'on ne perd pas la main, il faut stopper les commandes lancées dans les screens.
