Kann ich oder wie kann ich der Loopback-Schnittstelle von Host A eine benutzerdefinierte IPv6-Adresse hinzufügen und sie vom Host B aus anpingen?
Ich habe versucht, etwas wie dies hinzuzufügen ::ffff:5:4:3:2
, jedoch ip -6 route
heißt es, dass dieses Ziel unreachable
bei ist error 101
, ich es aber von Host A aus anpingen kann. Wenn ich diese Adresse tap0
beispielsweise auf einstelle, ist die Route erreichbar, aber immer noch „nicht pingbar“ von Host B aus. Ich kann nicht verstehen, welche Adressen Loopback zulässt, warum meine benutzerdefinierte Adresse nicht erreichbar ist, warum ich sie von Host A aus anpingen kann, wie ich route_localnet
und rp_filter
für IPv6 aktiviere.
Betriebssystem: ArchLinux, Kernel 4.10.
Ich weiß, wie es bei IPv4 geht, aber IPv6 funktioniert völlig (oder nicht?) anders.
Antwort1
Ja. Genau wie bei IPv4 nennt sich das Routing. Sie müssen einem Host mitteilen, wie er einen anderen Host erreichen kann.
Nehmen wir an, wir haben zwei Hosts, A und B.
Host A hat seine Standard-Loopback-Adresse ::1
sowie Ihre benutzerdefinierte Adresse auf der Loopback-Schnittstelle. (In meinem Beispiel lautet die benutzerdefinierte Adresse fd56:dcaa:2099::1
. Ich habe diese aus einer eindeutigen lokalen Adresse ausgewählt. Sie solltenULA-Adressen verwendenfür solche Zwecke.)
Host A hat auch eine Ethernet-Schnittstelle, nennen wir sie eth0
. In IPv6 hat sie eine IPv6-Link-Local-Adresse. Sie kann auch andere IPv6-Adressen haben. Diese können Sie finden, indem Sie ausführen ip -6 addr eth0
. Hier ist ein Beispiel aus meinem System:
$ ip -6 addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2601:404:ce00:adc0:9d6c:9e16:a9a9:b03b/64 scope global temporary dynamic
valid_lft 593594sec preferred_lft 74600sec
inet6 2601:404:ce00:adc0:bc87:129a:ed5d:814/64 scope global temporary deprecated dynamic
valid_lft 78769sec preferred_lft 0sec
inet6 2601:404:ce00:adc0:1453:3734:6742:4500/64 scope global mngtmpaddr noprefixroute dynamic
valid_lft 2591820sec preferred_lft 604620sec
inet6 fe80::5520:a68f:5416:a68c/64 scope link
valid_lft forever preferred_lft forever
In dieser Liste sind vier verschiedene Adressen (es können auch mehr sein). Für unsere Zwecke brauchen Sie die Adresse, hinter der „Scope Link“ steht. Auf meinem System (und in meinem Beispiel) ist das fe80::5520:a68f:5416:a68c
.
Auf Host B gibt es auch eine Schnittstelle eth0
. Damit Host B die spezielle Loopback-Adresse von Host A erreichen kann, muss Host B wissen, wo sie zu finden ist. Dazu fügen Sie der Routing-Tabelle von Host B einen Eintrag hinzu:
# ip route add fd56:dcaa:2099::1 via fe80::5520:a68f:5416:a68c dev eth0
Wir teilen dem Kernel von Host B mit, dass er fd56:dcaa:2099::1
(die spezielle Adresse von Host A auf seiner Loopback-Schnittstelle) unter fe80::5520:a68f:5416:a68c
(die Link-Local-Adresse von Host A auf seiner eth0
Schnittstelle) erreichen kann, Host B jedoch versuchen muss, fe80::5520:a68f:5416:a68c
vonGastgeber B eth0
Schnittstelle. (Das ist das Knifflige an Link-Local-Adressen. Die Adresse selbst ist nur im Kontext eines bestimmten Netzwerksegments von Bedeutung. Weitere Einzelheiten finden Sie im OSI-Netzwerkmodell.)
Sobald Sie diesen Eintrag in der Routing-Tabelle von Host B haben, sollten Sie in der Lage sein, die benutzerdefinierte Adresse von Host A von Host B aus anzupingen, da Host B nun weiß, dass er die Link-Local-Adresse von Host A als Router verwenden muss, um diese Adresse zu erreichen.
Antwort2
Denn Loopback-Adressen und Schnittstellen sind für die Kommunikation innerhalb eines einzelnen Hosts gedacht. Sie sind nicht für die Kommunikation mit einem anderen Gerät vorgesehen.