Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>

This commit is contained in:
arraykeys@gmail.com
2017-10-09 15:33:09 +08:00
parent f270885a4d
commit 7b247384ec
2 changed files with 18 additions and 16 deletions

View File

@ -230,10 +230,10 @@ VPS(IP:22.22.22.33)执行:
步骤: 步骤:
1. 在vps上执行 1. 在vps上执行
`./proxy tbridge -p ":33080" -C proxy.crt -K proxy.key` `./proxy tbridge -p ":33080" -C proxy.crt -K proxy.key`
`./proxy tserver -p ":28080" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key` `./proxy tserver -r ":28080@:80" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key`
1. 在公司机器A上面执行 1. 在公司机器A上面执行
`./proxy tclient -p "127.0.0.1:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key` `./proxy tclient -C proxy.crt -K proxy.key`
1. 完成 1. 完成
@ -248,10 +248,10 @@ VPS(IP:22.22.22.33)执行:
步骤: 步骤:
1. 在vps上执行 1. 在vps上执行
`./proxy tbridge -p ":33080" -C proxy.crt -K proxy.key` `./proxy tbridge -p ":33080" -C proxy.crt -K proxy.key`
`./proxy tserver --udp -p ":53" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key` `./proxy tserver --udp -r ":53@:53" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key`
1. 在公司机器A上面执行 1. 在公司机器A上面执行
`./proxy tclient --udp -p "127.0.0.1:53" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key` `./proxy tclient --udp -P "22.22.22.22:33080" -C proxy.crt -K proxy.key`
1. 完成 1. 完成
@ -269,17 +269,19 @@ VPS(IP:22.22.22.33)执行:
`./proxy tbridge -p ":33080" -C proxy.crt -K proxy.key` `./proxy tbridge -p ":33080" -C proxy.crt -K proxy.key`
1. 在公司机器A上面执行 1. 在公司机器A上面执行
`./proxy tclient -p "127.0.0.1:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key` `./proxy tclient -P "22.22.22.22:33080" -C proxy.crt -K proxy.key`
1. 在家里电脑上执行 1. 在家里电脑上执行
`./proxy tserver -p ":28080" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key` `./proxy tserver -r ":28080@:80" -P "22.22.22.22:33080" -C proxy.crt -K proxy.key`
1. 完成 1. 完成
**4.5、高级用法二** **4.5、高级用法二**
提示: 提示:
一个client和一个server是一对,如果要暴露多个端口,需要使用--k参数进行分组, 如果同时有多个client连接到同一个bridge,需要指定不同的key,可以通过--k参数设定,--k可以是任意唯一字符串,
--k可以是任意唯一字符串,只要多个端口使用的不一样即可. 只要在同一个bridge上唯一即可.
server连接到bridge的时候,如果同时有多个client连接到同一个bridge,需要使用--k参数选择client.
暴露多个端口重复-r参数即可.-r格式是:"本地IP:本地端口@clientHOST:client端口"
背景: 背景:
- 公司机器A提供了web服务80端口,ftp服务21端口 - 公司机器A提供了web服务80端口,ftp服务21端口
@ -292,12 +294,10 @@ VPS(IP:22.22.22.33)执行:
步骤: 步骤:
1. 在vps上执行 1. 在vps上执行
`./proxy tbridge -p ":33080" -C proxy.crt -K proxy.key` `./proxy tbridge -p ":33080" -C proxy.crt -K proxy.key`
`./proxy tserver -p ":28080" --k web -P "127.0.0.1:33080" -C proxy.crt -K proxy.key` `./proxy tserver -r ":28080@:80" -r ":29090@:21" --k test -P "127.0.0.1:33080" -C proxy.crt -K proxy.key`
`./proxy tserver -p ":29090" --k ftp -P "127.0.0.1:33080" -C proxy.crt -K proxy.key`
1. 在公司机器A上面执行 1. 在公司机器A上面执行
`./proxy tclient -p "127.0.0.1:80" --k web -P "22.22.22.22:33080" -C proxy.crt -K proxy.key` `./proxy tclient --k test -P "22.22.22.22:33080" -C proxy.crt -K proxy.key`
`./proxy tclient -p "127.0.0.1:21" --k ftp -P "22.22.22.22:33080" -C proxy.crt -K proxy.key`
1. 完成 1. 完成

View File

@ -39,12 +39,13 @@ func (s *TunnelServerManager) Start(args interface{}) (err error) {
} else { } else {
log.Fatalf("parent required") log.Fatalf("parent required")
} }
//log.Printf("route:%v", *s.cfg.Route)
for _, info := range *s.cfg.Route { for _, info := range *s.cfg.Route {
_routeInfo := strings.Split(info, "@") _routeInfo := strings.Split(info, "@")
server := NewTunnelServer() server := NewTunnelServer()
local := _routeInfo[0] local := _routeInfo[0]
remote := _routeInfo[1] remote := _routeInfo[1]
server.Start(TunnelServerArgs{ err = server.Start(TunnelServerArgs{
Args: s.cfg.Args, Args: s.cfg.Args,
Local: &local, Local: &local,
IsUDP: s.cfg.IsUDP, IsUDP: s.cfg.IsUDP,
@ -52,6 +53,9 @@ func (s *TunnelServerManager) Start(args interface{}) (err error) {
Key: s.cfg.Key, Key: s.cfg.Key,
Timeout: s.cfg.Timeout, Timeout: s.cfg.Timeout,
}) })
if err != nil {
return
}
} }
return return
} }
@ -91,7 +95,6 @@ func (s *TunnelServer) Start(args interface{}) (err error) {
host, port, _ := net.SplitHostPort(*s.cfg.Local) host, port, _ := net.SplitHostPort(*s.cfg.Local)
p, _ := strconv.Atoi(port) p, _ := strconv.Atoi(port)
s.sc = utils.NewServerChannel(host, p) s.sc = utils.NewServerChannel(host, p)
if *s.cfg.IsUDP { if *s.cfg.IsUDP {
err = s.sc.ListenUDP(func(packet []byte, localAddr, srcAddr *net.UDPAddr) { err = s.sc.ListenUDP(func(packet []byte, localAddr, srcAddr *net.UDPAddr) {
s.udpChn <- UDPItem{ s.udpChn <- UDPItem{
@ -273,8 +276,7 @@ func (s *TunnelServer) UDPConnDeamon() {
log.Printf("write udp packet to %s fail ,flush err:%s ,retrying...", *s.cfg.Parent, err) log.Printf("write udp packet to %s fail ,flush err:%s ,retrying...", *s.cfg.Parent, err)
goto RETRY goto RETRY
} }
//log.Printf("write packet %v", *item.packet)
log.Printf("write packet %v", *item.packet)
} }
}() }()
} }