Mise en réseau avec plusieurs cartes réseau

16

J'ai un serveur Ubuntu 12.04 avec 4 adaptateurs réseau. J'ai besoin d'utiliser chaque carte réseau 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

J'ai besoin de pouvoir diriger le trafic vers et depuis les adresses IP individuelles pour des services Web distincts. c'est-à-dire que 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 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 avoir une compréhension complète des tenants et aboutissants des capacités de routage.

Voici ce qui est dans mon /etc/network/interfacesdossier:

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 juste pour apaiser la confusion.

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

user168645
la source

Réponses:

15

Après avoir fait une configuration normale de juste eth0, je suis revenu et j'ai ajouté la configuration 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 apporté eth1, l'ordre des instructions de route par défaut a déterminé 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 instruction de passerelle

Le premier problème peut être la route par défaut supplémentaire «via 192.168.1.65». Il y apparaît si la définition eth1 dans / etc / network / interfaces a une instruction "gateway 192.168.1.65". Supprimez donc toute instruction de passerelle supplémentaire et faites rebondir 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 table ici n'est pas important; 101 n'est tout simplement pas la table de routage principale. Faites-le 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 est 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 pour sélectionner une route par défaut pour les paquets qui doivent 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 /etc/network/interfacesfichier:

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

Assurez-vous maintenant d'ajouter du nettoyage pour supprimer l'itinéraire 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 d'après le test que j'ai fait depuis cette aide, ip route2 a changé sa structure de commandes. Pour faire du travail, vous devrez vous adapter un peu pour faire dans l'ordre comment les man ip points .

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 pour dire que les périphériques ne sont pas correctement configurés), et @ifup l'absence d'une route dans le tableau 101.

Craig Constantine
la source
Bien, mais je n'aime pas utiliser rc.local .. à la recherche d'une étape finale plus élégante ..
drAlberT
Il a été édité je suppose :) ..
drAlberT
Existe-t-il réellement un fichier / etc / interfaces, ou s'agit-il d'une faute de frappe?
user100464
@ user100464/etc/network/interfaces
Zenexer
Il y a un ref à l'ancien dans la réponse. Je ne peux pas le modifier.
user100464