Warum 3G-Netzwerk-NAT können nicht umgangen werden?
Ich bin die Entwicklung einer p2p-chat-Programm, das funktioniert Prima über DSL zwei verschiedene NATs, aber wenn es um die 3G-USB-internet Verbindung scheitert es.
Finde ich heraus, dass es nicht mehr möglich bypass-NAT für 3g-Netzwerke sowie die bekannten p2p-Anwendungen wie Skype und torrents auch nicht umgehen können 3g-Netze , wenn Sie stoßen diese Probleme das senden von Daten über zentrale Server.
Ich will wissen, was die Architektur von 3g-Netzen . ich habe gehört, dass Sie nicht mit privaten IP -, port-Paaren nur die öffentliche Ip,port verfügbar ist, und einen öffentlichen port zugewiesen werden kann, um viele Geräte , bin ich richtig? wenn ja, wie server Daten sendet, die 3g-Netze ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich die Arbeit an open-source-middleware für multi-Agenten-Systeme, und wir hatten vor kurzem zum erstellen eines UDP-basierten transport-option für p2p-Nutzung über 4G/3G-Netzen. Wir haben getestet, diese auf T-Mobile Datentarife, sowie verschiedene Akademische Netzwerke hinter NATs und ich fühle mich ziemlich zuversichtlich, in der Umsetzung für den moment. Da es nicht zu sein scheinen keine festen Lösungen zu dieser Frage hier, ich dachte, ich würde teilen die Art von Lösung, die wir momentan eingeführt haben, in der MADARA-middleware (http://madara.sourceforge.net/) über die REGISTRY_CLIENT transport-option.
Für uns, entschieden wir uns für das, was man nennen könnte ein registry-server oder name-service (wenn Sie sind vertraut mit CORBA) für P2P-Endpunkte. Der registry-server ausführen muss, um an bestimmte öffentliche ip:port, UDP erreichen können, in eine Einweg-Nachricht. Für unsere tests, wir vermieteten eine Amazon EC2-Knoten und stellte sicher, dass die firewall-Einstellungen erlaubt UDP-Verkehr über einen UDP-port, den wir im Begriff waren, zu binden. Auf der server-Seite (die öffentliche ip:port koppeln für die registry-server), binden an den port und warten für den Kunden zu registrieren. Jeder P2P-client, der will, mit anderen zu sprechen, sendet eine Registrierungs-Nachricht an den Registry-Server
Register-Nachricht kann beliebige Inhalte. Uns haben tatsächlich keine Inhalte von anderen als header der Nachricht von unserem normalen Daten-Protokoll. Auf der server-Seite, überprüfen wir die remote-host der register-message-Absender (der P2P-client, der oben Links) per Standard-socket recv Aufrufe. Diese remote-host sollte die endpoint Informationen über die firewall, die den Schutz der P2P-client.
Zu verstehen, was hier vorgeht, müssen wir schauen, wie Nachrichten weitergeleitet werden, die für den P2P-client, um unsere öffentlichen-registry-server. Das folgende ASCII-Diagramm zeigt die Informationen aus der Ferne eine Steckdose sehen könnte (D. H. eine Beispiel-firewall-mapping) auf dem Weg von einem P2P-client für unsere EC2-server. Dies zeigt nur eine Firewall, aber es sollte die Arbeit mit mehreren NATs zwischen der P2P-client und Registry-Server, solange die NATs halten die öffentliche ip:ports öffnen, wenn der Verkehr werde durch die zugewiesene ip:port, dass bei bestimmten NAT.
Nun, wenn wir versuchten, eine Nachricht zu senden 192.168.1.10:35000 von unseren registry-server, es scheitern würde (oder zumindest, es würde fast sicherlich an der falschen Stelle). Ebenso können Sie sehen, dass die 4G-Firewall ist auch der port geändert von 35000 bis 5627. Zum senden einer Nachricht zurück an den P2P-client, müssen Sie zwei Dinge tun: 1) senden einer Antwortnachricht durch 111.111.50.34:5627 eher als was auch immer ip:port-Informationen, die wir zunächst gebunden, um auf dem P2P-client-Seite, und 2) stellen Sie sicher, dass entweder der P2P-client oder den registry-server senden Daten zurück an einander Häufig-einmal pro Sekunde schien in Ordnung für unsere Zwecke dauerhaft zu binden, um die öffentliche ip:port of 111.111.50.34:5627, in unserem Beispiel.
Als Teil unseres Protokolls, dass wir nicht nur senden Sie ein nutzloses Paket zurück zum P2P-client, registriert. Wir senden alle relevanten öffentlichen ip:port Kombination von P2P-clients, die sich in dieser Kunden-Gruppe/clique/domain/was auch immer. Grundsätzlich verschicken wir die P2P-client discovery-Informationen für alles, was die registry-server ist bewusst, dass scheint relevant zu dem P2P-client.
Zum Beispiel, wir sagen, dass zwei P2P-clients haben, benachrichtigten Sie den registry-server durch 111.111.50.34:5627 und 111.111.37.24:15234 ip:port-Bindungen durch die 4G-provider, die firewall. Ein neuer P2P-client stellt die Verbindung von 111.111.70.105:7000, und wir reagieren wieder mit den anderen 2 Ende Punkte in einer einfachen Auflistung:
Nun, auf der P2P-Client #3-Ende, nehmen Sie diese Liste aus und verwenden Sie es als potentielle Endpunkte für Ihre P2P-Anwendung. Dies sind Ihre P2P-Kollegen. Können Sie erstellen, die UDP-Pakete, um Sie über die gleiche Steckdose mit der Sie sich angemeldet haben und solange Sie nicht hinter den konservativen firewalls (wie mobile tethered-hotspots auf Ihr Handy, das aus meiner Erfahrung sind traditionell gestaltet, um zu blockieren alle eingehenden UDP-Datenverkehr über ephemeral port-Bindungen mit keine Konfiguration Einstellungen zu aktivieren port-forwarding) und der Verkehr sollte in der Lage sein, in beide Richtungen fließen.
Wie bereits erwähnt, halten die P2P UDP-verbindungen gilt, dass Sie im Grunde nur um erneut zu senden, Daten in regelmäßigen Abständen zu/von diesem Endpunkt zu halten, die öffentliche ip:port binding lebendig und aktiv auf jeder firewall den Schutz der P2P-clients. Diese kann getan werden, indem in regelmäßigen Abständen die Rückübertragung der Anmeldung der öffentlichkeit Informationen zu den registry-server und/oder empfangen von UDP-Paketen von anderen P2P-clients auf die public-ip:port, der den 4G-firewall reserviert hat, um Ihre P2P-client.
Läuft es für die Statistik. Damit eine Verbindung hergestellt werden kann, haben Sie ein Paket zu senden, in den port, dass Sie sind, und Sie haben ein Paket zu senden, in der port, den Sie bei sind. Wenn Sie senden die falsche port-Nummer oder senden Sie die falsche port-Nummer, die Sie vermissen und es wird keine Verbindung hergestellt. Wenn Sie beide gleichzeitig binden an einen port aus und senden Sie ein Paket richtet sich an den anderen ip-Adresse, haben Sie eine 1 in 65535 (65535 wird die Anzahl der ports auf eine ip-Adresse) chance auf ein Paket senden in Ihre Hafen, und Sie haben eine etwa 1 65535 chance auf ein Paket senden in Ihre port. Also die chance, dass Sie das herstellen einer Verbindung ist (1/65535) * (1/65535), oder (1 /65535^2).
Können Sie nicht wissen, Ihre port-Nummer für jede nachfolgende Verbindung, da für jede neue ausgehende Verbindung, der router zufällig gibt Sie eine neue port-Nummer auf das Intervall zwischen 1024 und 65535. Also, wenn Sie Fragen Sie einen server, was Ihre ip-Adresse und port-Nummer ist, es kann Ihnen sagen, die richtige ip (Ihre ip-Adresse ändert sich nicht sehr oft, es sei denn, Sie das Telefon ausschalten oder sowas), aber die port-Nummer wird sich ändern. Wenn Sie versuchen, zu erraten, die port-Nummer es gibt eine ( (65535-1024-1) /(65535-1024) ), oder 99.998% - Veränderung der Sie erraten es falsch, vorausgesetzt, dass die Anzahl der möglichen Portnummern zu wählen ist (65535-1024).
So, es sei denn, der port-Nummern sind vorhersehbar (die in vielen 4G-Netzen sind Sie nicht), Sie sind abgespritzt - keine chance.
Wikipedia Ansprüche Carrier-Grade-NAT kann befahren werden, die durch P2P-Anwendungen, auch in Gegenwart von port-Freigabe:
Jedoch keine Referenzen werden zitiert, für diesen Absatz.
Für die Fluggesellschaften, Sie können nicht wählen Sie den gleichen externen port als Ihre internen Kunden. Dies bricht sowohl TCP-und UDP-hole-punching. Siehe hier:
UDP hole punching nicht durch, auf 3G
Könnte es möglich sein, Sie einfach nicht erraten können, die port-Nummer genau. Sie kann ausgeschaltet werden, indem Sie ein wenig und nicht in der Lage sein, um die Verbindung herzustellen. Für eine robuste Loch-Stanz-Methode, die über symmetrische-und Large Scale NAT, versuchen Sie eine dieser Methoden:
http://tools.ietf.org/id/draft-takeda-symmetric-nat-traversal-00.txt
https://www.goto.info.waseda.ac.jp/~wei/Datei/wei-apan-v10.pdf
http://journals.sfu.ca/apan/index.php/apan/article/view/75/pdf_31
https://drive.google.com/file/d/0B1IimJ20gG0SY2NvaE4wRVVMbG8/view