Loopback address Was: merkwürdiges ssh Verbindungsproblem
Florian Lohoff
f at zz.de
Thu Jan 9 10:22:41 CET 2025
Hola,
On Sun, Jan 05, 2025 at 12:51:59PM +0100, Kai 'wusel' Siering wrote:
> >> Vorsicht, 127.0.*1*.1; seit gut 20 Jahren wird das gesamte 127/8 bei Linux als lokal angesehen (IIRC kann man das auch nicht mehr anders routen, was früher mal möglich war).
> >
> >Also reserved war 127/8 schon seit 1981 :)
>
> Schon. Und es wird mir immer ein Rätsel bleiben, warum man dafür das
> letzte Class-A- statt des letzten Class-C-Netzes ver(sch)wendet hat.
Es ist ein byte compare um zu wissen ob es localhost ist ;) Und wenn man
packet forwarding macht das in hardware zu machen ist halt viel
einfacher abzubilden. Erstes byte 0x7f -> Sollte nicht "on wire" sein.
Und wir sind ja hier in den 60er Jahren als packet Forwarding
noch mit Diskreter Logik und 7400er Bausteinen probiert wurde.
> >Und seit es IPv6 gibt ist
> >auch 127/8 auf dem lo interface bei Linux ;)
>
> $Früher, also mindestens zu Beginn des aktuellen Jahrtausends, konnte
> man das aber noch in 127.0.0.1/24 umkonfigurieren und z. B.
> 127.0.1.0/24 'normal' routen. Das ging 'plötzlich' nimmer. (Ja, es gab
> schon RFC1918 sowie TEST-NET-{1,2,3}, das ist nicht der Punkt.)
Aeh? Ich würde behaupten im ARP oder Ethernet dürfte das noch nie
funktioniert haben git blame sagt das Linus da einen Kommentar 2005
eingefügt hat das es im ARP gekillt wird - Aber IMHO wird das teilweise
auch in Ethernet Karten und definitiv in Cisco Routern gekillt.
127.0.0.0/8 kommt da aus dem Ethernet Baustein schon nicht mehr raus.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 784) * Check for bad requests for 127.x.x.x and requests for multicast
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 785) * addresses. If this is one such, delete it.
Damit wäre das auf allem Ethernet ähnlichem tot. Ich behaupt das gabs
aber schon in kernel 1.2 das das nicht ging.
Kernel 1.2.13 - mal schnell geguckt - Ging auch da im ARP schon nicht:
net/inet/arp.c
626 /*
627 * Check for bad requests for 127.0.0.1. If this is one such, delete it.
628 */
629 if(tip == INADDR_LOOPBACK)
630 {
631 kfree_skb(skb, FREE_READ);
632 return 0;
633 }
Wenn es ein interface verlassen hat ist die addresse immer schon überschrieben worden. Outgoing
keine loopback address als source.
net/inet/ip.c
262 /*
263 * If the frame is from us and going off machine it MUST MUST MUST
264 * have the output device ip address and never the loopback
265 */
266 if (LOOPBACK(saddr) && !LOOPBACK(daddr))
267 saddr = src;/*rt->rt_dev->pa_addr;*/
268 raddr = rt->rt_gateway;
269
Und das macro die loopback addresse(n) zu detecten war in 1.2.13 auch schon
128 #define LOOPBACK(x) (((x) & htonl(0xff000000)) == htonl(0x7f000000))
Also erstes byte auf 0x7f testen.
> >Einen Eintrag an. Wenn du DHCP machst bzw das Desktop system mit network
> >manager oder wicd oder whatever, dann willst du ja das du irgendwie
> >ein "ping $myhostname" machen kannst - Deshalb der Eintrag auf
> >
> >127.0.1.1 $myhostname
>
> Komische Annahme, warum sollte ich meine lokale Kiste anders als über
> 'localhost' bzw. '127.0.0.1' ansprechen wollen? 'ping default' wäre ja
> praktisch, aber ob 127.0.0.1 unter anderem Namen antwortet, welchen
> Erkenntnisgewinn bringt dies? Zumal, siehe Ausgangsthematik, ja alles
> in der /etc/hosts stehen kann, also auch eine falsche Adresse für
> einen richtigen Namen.
>
> Vielleicht habe ich zu lange mit stationären Systemen und statischen
> öffentlichen IPs gearbeitet, dunno. Aber _die_ IP jedes meiner lokalen
> Systeme, 127.0.0.1, die kenne ich auswendig, für den Rest gibt's das
> DNS ;-)
Z.b. wenn du via Apache VHosts hast - Dann willst du vielleicht mit
anderen namen arbeiten.
> >Das geht dann eben auch wenn zufällig dein DHCP nicht da ist weil du
> >dein Notebook mit rum schleppst.
>
> Und dennoch sehe ich darin keinen praktischen Mehrwert, ist aus meiner
> Sicht ähnlich hilfreich wie systemds network-started(?)-Target (ist
> erreicht, wenn _1_ Interface konfiguriert ist, sprich es reicht schon
> 'lo'; Dienste, die sich an Adressen binden, brechen also ggf. ins
> Essen, weil es die IP lokal noch nicht gibt, ganz großes systemd-Kino)
> — eher keine Kunst sondern kann weg.
>
> Aber danke für den Hinweis auf Debians Installer, das erklärt für mich
> jedenfalls, wo der Eintrag für mich 'plötzlich' herkam ;-)
Das network-started target ist aber explizit für den geneigten Admin
eine configurationsfrage. Du _kannst_ das Nutzen - musst das aber
nicht
man systemd-networkd-wait-online
Und für dinge wie corosync, ceph etc könnte das schon wichtig sein.
Flo
--
Florian Lohoff f at zz.de
Any sufficiently advanced technology is indistinguishable from magic.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://lug-owl.de/pipermail/linux/attachments/20250109/2810df8b/attachment.sig>
More information about the Linux
mailing list