Kann eine PPPoE-Heimverbindung unabhängig von den MTU-Einstellungen der Site-Infrastruktur auf alle Websites zugreifen?

685
SilverlightFox

Ich versuche nur, MTU, MRU und MSS durchzubringen.

Mein Interesse ergab sich anfangs aus der Antwort in diesem Beitrag: Sicherheitsrisiko von PING? :

Einige ICMP-Pakettypen dürfen NICHT blockiert werden, insbesondere die ICMP-Nachricht "destination unreachable" (Ziel nicht erreichbar), da das Blockieren der Pfad-MTU-Erkennung unterbrochen wird. Symptome, dass DSL-Benutzer (hinter einer PPPoE-Schicht, die MTU auf 1492 Byte beschränkt) nicht auf Websites zugreifen können Blockieren Sie diese Pakete (es sei denn, sie verwenden den von ihrem ISP bereitgestellten Web-Proxy).

Ich habe seitdem diesen Artikel gefunden, der dies unterstützt:

Einige Benutzer, die Webserver ausführen (insbesondere einige Banken), richten ihr Netzwerk so ein, dass sie die Fehlermeldung blockieren, die zurückgesendet wird, wenn ein Paket zu groß ist. Dies wäre nicht so schlimm, wenn sie nicht versucht hätten, 1.500-Byte-Pakete mit gesetztem DF-Bit zu senden. Das Ergebnis ist, dass das Paket verworfen wird, wenn es eine unter 1.500-MTU-Verbindung trifft und es erneut versuchen muss. Eventuell versucht es eine kleinere Paketgröße, dies kann jedoch 20 Sekunden später sein. Dies ist eine blöde Netzwerkeinrichtung der Person, die den Webserver betreibt.

Meine Frage ist: Ist das tatsächlich ein echtes Problem? Soweit ich weiß, habe ich dies bei meiner BT Infinity-Verbindung, die PPPoE verwendet, noch nicht gesehen. Vermutlich hat dies die gleichen Einschränkungen wie oben erwähnt (meine Router-MTU ist auf 1492 eingestellt).

Könnte es sein, dass mein Router die MSS-Klemmung im Hintergrund verwendet ?

1
Wie alt sind diese Artikel? Dies war ein ziemlich heißes Thema in den späten 90ern, frühen 00ern; nicht so sehr heute. Nevin Williams vor 9 Jahren 0
@NevinWilliams: Der Sec.SE-Beitrag stammt aus dem Jahr 2011 und der, der das Bankbeispiel erwähnt, ist 2009. Ich würde gerne wissen, warum es heute kein Thema ist. SilverlightFox vor 9 Jahren 0
Nicht so sehr ein Problem heute. Unternehmensrichtlinien, gängige Praktiken und sogar IP-Stacks passen sich, wenn auch oft mit Gletschergeschwindigkeit, an, um diese Art von Problemen zu beheben. Abhilfemaßnahmen zu einem besonders weit verbreiteten Problem können von einer oder mehreren Ebenen ausgehen: Kernel-Standardeinstellungen, Softwarepaket-Standardeinstellungen, Konfigurationsvorlagen, ISP-Eingriffe, Routersoftware-Funktionen, alternative Protokolle, geringere Abhängigkeit von abwertenden Diensten. Nevin Williams vor 9 Jahren 0

1 Antwort auf die Frage

5
gronostaj

MTU steht für Maximum Transmission Unit, dh. die Größenbeschränkung für IP-Datagramme (in Byte). Die für Ethernet zulässige Standard- und Maximal-MTU beträgt 1500.

Stellen wir uns vor, wir haben ein Netzwerk wie das unten. C ist ein Kunde; S ist ein Server; X und Y sind Router.

 ___ ___ ___ ___ | C | | X | | Y | | S | |___|========|___|--------|___|========|___| 

Es gibt vier Netzwerke zwischen C und S. Drei von ihnen haben eine maximale MTU von 1500 und eines hat eine niedrigere MTU von 1200 (nur ein Beispiel). Das Netzwerk mit niedriger MTU ist mit Strichen gekennzeichnet.

C versucht Path MTU Discovery auf dem Pfad zu S. Es sendet ein IP-Datagramm mit 20 B-Header und 1480 B-Nutzdaten, insgesamt 1500 B. Das Flag " Nicht fragmentieren (DF)" wird im IP-Header festgelegt.

Das Datagramm erreicht X. X versucht, es weiter an Y zu übergeben, aber Y antwortet mit einer ICMP-Nachricht, die zur Fragmentierung benötigt wird, da seine MTU zu niedrig ist und das DF-Flag gesetzt ist. C empfängt diese Nachricht und erfährt, dass der Pfad MTU niedriger als 1500 ist. Dann versucht er es erneut mit geringerer Nutzlast, wobei jedes Mal Fragmentierung erforderlich ist, bis die Nutzlastgröße 1180 B erreicht. 1180 + 20 = 1200, so erreicht das Datagramm erfolgreich S und Pfad MTU wird entdeckt.

PMTUD funktioniert nur, wenn Y mit Fragmentierung ICMP-Nachrichten antwortet . Andernfalls weiß C nicht, dass das Datagramm gelöscht wurde.

Ihr Router sendet korrekte ICMP-Nachrichten. Alles funktioniert wie beabsichtigt. Es gibt keinen Grund, warum das Internet wegen niedrigerer MTU nicht funktioniert.


Was passiert, wenn PMTUD nicht funktioniert? (zB weil ICMP in beide Richtungen gesperrt ist)

Kein Ende der Verbindung muss tatsächlich den Pfad MTU kennen. Das IP-Protokoll kann damit umgehen. Es ist zwar nicht optimal, aber es funktioniert.

IP ist in der Lage, eine beliebige Nutzlast zu übertragen, unabhängig davon, auf welchem ​​Pfad sich die MTU befindet. Diese Eigenschaft wird durch das OSI-Modell erzwungen : IP funktioniert in Schicht 3. Schicht 4 sollte sich nicht um das zugrunde liegende Protokoll kümmern müssen, sodass für die Nutzlast keine Größenbeschränkung festgelegt werden kann.

Der grundlegende IP-Header ist 20 Byte lang. In diesem Header sind zwei interessante Flags enthalten: Nicht fragmentieren (DF) und Weitere Fragmente (MF) sowie das Fragmentversatzfeld (FO). Ich habe bereits 20 B Headergröße und das DF-Flag erwähnt. (Ich spreche von IPv4-Header, IPv6 ist anders)

IP kann eine große Nutzlast in Fragmente aufteilen und am Zielort wieder zusammenfügen.

Angenommen, wir möchten eine 5000 B-Nutzlast von C nach D übertragen, die sich beide im selben Netzwerk befinden (dh über einen Switch oder Hub verbunden sind). Die MTU der NICs von C und D beträgt 1500. Die Kopfzeile jedes Fragments ist 20 B lang, daher beträgt die maximale Datengröße für ein einzelnes Datagramm 1480 B (1500 - 20). Die Nutzlast wird in 4 Datagrammen gesendet: (MF - Weitere Fragmente, FO - Fragmentversatz )

  1. Bytes 1-1480, MF: 1, FO: 0
  2. Bytes 1481-2560, MF: 1, FO: 1480
  3. Bytes 2561–4440, MF: 1, FO: 2560
  4. Bytes 4441-5000, MF: 0, FO: 4440

Die DF-Flagge spielt in diesem Fall keine Rolle. MF ist 0 für das letzte Fragment, andernfalls 1. FO ist der Offset des ersten Bytes in einem Fragment (Offsets werden beginnend mit 0 indiziert). Diese Datagramme werden auf der Ziel-NIC automatisch neu zusammengesetzt.

Jetzt möchte C eine 5000 B-Nutzlast an S senden. Nehmen wir an, er kennt den Pfad MTU magisch (oder die NIC von C ist mit MTU = 1200 konfiguriert, daher sendet C 1200 B-Datagramme). Es wird die Nutzlast wie folgt fragmentieren:

  1. Bytes 1-1180, MF: 1, FO: 0
  2. Bytes 1181-2360, MF: 1, FO: 1180
  3. Bytes 2361-3540, MF: 1, FO: 2360
  4. Bytes 3541-4720, MF: 1, FO: 3540
  5. Bytes 4721-5000, MF: 0, FO: 4720

Dies ist die optimalste Fragmentierung der Nutzlast.

Wenn C die Pfad-MTU nicht kennt und nicht ermitteln kann, muss sie sich auf Zwischenknoten stützen, um die Nutzdaten korrekt zu fragmentieren. C hat eine MTU = 1500 und sendet daher 4 Datagramme, wie im obigen C → D-Beispiel gezeigt. Diese Datagramme müssen jedoch erneut fragmentiert werden, um über die XY-Verbindung übertragen zu werden. Jedes der von Y empfangenen Datagramme muss höchstens 1200 B lang sein, daher werden 1500 B-lange Datagramme in zwei Teile aufgeteilt: 1200 B und 320 B (20 B zusätzlich für den zweiten Header). Diese Fragmentierung führt dazu, dass 7 Datagramme (und damit 7 Header) von X nach S anstelle von Optimal 5 übertragen werden:

  1. Bytes 1-1180, MF: 1, FO: 0
  2. Bytes 1181-1480, MF: 1, FO: 1180
  3. Bytes 1481-2260, MF: 1, FO: 1480
  4. Bytes 2261-2560, MF: 1, FO: 2260
  5. Bytes 2561–4140, MF: 1, FO: 2560
  6. Bytes 4141–4440, MF: 1, FO: 4140
  7. Bytes 4441-5000, MF: 0, FO: 4440

Beachten Sie, dass diese Zeitfragmente nicht gleich sind. Datagramme werden in Zwischenknoten nicht optimal neu kombiniert und fragmentiert, es wird nur die Fragmentierung durchgeführt.

In der Praxis können Zwischenrouter so konfiguriert sein, dass sie die Durchführung der Fragmentierung selbst verweigern und Übertragungsendpunkte benötigen, um die optimale MTU zu verwenden, sodass die Fragmentierung der Zwischenknoten nicht verlässlich sein sollte. PMTUD ist bevorzugt.

Vielen Dank. Muss S in Ihrem Beispiel PMTUD für die Antwort auf C versuchen? Was ist, wenn die Firewall (im Beispiel der Bank) so eingestellt ist, dass sie keine Art von ICMP-Paketen zulässt (sagen Sie, dies ist zwischen X und Y)? Ich denke, es würde Dinge kaputt machen, aber ich neige nicht oft dazu, von dieser Art von Problemen zu hören. SilverlightFox vor 9 Jahren 0
@SilverlightFox Wenn PMTUD in beide Richtungen fehlschlägt, kann der Sender trotzdem versuchen, sich auf Zwischenrouter zu verlassen, um die Fragmentierung durchzuführen. Bitte sehen Sie meine Bearbeitung für Details. gronostaj vor 9 Jahren 0
das sieht sehr eindrucksvoll aus. Können Sie mir Quellen zum Lernen dieses Zeuges geben? barlop vor 9 Jahren 0
Ich kann [The TCP / IP Guide] (http://www.tcpipguide.com/free/index.htm) empfehlen, es ist kostenlos online verfügbar und deckt eine Menge Netzwerksachen ab. gronostaj vor 9 Jahren 0
@gronostaj: Prost - meine Frage scheint geschlossen zu sein. Ich habe es jetzt bearbeitet. Gibt es eine Chance, dass Sie für die Wiedereröffnung stimmen könnten, wenn Sie denken, dass es jetzt zum Thema ist? SilverlightFox vor 9 Jahren 0