GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

„iscsiadm“ Discovery TimeOut mit zwei oder mehr Netzwerkschnittstellen in CentOS/RHEL

Das Problem

Die iscsiadm-Erkennung läuft ab, wenn beide Schnittstellen aktiv sind, aber es funktioniert gut, wenn eine einzige Schnittstelle aktiv ist.

# iscsiadm -m discovery -t st -p x.x.x.x
iscsiadm: connect to x.x.x.x timed out
iscsiadm: connect to x.x.x.x timed out

Die Lösung

Dieses Problem kann auftreten, wenn zwei oder mehr Ethernet-Schnittstellen mit demselben Subnetz verbunden sind oder wenn die iSCSI-Verbindung für die Verwendung einer bestimmten Schnittstelle konfiguriert ist. In solchen Fällen, in denen Pakete an die falsche Schnittstelle geliefert werden, geht das Betriebssystem davon aus, dass sie an einen geschlossenen Port oder ein falsches Ziel gesendet wurden, und es kommt zu einer Zeitüberschreitung. Um dieses Problem zu lösen, müssen wir so konfigurieren, dass asymmetrisch geroutete Pakete auf beiden Schnittstellen des iSCSI-Clients akzeptiert werden, auf denen wir diese Fehlermeldung erhalten:

1. Setzen Sie net.ipv4.conf.all.arp_ignore von sysctl auf 1, um jede Schnittstelle zu zwingen, nur ARP-Anfragen für ihre eigenen Adressen zu beantworten. Oder setzen Sie net.ipv4.conf.[INTERFACE].arp_ignore auf 1 für jede Schnittstelle, die ein Pfad zum iscsi-Speicher ist.

Zum Beispiel in /etc/sysctl.conf :

# vi /etc/sysctl.conf
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

Oder um es nur für die relevanten Schnittstellen festzulegen (vorausgesetzt, es handelt sich um eth0 und eth1):

# vi /etc/sysctl.conf
net.ipv4.conf.eth0.rp_filter=0
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce=2
net.ipv4.conf.eth1.rp_filter=0
net.ipv4.conf.eth1.arp_ignore = 1
net.ipv4.conf.eth1.arp_announce=2

2. Wenden Sie die Einstellung mit dem folgenden Befehl an:

# sysctl -p /etc/sysctl.conf

3. Prüfen Sie, ob die neuen Einstellungen erfolgreich angewendet wurden:

# sysctl -a

4. Entfernen Sie nun alte Dateien aus /var/lib/iscsi/ifaces:

# rm -rf /var/lib/iscsi/ifaces

Dies sollte das Zeitlimit für die iscsi-Erkennung beheben, wenn zwei Schnittstellen konfiguriert sind.

Für CentOS/RHEL 7

Beachten Sie, dass, wenn auf dem System CentOS/RHEL 7 installiert ist, Sie die obigen sysctl-Parameter in die Datei /etc/sysctl.d/99-sysctl.conf eingeben und dann den folgenden Befehl ausführen, um die Einstellungen aus der Konfigurationsdatei erneut zu lesen:

# sysctl --system

Notizen

Dieses Problem kann auftreten, wenn eine iSCSI-Verbindung für die Verwendung einer bestimmten Netzwerkschnittstelle konfiguriert ist. Wenn iscsi-Pakete an die falsche Schnittstelle geliefert werden, reagiert Linux so, als ob die Daten an einen geschlossenen Port gesendet wurden, und sendet ein RST-Paket. Solange die empfangenen Daten an der falschen Schnittstelle ankommen, bleibt die Verbindung unterbrochen und kann nicht wiederhergestellt werden.

Dies kann auftreten, wenn mehrere Adapter mit demselben Subnetz verbunden sind. Standardmäßig beantwortet Linux alle ARP-Anfragen für alle IP-Adressen des Systems, unabhängig davon, von welcher Schnittstelle die ARP-Anfrage kam. Wenn eine andere Schnittstelle die ARP-Anforderung für die IP-Adresse der iscsi-verbindung beantwortet, wird der Datenverkehr an die falsche Schnittstelle geleitet und die Verbindung schlägt fehl. Das Einschalten von arp_ignore zwingt eine Netzwerkschnittstelle, nur ARP-Anfragen für ihre eigenen Adressen zu beantworten. Dies verhindert die ARP-Antwort von der falschen Schnittstelle und hält die iscsi-verbindung funktionsfähig.


Cent OS
  1. Centos – Separater Netzwerkverkehr auf zwei Netzwerkschnittstellen?

  2. CentOS / RHEL 7:Konfigurieren einer statischen IP-Adresse mithilfe von Netzwerkschnittstellen-Konfigurationsdateien

  3. So deaktivieren Sie NetworkManager unter CentOS / RHEL 7

  4. CentOS / RHEL 7 :So konfigurieren Sie Network Bonding oder NIC-Teaming

  5. „iscsiadm“ Discovery TimeOut mit zwei oder mehr Netzwerkschnittstellen in CentOS/RHEL

So konfigurieren Sie die Netzwerkschnittstellenbindung unter RHEL 8 / CentOS 8 Linux

Konfigurieren Sie das NIC-Bonding (Network Interface Card) in CentOS 7 / RHEL 7

So deaktivieren Sie IPv6 unter CentOS 7 / RHEL 7

So deaktivieren Sie IPv6 unter CentOS 8 / RHEL 8

So ändern Sie den Namen der Netzwerkschnittstelle in eth0 unter CentOS 8 / RHEL 8

3 Möglichkeiten zum Erstellen einer Netzwerkbrücke in RHEL/CentOS 8