Signed-off-by: arraykeys@gmail.com <arraykeys@gmail.com>
This commit is contained in:
24
README.md
24
README.md
@ -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. 完成
|
||||||
|
|
||||||
|
|||||||
@ -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)
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user