Re: FreeBSD & ISDN & dynamic ip's

From: Greg Lehey <grog(at)lemis.com>
Date: Sat, 2 Aug 1997 08:31:11 +0930 (CST)

J Wunsch writes:
> As Greg Lehey wrote:
>
>> So. Jetzt ändere ich die Adresse ab:
>>
>>> === root(at)freebie (/dev/ttyp6) ~ 141 -> ifconfig tun0 139.130.136.133 204.216.27.18
>>> === root(at)freebie (/dev/ttyp6) ~ 142 -> ifconfig tun0
>>> tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500
>>> inet 139.130.136.133 --> 204.216.27.18 netmask 0xffff0000
>>
>> Das Routing steht noch bei der alten Adresse:
>
> Nur deshalb geht es auch überhaupt noch. Es steht nicht mehr
> vollständig auf der alten Adresse:
>
>>> 204.216.27.18 139.130.136.133 UH 0 0 tun0
>
> Die Route ist nämlich neu und durch Dein `ifconfig' hervorgerufen
> worden. Ohne defaultroute (die ja ein Sonderfall von Routing ist)
> würde in Deinem Beispiel gar nichts mehr gehen.

Das habe ich nie behauptet. Es geht nicht um die Defaultroute,
sondern um die Frage, ob die Adresse der Gegenseite von Bedeutung ist.
Wie Stefan festgestellt hat, und wie ich die ganze Zeit erzähle, wird
sie nur benutzt, um einen Route-Eintrag zu erzeugen. Das ist
natürlich implementationsmäßig verkehrt: Den Route-Eintrag sollte man
durch Angabe eines Interfaces, und nicht durch Angabe einer Adresse
vornehmen.

>> Aber das Ding läuft. Ich kann hub pingen:
>>
>>> === root(at)freebie (/dev/ttyp6) ~ 144 -> ping hub
>>> PING hub.lemis.com (204.216.27.18): 56 data bytes
>>> 64 bytes from 204.216.27.18: icmp_seq=0 ttl=244 time=419.819 ms
>
> Du pingst aber nicht Deine Gegenseite.

In diesem Beispiel nicht.

> Durch das ifconfig hast Du Deinem Kernel vorgegaukelt, daß Deine Gegenseite
> 204.216.27.18 sei, so daß er Pakete in diese Richtung auch über dieses
> Interface rausschickt.

Dem Kernel interessiert's einen heißen Dreck.

> (Siehe auch das Snippet, das ich Stefan geschickt habe.)

                        if (ifa->ifa_addr->sa_family != af)
                                next: continue;
                        if (ifp->if_flags & IFF_POINTOPOINT) {
                                if (ifa->ifa_dstaddr != 0
                                    && equal(addr, ifa->ifa_dstaddr))
                                        return (ifa);

Ich habe keine Lust, diesen Code im Kontext nachzuschauen. Wenn er aber für's
Routing einzelner Pakete zuständig wäre, würden nur Pakete geroutet, die
eindeutig für's andere Ende bestimmt wären.

> Deine Gegenseite nimmt die Pakete (in der ihre eigene richtige Adresse ja gar
> nicht vorkommt), Deine Absenderadresse darin ist OK,

Ja, aber das interessiert sie nicht.

> und es stellt anhand der Zieladresse fest, daß es die Pakete weiterleiten
> soll. Die Antworten bekommst Du dann von 11 Hops weiter hinten, nicht von
> Deiner Gegenseite.

Richtig. Was wolltest Du damit beweisen?

>> Ich kann sogar das andere Ende pingen:
>>
>>> === root(at)freebie (/dev/ttyp6) ~ 146 -> ping 139.130.136.129
>>> PING 139.130.136.129 (139.130.136.129): 56 data bytes
>>> 64 bytes from 139.130.136.129: icmp_seq=0 ttl=255 time=262.384 ms
>
> Logisch, auch wieder zufällig, weil die Defaultroute gerade auf das
> gleiche Interface zeigt, das diese Pakete handeln kann.

Nicht zufällig. Es funktioniert, weil das Routing stimmt, nicht, weil im
PPP-Eintrag eine bestimmte Gegenseitenadresse steht.

> Die Gegenseite stellt natürlich hier fest, daß die Pakete für sie selbst
> waren, und beantwortet sie.

Richtig.

> Schmeiß in Deinem Beispiel die Defaultroute raus, und nichts geht mehr
> nach dem re-ifconfigen.

Ohne Routing läuft's nicht. Das habe ich nie anders behauptet.

>> ..., wenn Du (Ihr) die einzelnen Mechanismen überleg(s)t, die
>> zum Weiterreichen eines Datagramms über eine PPP-Leitungen benötigt
>> werden: Die Gegenadresse wird nie benutzt.
>
> Siehe Codebeispiel. Und: tu, was ich geschrieben habe. Schmeiß die
> Defaultroute raus, wiederhole das Beispiel, und versuche, die richtige
> oder die falsche Gegenseite zu pingen. Die falsche wird noch
> funktionieren wie oben, sofern es den Host im Internet überhaupt gibt
> (weil Du mit dem ifconfig dann eine Hostroute dahin generiert hast),
> die richtige Gegenseite wirst Du einfach gar nicht mehr erreichen.

Was soll ich damit? Ich habe behauptet, die Gegenseitenadresse sei überflüssig
und werde nur benutzt, um Routingeinträge zu machen. Ich habe nie behauptet,
daß man ohne Defaultroute auskommen könne. Was willst Du sagen?

Greg
Received on Sat 02 Aug 1997 - 01:03:27 CEST

search this site