music,code,dialog,rest
分类: Java
2012-08-07 01:43:47
大家都知道,SSH Tunnel可以实现 TCP Connection 的端口转发。
但是无法实现UDP的端口转发。
现在问题来了,怎么实现UDP通过现有TCP Connection的端口转发?
一查网上有一堆,看了一下基本都是Linux to Linux的。
仔细看看,只有一个看来还有点靠谱。
那个mrq3的java版本的udp转tcp,再tcp转udp转发器还比较好用。
那个英文的说明文档写的也太晦涩了,查了一下源码的含义,终于搞明白了配置文件的含义。
运行起来还是比较顺畅方便的。原来,这个东西是开发出来给游戏用的。
现在,我也拿来做远程测试,发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,远程服务器的目的是将到达tcp:1813端口的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