Router und NAT-Lochen? [geschlossen]

1

Ich versuche zu verstehen, warum UDP-Lochen funktioniert.

  1. Angesichts Peers A, Bhinter einem NAT-Router und Servermit offenem Port 80.
  2. Asendet ein Paket Servervom Port 1234. Dadurch öffnet der Router eine Route von / nach A:1234undS:80
  3. Bsendet ein Paket Servervom Port 4321. Dadurch öffnet der Router eine Route von / nach B:4321undS:80

An dieser Stelle Asollte in der Lage sein zu senden direkt Pakete an B:4321und Bsollte in der Lage sein , Pakete zu senden direkt an A:1234.

Ich habe zwei Fragen:

  1. Ist mein Verständnis des UDP-Lochens korrekt?
  2. Warum überprüfen Router nicht, ob die IP-Adresse der Paketquelle übereinstimmt Server? Ist das nicht ein Sicherheitsrisiko?

UPDATE : Beantworte hier meine eigene Frage, da sie als geschlossen markiert ist. Das Lochen von NAT-Löchern funktioniert wie folgt:

  1. Angesichts Peers A, Bhinter einem NAT-Router und Server.
  2. Aund eine BVerbindung zu Serverund eine Liste der Ports sendet sie für abgehende / ankommende Verbindungen mit werden.
  3. Angenommen, APort 1234und Port werden Baufgelistet 4321, dann wird Aein Paket von Port 1234zu BOn-Port gesendet 4321. Dadurch öffnet der Router eine Route von / nach A:1234und B:4321.
  4. Der Router von B blockiert die Anforderung stillschweigend, aber der Router von A hält die Verbindung offen und wartet auf eine Antwort.
  5. Bsendet ein Paket von Port 4321zu APort 1234. Dadurch öffnet der Router eine Route von / nach B:4321und A:1234.
  6. ADer Router von akzeptiert die eingehende Verbindung und denkt, dass dies eine Antwort auf Schritt 3 ist.
  7. Wir sind fertig. Beachten Sie, dass wir während dieses Prozesses nur ausgehende Verbindungen von Aund verwendet haben B.
Gili
quelle
Ich glaube, dass das normalerweise so funktioniert: Angenommen, A vertraut B nicht und B vertraut A nicht (z. B. Hardware- oder Software-Firewall). Nehmen Sie an, dass S sowohl von A als auch von B als vertrauenswürdig und verbindbar eingestuft wird. Da S als VERTRAUEN eingestuft wird, denken sowohl A als auch B, dass Kommunikation zu und von S kommt (naja, weil es in Ihrem Beispiel technisch so ist) - weil A und B vertrauen S - auch wenn A und B tatsächlich über S miteinander kommunizieren - ich glaube, das ist der Fall, in dem es funktioniert.
Sajawikio
@sajawikio, du hast meine Frage falsch verstanden. In meinem Beispiel Aund Bkommunizieren direkt miteinander. Ich habe die Frage aktualisiert, um dies deutlicher zu machen.
Gili
Ich glaube, dass in diesem Szenario A und B nicht direkt von der Firewall blockiert werden, aber A und B haben zunächst keine Ahnung, wie sie sich erreichen können. A und B in Ihrem Szenario setzen sich mit S in Verbindung und tauschen "Endpunktinformationen" aus, um direkt ohne die Hilfe von S zu kommunizieren (S gibt die Endpunktinformationen nur an beide Clients weiter). In einigen Fällen ist es nicht möglich, Lochen durchzuführen, wenn zwischen den beiden Servern zu viele NATs vorhanden sind und wie zuvor beschrieben über S gesprochen werden muss - siehe brynosaurus.com/pub/net/p2pnat
sajawikio