-
Notifications
You must be signed in to change notification settings - Fork 486
/
README-udptunnel
82 lines (63 loc) · 3.38 KB
/
README-udptunnel
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
=============================================================================
UDPTUNNEL README
Author: Daniel Meekins
Contact: dmeekins - gmail
Copyright (C) 2009 Daniel Meekins
=============================================================================
This project tunnels TCP data through a UDP tunnel. The executable can act as
the server or client. The server acts as a proxy for the client, listening
on a specified UDP port and creating a connection to a TCP server that the
client specifies. The client listens on a TCP port, acting as the server that
some TCP client connects to. The client recevies any TCP data on that port
and sends the data to the udpserver, which sends it to the TCP connection it
made with the desired TCP server.
-----------------------------------------------------------------------------
1.) Building
On *nix systems in Makefile, make sure that the correct value is set for the
"OS" variable. Then just run 'make'.
On Windows, if using GCC in Cygwin, make sure the "OS" variable is set to
CYGWIN in Makefile and run 'make'.
If using the VC++ compiler (cl.exe), make sure to be in the "Visual Studio
Command Prompt", or at least have all the environment variables set correctly,
then run 'nmake.exe /f Makefile.Win32'. Also make sure the location of
WS2_32.Lib is specified correctly fo the LIBS variable.
-----------------------------------------------------------------------------
2.) Running
usage: ./udptunnel -<s|c> [-6] <args>
-c client mode (default)
<args>: [local host] <local port> <proxy host> <proxy port>
<remote host> <remote port>
-s server mode
<args>: [host] port [[host]:[port] ...]
-6 use IPv6
-h show this junks and exit
To run the server:
udptunnel -s [-6] [host] port
where the port is a UDP port to listen for messages from the udpclient and host
is the address to listen on. Use the -6 option to listen on IPv6 addresses.
Examples:
udpserver -s 4444
udpserver -s -6 2001::10:3 4444
To run the client:
udptunnel -c [-6] [local host] <local port> <proxy host> <proxy port>
<remote host> <remote port>
local host/port - Host and port for the TCP server to listen on. If the host
isn't supplied, it will listen on all available addresses.
proxy host/port - Host and port that udpserver is listening on.
remote host/port - Host and port to forward the received TCP data to. The host
is relative to the proxy machine (e.g. specifiying 127.0.0.1
is the proxy machine itself).
Use the -6 option to listen and connect using IPv6 addresses.
Example for tunneling ssh data through the tunnel between two computers with IP
addresses 192.168.1.2 (client) and 192.168.1.1 (server):
server# ./udptunnel -s 192.168.1.1 4444
client# ./udptunnel -c 127.0.0.1 3333 192.168.1.1 4444 127.0.0.1 22
client# ssh -p 3333 [email protected]
Specified destination list:
After the args in server mode, a list of hosts and ports can be included to
control who the client tries to connect to. Current this doesn't work with IPv6
and no names are translated yet, so the destination host used in the client
must be the same string as that used in the list.
This code has been tested and works on Linux, Solaris 10 x86, and Cygwin (but
requires the IPv6 extension - http://win6.jp/Cygwin/index.html). Please send
any bugs or issues to the contact listed above.