Hole Punching
Zur Navigation springen
Zur Suche springen
Was ist das?
- Hole Punching ist ein Prozess, der in Netzwerken verwendet wird, um Direktverbindungen zwischen zwei Hosts herzustellen, die sich jeweils hinter einem NAT befinden.
- Das Verfahren nutzt die Tatsache aus, dass die meisten Firewalls und NATs Antworten auf ausgehende Verbindungen zulassen, auch wenn sie keine eingehenden Verbindungen zulassen.
UDP Hole Punching
- Beide Endpunkte (Peer A und Peer B) stellen eine Verbindung zu einem öffentlich zugänglichen Server (oft ein STUN-Server) her. *Dieser Server ist nicht hinter einem NAT und ist von beiden Peers erreichbar.
- Wenn Peer A und Peer B sich mit dem STUN-Server verbinden, registriert der Server ihre öffentlichen IP-Adressen und Ports, die vom NAT für diese Verbindungen zugeteilt wurden.
- Der STUN-Server teilt Peer A die öffentliche IP-Adresse und den Port von Peer B mit und umgekehrt.
- Peer A und Peer B senden nun jeweils ein UDP-Paket an die Adresse und den Port des jeweils anderen.
- Da die NAT-Geräte diese Verbindung als Antwort auf eine ausgehende Verbindung betrachten, lassen sie die Pakete passieren und "stanzen" sozusagen ein "Loch" in der Firewall.
- Jetzt können Peer A und Peer B direkt miteinander kommunizieren, da ihre NAT-Geräte die Verbindung akzeptieren.
TCP Hole Punching
- TCP Hole Punching ist komplexer als UDP Hole Punching, da TCP eine verbindungsorientierte Übertragung ist, die einen Handshake erfordert, um eine Verbindung herzustellen.
- Wie im UDP-Verfahren stellen beide Peers eine Verbindung zu einem öffentlichen Server her und erhalten die öffentlichen Adressen und Ports des jeweils anderen.
- Beide Peers versuchen gleichzeitig, eine TCP-Verbindung zum anderen herzustellen.
- Das führt dazu, dass die NAT-Geräte die SYN-Pakete (Verbindungsanforderung) weiterleiten, aber die SYN-ACK-Pakete (Verbindungsbestätigung) schlagen fehl, da noch keine eingehende Verbindung akzeptiert wurde.
- Da beide Peers versucht haben, eine Verbindung aufzubauen, lassen die NAT-Geräte nun die nachfolgenden SYN-ACK-Pakete passieren, da sie diese als Antworten auf die initialen SYN-Pakete betrachten.
- Nun kann eine normale TCP-Verbindung zwischen den Peers hergestellt werden.
- In beiden Fällen (UDP und TCP) erlaubt das Hole Punching den Peers, direkt miteinander zu kommunizieren, auch wenn sie sich hinter NAT-Geräten oder Firewalls befinden.