NFS-Verkehr wird mit anderer IP-Adresse, aber demselben Subnetz verbunden

NFS-Verkehr wird mit anderer IP-Adresse, aber demselben Subnetz verbunden

Mein NFS-Server hat 3 Schnittstellen:0: 1 GB,1: 10 GB,2: 10 GB.

Iface 0 wird nur für Verwaltungszwecke verwendet und 1/2 sind für zwei verschiedene Mounts.

Alle Schnittstellen befinden sich im selben Subnetz (/24).

| Server | ----> iface 0/1/2 ----> |privater Switch| ----> |alle Clients|

Meine Clients sind so konfiguriert, dass sie über Schnittstellen eine Verbindung zu NFS herstellen1Und2.

$ mount
...
iface1:/home on /home type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.1.1.3,local_lock=none,addr=172.1.1.1)
iface2:/scratch on /scratchlair type nfs4 (rw,relatime,vers=4.0,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,port=0,timeo=600,retrans=2,sec=sys,clientaddr=172.1.1.3,local_lock=none,addr=172.1.1.2)
...

Wo iface1Und2sind jeweils 172.1.1.{1,2}. Iface 0 ist 172.1.1.5.

Mein Problem ist, dass auf dem Server der gesamte Datenverkehr zu iface geht.0, über nload. Ifaces1Und2zeige keinen Verkehr.

Dies gilt für alle 10 Clients, die mit dem NFS-Server verbunden sind.

Was führt dazu, dass der Datenverkehr zu iface weitergeleitet wird?0, und wie kann ich den Datenverkehr des NFS-Clients über die konfigurierte Schnittstelle erzwingen?

Antwort1

Damit dies funktioniert, müssen Sie separate Routing-Tabellen und Regeln für alle drei Inet-Schnittstellen konfigurieren und aktivieren arp_filter.
Sie sollten dies auch zunächst in einer VM-Umgebung testen, da Sie während der nächsten Schritte problemlos jede Verbindung unterbrechen können und es definitiv zu einigen Problemen kommen wird.


Aktivieren Sie zunächst arp_filter.

sysctl net.ipv4.conf.default.arp_filter=1

Um es dauerhaft zu machen, fügen Sie es zu Ihrem hinzu /etc/sysctl.conf. Abhängig von Ihrer Distribution können Sie es auch in eine Datei darunter legen /etc/sysctl.d/.

echo net.ipv4.conf.default.arp_filter = 1 >> /etc/sysctl.conf

Fügen wir nun die Routingtabellen hinzu.

cat << TABLES >> /etc/iproute2/rt_tables 
101 rt1
102 rt2
103 rt3
TABLES

Angenommen, Sie haben eine /24Netzmaske und Ihr Standard-Gateway ist 172.1.1.254. Weiterhin sind die Schnittstellen 0, 1 und 2 eth0, eth1und eth2im folgenden Beispiel entspricht dies möglicherweise nicht Ihrem Setup, sodass Sie es übernehmen müssen.

ip route add 172.1.1.0/24 dev eth0 src 172.1.1.5 table rt1
ip route add table rt1 default via 172.1.1.254 dev eth0
ip rule add table rt1 from 172.1.1.5

ip route add 172.1.1.0/24 dev eth1 src 172.1.1.1 table rt2
ip route add table rt2 default via 172.1.1.254 dev eth1 
ip rule add table rt2 from 172.1.1.1    

ip route add 172.1.1.0/24 dev eth2 src 172.1.1.2 table rt3
ip route add table rt3 default via 172.1.1.254 dev eth2
ip rule add table rt2 from 172.1.1.2

Um diese Routingtabellen und -regeln dauerhaft zu machen, müssen Sie die oben genannten Schritte zu Ihrer NIC-Konfiguration hinzufügen. Auf einem RHEL-basierten System würde das wie folgt aussehen.

Routen und Regeln für eth0.

cat << ROUTE > /etc/sysconfig/network-scripts/route-eth0
172.1.1.0/24 dev eth0 src 172.1.1.5 table rt1
table rt1 default via 172.1.1.254 dev eth0
ROUTE

cat << RULE > /etc/sysconfig/network-scripts/rule-eth0
table rt1 from 172.1.1.5
RULE

Routen und Regeln für eth1.

cat << ROUTE > /etc/sysconfig/network-scripts/route-eth1
172.1.1.0/24 dev eth1 src 172.1.1.1 table rt2
table rt2 default via 172.1.1.254 dev eth1
ROUTE

cat << RULE > /etc/sysconfig/network-scripts/rule-eth1
table rt2 from 172.1.1.1   
RULE

Routen und Regeln für eth2.

cat << ROUTE > /etc/sysconfig/network-scripts/route-eth2
172.1.1.0/24 dev eth2 src 172.1.1.2 table rt3
table rt3 default via 172.1.1.254 dev eth2
ROUTE

cat << RULE > /etc/sysconfig/network-scripts/rule-eth2
table rt3 from 172.1.1.2   
RULE

Wie in den Kommentaren bereits erläutert, ist es möglicherweise einfacher, einfach unterschiedliche Subnetze für die Schnittstellen zu verwenden und den Clients IP-Aliase für die unterschiedlichen Subnetze zuzuweisen.

Ich habe dies in einer VM-Umgebung mit einem CentOS7 NFS-Server getestet.

verwandte Informationen