web-dev-qa-db-fra.com

Mise en réseau avec plusieurs Nics

J'ai un serveur Ubuntu 12.04 avec 4 adaptateurs réseau. Je dois utiliser chaque NIC pour une fonction distincte. Voici une description de ma configuration:

etho = 10.234.0.2 netmask = 255.255.255.252 gw = 10.234.0.1 This is on vlan 234
eth1 = 10.235.0.2 netmask = 255.255.255.252 gw = 10.235.0.1 This is on vlan 235
eth2 = 10.236.0.2 netmask = 255.255.255.252 gw = 10.236.0.1 This is on vlan 236
eth3 = 10.237.0.2 netmask = 255.255.255.252 gw = 10.237.0.1 This is on vlan 237

Je dois pouvoir diriger le trafic vers et depuis les adresses IP individuelles pour des services Web distincts. Par exemple, 10.235.0.2 est un site Web, 10.236.0.2 est un site différent et 10.237.0.2 est un troisième site. La 1ère adresse IP est pour la gestion du serveur.

Je pense que le problème est un problème de routage, mais je suis suffisamment nouveau pour Linux pour ne pas comprendre parfaitement les tenants et les aboutissants des capacités de routage.

Voici ce qui se trouve dans mon fichier /etc/network/interfaces:

auto lo
iface lo inet loopback

# WWW Management
auto eth0
iface eth0 inet static
address 10.234.0.2
netmask 255.255.255.252
gateway 10.234.0.1
nameseervers 10.230.1.103, 10.230.70.70

# WWW
auto eth1
iface eth1 inet static
address 10.235.0.2
netmask 255.255.255.252
gateway 10.235.0.1

# WTB
#auto eth2
#iface eth2 inet static
#address 10.236.0.2
#netmask 255.255.255.252
#gateway 10.236.0.1

# Moodle
#auto eth3
#iface eth3 inet static
#address 10.237.0.2
#netmask 255.255.255.252
#gateway 10.237.0.1

J'ai désactivé les deux derniers réseaux simplement pour dissiper toute confusion.

Merci d'avance pour toute l'aide, les commentaires et les suggestions.

16
user168645

Après avoir fait une configuration normale de seulement eth0, je suis revenu et j'ai ajouté config pour eth1. Avec juste eth0, la table de routage était:

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

Mais une fois que j'ai évoqué eth1, l'ordre des instructions de routage par défaut déterminait quelle interface était toujours utilisée. Comme indiqué ci-dessous, il arrive de choisir la route eth1 vers la passerelle 192.168.1.65.

# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.1.65 dev eth1 metric 100
default via 192.168.0.97 dev eth0 metric 100

une seule déclaration de passerelle

Le premier problème peut être la route supplémentaire par défaut "via 192.168.1.65". Il apparaît si la définition eth1 dans/etc/network/interfaces contient une instruction "gateway 192.168.1.65". Donc, supprimez toute instruction de passerelle supplémentaire et rebondissez l'interface:

# ifdown eth1
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

configurer une nouvelle table de routage

Créez une nouvelle table de routage séparée contenant une route par défaut appropriée pour tout le trafic sortant de eth1. Le numéro de la table ici n'est pas important; 101 n'est tout simplement pas la table de routage principale. Faites cela avec une commande 'post-up' sur la configuration eth1 dans/etc/network/interfaces. Ajoutez un seul post-up sur eth1; Ne l'ajoutez à aucune des sous-interfaces eth1:.

post-up ip route add default via 192.168.1.65 dev eth1 table 101

Bounce eth1. La table de routage principale reste inchangée et la table 101 contiendra la route par défaut via 192.168.1.65 si eth1 est actif.

# ifdown eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101   (ie, table is empty, no output)
# ifup eth1
# ip route show
192.168.0.96/27 dev eth0 proto kernel scope link src 192.168.0.126
192.168.1.64/27 dev eth1 proto kernel scope link src 192.168.1.93
default via 192.168.0.97 dev eth0 metric 100

# ip route show table 101
default via 192.168.1.65 dev eth1

nouvelle règle de routage

Ajoutez une règle de routage pour utiliser le tableau 101 afin de sélectionner un itinéraire par défaut pour les paquets devant sortir eth1.

# ip rule add from 192.168.1.64/27 lookup 101
# ip rule show
0:     from all lookup local
32765: from 192.168.1.64/27 lookup 101
32766: from all lookup main
32767: from all lookup default

Ajoutez également la règle au fichier /etc/network/interfaces:

post-up ip rule add from 192.168.1.64/27 lookup 101

Maintenant, assurez-vous d'ajouter un nettoyage pour supprimer la route et la règle lorsque l'interface tombe en panne:

post-down ip rule del from 192.168.1.64/27
post-down ip route del default via 192.168.1.65 table 101

[EDIT pour Ubuntu 16.04+] Comme indiqué ici et du test que j'ai fait à partir de cette aide, ip route2 a changé sa structure de commandes. Pour que le travail fonctionne, vous devrez vous adapter un peu, dans l'ordre indiqué par le man ippoints .

up ip route add default table 101 dev eth1 via 192.168.1.65
up ip rule add from 192.168.1.64/27 lookup 101
down ip rule del from 192.168.1.64/27
down ip route del default table 101 via 192.168.1.65

Ou vous vous retrouverez après une commande ifdown - ifup avec un message d'erreur @ifdown (message standard indiquant que les périphériques ne sont pas correctement configurés) et @ifup l'absence de route dans la table 101.

15
Craig Constantine