Announcement

Collapse
No announcement yet.

Tunneling NQ traffic

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Tunneling NQ traffic

    Hi!
    Does anybody have a successful experience of tunneling NQ UDP over TCP?
    I tried several tunnels, but for unknown reason they stopped working after transmitting several packets.

  • #2
    Originally posted by saproj View Post
    Hi!
    Does anybody have a successful experience of tunneling NQ UDP over TCP?
    I tried several tunnels, but for unknown reason they stopped working after transmitting several packets.
    I found out for myself that it opens random available UDP ports after the handshake and uses each one with a single socket (stupid). There's no way that I know of to fix this without having clients compatible to the server's new code. If you would like to dabble in the code, see my thread about it for my workaround. I just put in a command-line option to force the ports into a certain range.

    See here: http://quakeone.com/forums/quake-hel...orwarding.html

    If you're tunneling ALL UDP ports to TCP, it should work. If that's what you're already doing, I have no idea why it's not working.
    sigpic

    Comment


    • #3
      Originally posted by Skutarth View Post
      I found out for myself that it opens random available UDP ports after the handshake and uses each one with a single socket (stupid).
      Thanks a lot. I didn't know about creating an additional socket. I only tried to tunnel port 26000.

      I modified _Datagram_CheckNewConnections() so that dfunc.OpenSocket(0) is passed one of the predefined port numbers instead of zero.
      But the connection still didn't work. The client was rejected because of this check in Datagram_GetMessage():
      Code:
      	if (sfunc.AddrCompare(&readaddr, &sock->addr) != 0)
      That was because the tunneling program used different source sockets for port 26000 and the additional port. (The original quake clients must be reusing socket, I suppose.)
      So I did this quick and dirty hack:
      Code:
      +	sock->addr=readaddr;
      -	continue;
      And finally tunneling worked!

      Comment


      • #4
        Well, im sure im not the only one who is thinking "What did this prove or disprove? Is there some type of real-world application? What does it all mean? Is this like plotting your road-trip in a car,by pre determing routing of networks on the net?


        FEED MY BRAIN PLZ, WE HAWNGRY
        Want to get into playing Quake again? Click here for the Multiplayer-Startup kit! laissez bon temps rouler!

        Comment


        • #5
          I was just tinkering with this code today trying to figure out why Qrack isnt connecting to chi.quakeone.com.
          www.quakeone.com/qrack | www.quakeone.com/cax| http://en.twitch.tv/sputnikutah

          Comment


          • #6
            Originally posted by Mindf!3ldzX View Post
            Well, im sure im not the only one who is thinking "What did this prove or disprove? Is there some type of real-world application? What does it all mean? Is this like plotting your road-trip in a car,by pre determing routing of networks on the net?
            Dude, I described the way to play NQ over the Internet when UDP packets cannot pass through NAT/firewall. There is a solution called "tunneling over TCP", but it cannot be applied easily because of the way NQ servers are implemented.
            My post might be useful to other people dealing with the same problem. As Skutarth's post was useful to me.

            Comment


            • #7
              Originally posted by saproj View Post
              Dude, I described the way to play NQ over the Internet when UDP packets cannot pass through NAT/firewall. There is a solution called "tunneling over TCP", but it cannot be applied easily because of the way NQ servers are implemented.
              My post might be useful to other people dealing with the same problem. As Skutarth's post was useful to me.
              and to a newb like myself, who merely shoots other newbs in games, it basically said "Techno-Babble-Jargon 01010101" . I had no comprehension, thanks for helping though!
              Want to get into playing Quake again? Click here for the Multiplayer-Startup kit! laissez bon temps rouler!

              Comment


              • #8
                Originally posted by saproj View Post
                Thanks a lot. I didn't know about creating an additional socket. I only tried to tunnel port 26000.

                I modified _Datagram_CheckNewConnections() so that dfunc.OpenSocket(0) is passed one of the predefined port numbers instead of zero.
                But the connection still didn't work. The client was rejected because of this check in Datagram_GetMessage():
                Code:
                	if (sfunc.AddrCompare(&readaddr, &sock->addr) != 0)
                That was because the tunneling program used different source sockets for port 26000 and the additional port. (The original quake clients must be reusing socket, I suppose.)
                So I did this quick and dirty hack:
                Code:
                +	sock->addr=readaddr;
                -	continue;
                And finally tunneling worked!

                Ok this seems nice , how do I use this udp->tcp tunneling now ?
                What programme did u use and what quake client.
                If this would work I could play quake again !!
                Home Sweet Home = Castle of the Damned e1m2 anyone ??

                Comment


                • #9
                  Mindz I felt the same tension, dont despair. I believe he's just trying to determine a method of connecting to a Quake server that is behind a router. In ProQuake after the initial handshake, the server opens a new socket for the client, which can raise problems with some port filtering software.
                  Last edited by R00k; 07-05-2010, 12:44 PM.
                  www.quakeone.com/qrack | www.quakeone.com/cax| http://en.twitch.tv/sputnikutah

                  Comment


                  • #10
                    Originally posted by Bong View Post
                    Ok this seems nice , how do I use this udp->tcp tunneling now ?
                    What programme did u use and what quake client.
                    If this would work I could play quake again !!
                    I use http://tunnel.mrq3.com/ and darkplaces.

                    Comment


                    • #11
                      Originally posted by saproj View Post
                      Dude, I described the way to play NQ over the Internet when UDP packets cannot pass through NAT/firewall. There is a solution called "tunneling over TCP", but it cannot be applied easily because of the way NQ servers are implemented.
                      My post might be useful to other people dealing with the same problem. As Skutarth's post was useful to me.
                      I'm sure you could have figured all of it out for yourself, but I'm glad I helped you out. Vanilla NetQuake networking code is badly designed and it took me quite a while to sift through all of it to understand how it works. It's quite a struggle to figure things out when they're done in such a nonstandard, crappy way (using ports like sockets, et cetera).
                      sigpic

                      Comment

                      Working...
                      X