8.8 KiB
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/oucat /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 servicenetworking
:
# 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, 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.