GNU/Linux >> Tutoriels Linux >  >> Cent OS

Centos - Séparer le trafic réseau sur deux interfaces réseau ?

Pourriez-vous apporter votre expertise pour comprendre comment s'y prendre
pour configurer la séparation du trafic réseau sur deux interfaces réseau ?

D'après ce que j'ai compris jusqu'à présent, les routes statiques sont utilisées pour le trafic réseau qui
n'est pas conçu pour utiliser une passerelle par défaut. La passerelle par défaut est utilisée pour
tout le trafic qui n'est pas destiné au réseau local et pour lequel
aucune route préférée n'a été spécifiée dans une table de routage.

Le scénario est le suivant.

  • Chaque ordinateur du réseau possède deux cartes réseau.
  • L'interface de production pour chacun est eth0 (GW =10.10.10.1).
  • L'interface de gestion pour chacun est eth1 (GW =192.168.100.1).
  • Le trafic de production et de gestion doit être totalement séparé.

J'ai posté, ci-dessous, ce que j'ai essayé avec Debian Wheezy.
Et mon problème est que, même si j'ai des hôtes configurés de telle manière qu'
ils communiquent sur les deux interfaces, des hôtes individuels semblent "entendre"
le trafic sur la mauvaise interface. Par exemple :

Héberger 140

eth0      Link encap:Ethernet  HWaddr 08:00:27:d1:b6:8f
          inet addr:10.10.10.140  Bcast:10.10.10.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fed1:b68f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1341 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2530 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:641481 (626.4 KiB)  TX bytes:241124 (235.4 KiB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:ad:14:b6
          inet addr:192.168.100.140  Bcast:192.168.100.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fead:14b6/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7220 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5257 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:602485 (588.3 KiB)  TX bytes:1022906 (998.9 KiB)

Depuis l'hôte 140, j'exécute cette commande :tcpdump -i eth0 . Dans une session séparée
sur l'hôte 140, j'exécute ping 192.168.100.50 .

19:17:29.301565 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 10, length 64
19:17:30.301561 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 11, length 64
19:17:31.301570 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 12, length 64
19:17:32.301580 IP 192.168.100.140 > 192.168.100.50: ICMP echo request, id 1400, seq 13, length 64

Pourquoi est-ce que je vois la sortie ci-dessus sur eth0 ? Je pense que je ne devrais voir le trafic que pour 10.10.10.140.
Je vois aussi cela sur eth1 , comme prévu :

19:18:47.805408 IP 192.168.100.50 > 192.168.100.140: ICMP echo request, id 1605, seq 247, length 64

Si je ping depuis l'hôte 50 (même ifconfig résultats - juste un dernier carré différent),
puis eth0 est silencieux et je vois les échos ICMP sur eth1 , comme prévu.

J'aimerais comprendre comment configurer chaque interface pour gérer uniquement
le trafic dont elle est responsable dans deux principales variétés de Linux.
Je pense que j'y suis presque, mais il me manque quelque chose que je peux juste' t semblent trouver.

  • Debian Wheezy (7.x) ou Debian Jessie (8.x)
  • Enterprise Linux (6.x) (RedHat/CentOS/Scientific/Oracle).

Je sais qu'une solution pour Debian devrait être bonne à la fois pour Wheezy et Jessie,
et qu'une solution pour un EL devrait être la même pour toutes les versions d'EL 6.x.
J'aimerais éviter d'utiliser un script RC pour exécuter des commandes, en optant à la place
pour utiliser les fichiers de configuration.

Dans Debian, les fichiers de configuration pertinents que je connais sont :

  • /etc/network/interfaces

Dans EL 6.x, les fichiers de configuration pertinents que je connais sont :

  • /etc/sysconfig/network
  • /etc/sysconfig/network-scripts/ifcfg-eth0
  • /etc/sysconfig/network-scripts/ifcfg-eth1
  • /etc/sysconfig/network-scripts/route-eth0
  • /etc/sysconfig/network-scripts/route-eth1
  • /etc/sysconfig/network-scripts/rule-eth0
  • /etc/sysconfig/network-scripts/rule-eth1

Ma Debian 8 "Jessie" /etc/network/interfaces fichier :

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# Production interface
auto eth0
allow-hotplug eth0
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# Management interface
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 192.168.100.140
  netmask 255.255.255.0

Je pense que netstat -anr pourrait illustrer le problème :

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         10.10.10.1      0.0.0.0         UG        0 0          0 eth0
10.10.10.0      0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth0
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 eth1

Réponse acceptée :

J'aimerais en savoir plus sur ce sujet pour affiner la configuration afin qu'elle soit la meilleure possible, mais voici ce que j'ai jusqu'à présent. Même sans activer le filtrage ARP sur toutes les interfaces réseau (net.ipv4.conf.all.arp_filter = 0 ), comme mentionné par @spuk,
le trafic semble être complètement séparé dans cette configuration.

Connexe :Sed supprime les caractères de la nouvelle ligne ?

Le fichier, /etc/iproute2/rt_tables , est la même dans EL 6.x et DEB 7/8, au moins. C'est le fichier qui crée une table de routage nommée pour les routes statiques.

#
# reserved values
#
255     local
254     main
253     default
0       unspec
#
# local
#
252 mgmt

Ci-dessus, le numéro de la route statique nommée, 252, est essentiellement arbitraire; ou, chaque route statique obtient son propre numéro unique entre 1 et 252.

Le fichier, /etc/network/interfaces en DEB 7/8, au moins :

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
  iface lo inet loopback

# The production network interface
# The 'gateway' directive is the default route.
# Were eth0 configured via DHCP, the default route would also be here.
auto eth0
allow-hotplug eth0
iface eth0 inet static
  address 10.10.10.140
  netmask 255.255.255.0
  gateway 10.10.10.1

# The management network interface
# The 'gateway' directive cannot be used again because there can be
# one, and only one, default route. Instead, the 'post-up' directives
# use the `mgmt` static route.
auto eth1
allow-hotplug eth1
iface eth1 inet static
  address 192.168.100.140
  netmask 255.255.255.0
  post-up ip route add 192.168.100.0/24 dev eth1 src 192.168.100.140 table mgmt
  post-up ip route add default via 192.168.100.1 dev eth1 table mgmt
  post-up ip rule add from 192.168.100.140/32 table mgmt
  post-up ip rule add to 192.168.100.140/32 table mgmt

Le résultat de ip route show sur Debian :

default via 10.10.10.1 dev eth0
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.140
192.168.100.0/24 dev eth1  proto kernel  scope link  src 192.168.100.140

L'EL 6.x /etc/sysconfig/network fichier :

NETWORKING=yes
HOSTNAME=localhost.localdomain
GATEWAY=10.10.10.1

Ci-dessus, GATEWAY est la route par défaut. Ci-dessous, si BOOTPROTOCOL était défini sur DHCP, la route par défaut serait acquise à partir de DHCP.

LE EL 6.x /etc/sysconfig/network-scripts/ifcfg-eth0 fichier, sans "HWADDR" et "UUID":

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=10.10.10.140
NETMASK=255.255.255.0
NETWORK=10.10.10.0
BROADCAST=10.10.10.255

LE EL 6.x /etc/sysconfig/network-scripts/ifcfg-eth1 fichier, sans "HWADDR" et "UUID":

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTOCOL=none
IPADDR=192.168.100.140
NETMASK=255.255.255.0
NETWORK=192.168.100.0
BROADCAST=192.168.100.255

Le EL 6.x /etc/sysconfig/network-scripts/route-eth1 fichier :

192.168.100.0/24 dev eth1 table mgmt
default via 192.168.100.1 dev eth1 table mgmt

Le EL 6.x /etc/sysconfig/network-scripts/rule-eth1 fichier :

from 192.168.100.0/24 lookup mgmt

Le résultat de ip route show sur EL 6.x :

192.168.100.0/24 dev eth1  proto kernel  scope link  src 192.168.100.160
10.10.10.0/24 dev eth0  proto kernel  scope link  src 10.10.10.160
default via 10.10.10.1 dev eth0

Mise à jour pour RHEL8

Cette méthode décrite ci-dessus fonctionne avec RHEL 6 &RHEL 7 ainsi que les dérivés, mais pour RHEL 8 et dérivés, il faut d'abord installer network-scripts utiliser la méthode décrite ci-dessus.

dnf install network-scripts

L'installation génère un avertissement indiquant que network-scripts sera supprimé dans l'une des prochaines versions majeures de RHEL et que NetworkManager fournit ifup /ifdown scripts également.

Mise à jour pour Ubuntu 20.04 LTS

La création d'une table de routage nommée est correcte, mais pas obligatoire avec netplan , qui n'utilisera pas le nom de toute façon. Néanmoins le numéro de la table de routage nommée dans les rt_tables le fichier peut être utilisé pour netplan . Les cartes réseau correspondantes sont enps03 (eth0 ) et enp0s8 (eth1 ).

network:
  version: 2
  ethernets:
    enp0s3:
      addresses:
      - 10.10.10.140/24
      dhcp4: false
      dhcp6: false
      gateway4: 10.10.10.1
      nameservers:
        addresses:
        - 1.2.3.4
        - 1.2.3.5
        search:
        - your-search-domain-name.com
    enp0s8:
      dhcp4: false
      dhcp6: false
      addresses:
      - 192.168.100.140/24
      routes:
      - to: 192.168.100.0/24
        via: 192.168.100.1
        table: 252
      routing-policy:
      - from: 192.168.100.0/24
        table: 252

Il en résulte les routes suivantes à partir de ip r s .

default via 10.10.10.1 dev enp0s3 proto static
10.10.10.0/24 dev enp0s3 proto kernel scope link src 10.10.10.140
192.168.100.0/24 dev enp0s8 proto kernel scope link src 192.168.100.140

Cent OS
  1. Comment redémarrer le service réseau sur CentOS 8 ou RHEL 8

  2. Comment installer la surveillance du réseau VnStat sur CentOS 7

  3. CentOS / RHEL 7 :Comment modifier les noms d'interface réseau

  4. CentOS / RHEL 7 :Comment activer les anciens noms d'interfaces réseau de style ethX

  5. Comment supprimer une imprimante réseau dans CentOS/RHEL

Comment configurer les paramètres réseau CentOS

Comment configurer une interface réseau virtuelle sur RHEL 8 / CentOS 8

Comment configurer les interfaces réseau à l'aide de NMCLI sur Centos 7.6

Comment installer la surveillance du réseau Cacti sur CentOS 8

3 façons de créer un pont réseau dans RHEL/CentOS 8

Centos – Wireguard n'achemine pas le trafic du client vers d'autres serveurs du réseau ?