
Was passiert, wenn ein Host im Netzwerk ein IP-Paket mit einer MAC-Quelladresse empfängt, die sich von der MAC-Adresse in der lokalen ARP-Tabelle für diese Quell-IP unterscheidet?
Der ARP-Tabelleneintrag für diese IP wurde und wird über eine gültige ARP-Antwort gefüllt.
Jetzt ist mir aufgefallen, dass der empfangende Host (Ubuntu 18.04) kein Antwortpaket sendet (ICMP-Echoantwort oder TCP SYN/ACK ...usw.). Es verlässt kein Antwortpaket die Schnittstelle.
Die Frage ist nun, aus welchen Gründen sich der Gastgeber so verhält. Welche Überprüfungen werden mit den MAC- und IP-Adressen der Pakete, der lokalen ARP-Tabelle und Routing-Tabelle usw. durchgeführt?
Bearbeiten:
Um das Szenario zu verdeutlichen:
Wenn Host Hb eine Ping-Anfrage an 10.2.0.5 (Host Ha) sendet, empfängt Ha ein ICMP-Paket mit der Quell-IP 10.1.0.3 und die Quell-MAC-Adresse ist die MAC-Adresse des Routers. Die ARP-Tabelle von Host Ha hat jedoch einen Eintrag: 10.1.0.3 -> Hb-MAC-Adresse. Daher unterscheiden sich die MAC-Adressen!
Antwort1
Dieses Verhalten ist völlig normal und hängt mit der Routing-Konfiguration des Hb
Hosts zusammen, der wahrscheinlich nur die Standardroute über den Router hat. Wenn Sie also die zusätzliche Route nicht eingerichtet haben, werden die Pakete an das N2
Netzwerk ( 10.2.0.0/24
) über die Standardroute gesendet.
Das Problem wird also dadurch verursacht, dass auf dem Ha
Host der Reverse-Path-Filter aktiviert ist, der eingehende Pakete aufgrund von Einschränkungen der Quelladresse verwirft.
Um dieses Problem zu beheben, sollten Sie die Ausgabe der nächsten Befehle auf dem Ha
Host überprüfen:
ip netconf show dev <iface-N2>
- Überprüfen Sie denrp_filter
Wert. Wahrscheinlich ist es sostrict
.ip route get 10.2.0.5 from 10.1.0.3 iif <iface-N2>
- wahrscheinlich wird etwas wie angezeigtinvalid cross-device link
.nstat -az TcpExtIPReversePathFilter
- wahrscheinlich wird es einen Wert ungleich Null haben.
Es gibt drei Möglichkeiten, das Problem zu lösen:
Deaktivieren Sie einfach
rp_filter
auf demHa
Host mit sysctl (sysctl -w net.ipv4.conf.all.rp_filter=0
undsysctl -w net.ipv4.conf.<iface-N2>.rp_filter=0
). Außerdem sollten Sie die/etc/sysctl.conf
Datei bearbeiten, um diese Änderungen dauerhaft zu machen.Fügen Sie einfach eine Route auf dem
Hb
Host zur10.2.0.5
durchgehenden10.1.0.5
Adresse hinzu (Befehl für Linuxip route add 10.2.0.5 via 10.1.0.5
, für Windowsroute add 10.2.0.5 mask 255.255.255.255 10.1.0.5
)Konfigurieren Sie die Source Address Translation (NAT) auf dem Router, um die Adresse
Hb
in die Routeradresse umzuschreiben. Die iptables-Regel dazu:
iptables -t nat -A POSTROUTING -o <iface-N2> --src 10.1.0.3 --dst 10.2.0.5 -j MASQUERADE