Next: Extreme tunnelling
Up: How does it work?
Previous: What a firewall does
Subsections
Write a server and a client that connect to each other via a TCP
connection (to get through the firewall). Make the server listen for TCP
connections on port 6667. Make the client listen for UDP packets on port 27960.
Then, a client can connect (in quake) to localhost:27960, and all UDP data can
be forwarded over the tunnel as TCP packets. The server can be run in an
unfirewalled place that can exchange UDP packets happily with the Quake server,
the client can be run on the PC of the person trying to play Quake.
When data is received by the client (the UDP packets from Quake) it's turned
into TCP data, sent to the tunnel server, converted back to a UDP packet, and
sent from there to the Quake server. Now, the quake server thinks that the
tunnel server is actually where the person connecting to the quake server is,
and as such sends all data back to that. The tunnel server does exactly the same
thing, turns the UDP packets to TCP data, sends them over the tunnel to the
tunnel client, which sends them as UDP to Quake on that PC. Cunning eh?
Lagggggggggggg. Superb :/ Whilst there was no packet loss
at all, when parts of the TCP connection went astray the entire TCP stream
waited for the lost parts to be replaced. Not good! Basically this tunnel was
unplayable :(
Next: Extreme tunnelling
Up: How does it work?
Previous: What a firewall does
Christopher Pearson
2003-01-27