332 lines
8.8 KiB
Markdown
332 lines
8.8 KiB
Markdown
**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 eth0 label eth0:3
|
||
# ip addr del 192.0.43.12/24 dev eth0
|
||
~~~
|
||
|
||
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
|
||
~~~
|
||
|
||
~~~
|
||
# systemctl enable networking
|
||
# systemctl start networking
|
||
~~~
|
||
|
||
### 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
|
||
~~~
|
||
|
||
## Migrer de networkd à ifup
|
||
|
||
À partir de Stretch, certaines machines sont installés d'office avec networkd (qui fait partie de systemd), on peut vouloir migrer à ifup (`/etc/network/interfaces`) pour plusieurs raisons (compatibilité, …).
|
||
Voici les opérations à faire :
|
||
|
||
- On récupère les informations avec `networkctl status nomInterface` et/ou `cat /etc/systemd/network/50-default.network` ;
|
||
- On construit le fichier `/etc/network/interfaces` avec les informations récupérés (se baser sur un existant par exemple) ;
|
||
- On désactive `systemd-networkd` et on redémarre le service `networking` :
|
||
|
||
~~~
|
||
# systemctl stop systemd-networkd.service; systemctl disable systemd-networkd.service; systemctl restart networking
|
||
~~~
|
||
|
||
Un exemple de conversion :
|
||
|
||
~~~
|
||
# networkctl status eno1
|
||
● 2: eno1
|
||
Link File: /etc/systemd/network/50-public-interface.link
|
||
Network File: /etc/systemd/network/50-default.network
|
||
Type: ether
|
||
State: routable (failed)
|
||
Path: pci-0000:03:00.0
|
||
Driver: igb
|
||
Vendor: Intel Corporation
|
||
Model: I210 Gigabit Network Connection
|
||
HW Address: 00:01:02:03:04:05 (Intel Corporate)
|
||
Address: 192.0.2.100
|
||
2001:db8::100
|
||
Gateway: 192.0.2.254 (Cisco Systems, Inc)
|
||
fe80::12bd:18ff:ffff:ffff (Cisco Systems, Inc)
|
||
DNS: 127.0.0.1
|
||
192.0.2.254
|
||
NTP: ntp.ovh.net
|
||
|
||
# cat /etc/systemd/network/50-default.network
|
||
# This file sets the IP configuration of the primary (public) network device.
|
||
# You can also see this as "OSI Layer 3" config.
|
||
# It was created by the OVH installer, please be careful with modifications.
|
||
# Documentation: man systemd.network or https://www.freedesktop.org/software/systemd/man/systemd.network.html
|
||
|
||
[Match]
|
||
MACAddress=00:01:02:03:04:05
|
||
|
||
[Network]
|
||
Description=network interface on public network, with default route
|
||
DHCP=no
|
||
Address=192.0.2.100/24
|
||
Gateway=192.0.2.254
|
||
#IPv6AcceptRA=false
|
||
NTP=ntp.ovh.net
|
||
DNS=127.0.0.1
|
||
DNS=192.0.2.254
|
||
Gateway=2001:41d0:0002:f5ff:ff:ff:ff:ff
|
||
|
||
[Address]
|
||
Address=2001:41d0:0002:f55c::/64
|
||
|
||
[Route]
|
||
Destination=2001:41d0:0002:f5ff:ff:ff:ff:ff
|
||
Scope=link
|
||
~~~
|
||
|
||
On reporte dans `/etc/network/interfaces` :
|
||
|
||
~~~
|
||
# This file describes the network interfaces available on your system
|
||
# and how to activate them. For more information, see interfaces(5).
|
||
|
||
# The loopback network interface
|
||
iface lo inet loopback
|
||
|
||
# The primary network interface
|
||
auto eno1
|
||
iface eno1 inet static
|
||
address 192.0.2.100/24
|
||
gateway 192.0.2.254
|
||
|
||
iface eno1 inet6 static
|
||
address 2001:db8::100/64
|
||
gateway 2001:41d0:0002:f5ff:ff:ff:ff:ff
|
||
post-up /sbin/ip -6 route add 2001:41d0:0002:f5ff:ff:ff:ff:ff dev eno1
|
||
post-up /sbin/ip -6 route add default via 2001:41d0:0002:f5ff:ff:ff:ff:ff
|
||
~~~
|
||
|
||
On désactive/stop networkd et on relance le service networking :
|
||
|
||
~~~
|
||
# systemctl stop systemd-networkd.service; systemctl disable systemd-networkd.service; systemctl restart networking
|
||
~~~
|
||
|
||
## Haute Performance
|
||
|
||
Optimisations pour la haute performance :
|
||
|
||
* conntrack -L ; net.nf_conntrack_max=262144
|
||
* net.core.somaxconn=1024
|
||
* net.ipv4.tcp_max_syn_backlog=1024
|
||
* net.ipv4.tcp_tw_reuse=1, net.ipv4.tcp_fin_timeout=30, net.ipv4.ip_local_port_range=2000 65000
|
||
* relire <https://vincent.bernat.ch/fr/blog/2014-tcp-time-wait-state-linux>
|
||
|
||
|
||
## 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.
|