跨平台UDP over SSH Tunnel

7379阅读 1评论2012-08-07 zenith518
分类:Java

大家都知道,SSH Tunnel可以实现 TCP Connection 的端口转发。

但是无法实现UDP的端口转发。

现在问题来了,怎么实现UDP通过现有TCP Connection的端口转发?

一查网上有一堆,看了一下基本都是Linux to Linux的。

仔细看看,只有一个看来还有点靠谱。

那个mrq3java版本的udptcp,再tcpudp转发器还比较好用。

那个英文的说明文档写的也太晦涩了,查了一下源码的含义,终于搞明白了配置文件的含义。

运行起来还是比较顺畅方便的。原来,这个东西是开发出来给游戏用的。

现在,我也拿来做远程测试,发UDP包还是不错的。

关键是客户端的配置,理解ssh tunnel的命令行,这个也比较好理解了。

 

client.txt

 #用户名和密码,必须和服务器侧设的一致

# Login data for the server

username = ech

password = password

 

#已知的Tcp Connection端口号,我这里主要用来发Radius的包,所以是1813端口,但是这里表达的是tcp的协议。

#我首先用ssh tunnel 建了一个 1813端口的tcp port forward,远程一台服务器,运行mrq3的服务端模式。

# 在远程服务器上监听tcp:1813,远程服务器的目的是将到达tcp1813端口的tcp payload,转成udp的包。

# 这里有人会问了,目的服务器的udp端口呢,巧妙地方在后面的配置里面。

 

# Address of the tunnel server

tunnel = localhost:1813

 

#启用tcp并发连接的数量,目前最大是30个。

# Number of TCP connections to make (1-30)

connections = 1

 

#需要转发的目的服务器地址。

#原来目的服务器的地址再客户端指定的。作者巧妙借用了SSH TCP本地端口转发的思路,将目的服务器的配置通过Java远程对象,

#UDP tunnel建立的时候,通过认证后,将配置传给了服务端。

 

# First two of these are punkbuster and key auth

redirect1 = 1813 -> 192.168.10.13:1813

#redirect2 = 27952 -> 192.246.40.56:27952

 

server.txt

# 服务端模式,绑定TCP监听端口。

# Local IP and port to bind to (optional), use 0.0.0.0 for all local IP addresses

bindto = 0.0.0.0:1813

 

# Usernames and passwords

user1 = ech

pass1 = password

 

 

软件下载:

 

zenith518

2012/8/7

最近发现,作者已经将该主页下线了。
特此上传备份


2013/10/26

上一篇:使用Perl编写Raw Tcp Proxy插件
下一篇:再谈带符号整数和大小Endian的关系

文章评论