gost 2.1本地端口转发功能的使用说明

876 views
Skip to first unread message

Rain Zen

unread,
Aug 31, 2016, 2:37:43 AM8/31/16
to go-gost
2.1版本正在开发中,主要增加端口转发功能,这里主要说一下本地端口转发的使用。

gost的本地端口转发功能类似于ssh中 -L参数的功能(ssh端口转发的使用可以参考这篇文章),而与ssh的区别在于:

1. gost支持UDP端口的转发。
2. gost支持通过转发链进行端口转发。

假设有三台机器:local_host, proxy_host, remote_host
local_host就是本地我们正在使用的主机,可以访问proxy_host但不能直接访问remote_host,
proxy_host为代理主机,可以访问local_host和remote_host,
remote_host为远程的一台主机,与proxy_host连通。

local_host <-> proxy_host <-> remote_host

先说说TCP端口转发的使用:

我们想在local_host上用ssh登录到remote_host上(22端口)就可以使用本地端口转发功能了:
gost -L=tcp://:2222/remote_host:22 -F proxy_host:8080

这里假设proxy_host上部署了http代理并监听在8080端口上。

然后在local_host执行:
$ ssh -p 2222 root@localhost

就可以登录到remote_host上了。


再来看看UDP端口转发的使用:

还是上面的场景,现在想访问remote_host上的UDP 53端口,也就是DNS服务:
gost -L=udp://:5353/remote_host:53 -F socks://proxy_host:1080

这里假设proxy_host上部署了gost socks5代理并监听在1080端口上。

然后在local_host上执行:
$ dig @localhost -p 5353 www.google.com

此时就相当于访问到remote_host的UDP 53端口。

注意: UDP的端口转发使用了UDP-over-TCP,所以转发链的末端(最后一个-F参数)一定要是gost socks5类型。

wz

unread,
Aug 31, 2016, 5:24:15 AM8/31/16
to go-gost
感觉表达式和前代不统一,为何不引入一个参数类似-p 用来表达端口转发,而原来的-F还是用来表达节点转发(node)
这样表达式就可以写成


$ ssh -p 2222 root@localhost

gost -L=tcp://:2222 -F proxy_host:8080 -p remote_host:22

Rain Zen

unread,
Aug 31, 2016, 8:47:19 AM8/31/16
to wz, go-gost
我的参数设计原则是尽量不引入新参数,增加新参数就会增加配置的复杂度,当初选择使用类url的方式来设定参数,一方面是用起来比较自然解析较简单,另一方面也利于后面新功能的扩展。
另外此次增加的功能对-F参数及其功能没有做任何修改,只是对-L参数功能进行了扩展。
wz <wz7...@gmail.com>于2016年8月31日 周三17:24写道:
--
您收到此邮件是因为您订阅了Google网上论坛上的“go-gost”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到go-gost+u...@googlegroups.com
要发帖到此群组,请发送电子邮件至go-...@googlegroups.com
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/go-gost/f0e58d80-6de8-46a3-827e-f23191177fa3%40googlegroups.com
要查看更多选项,请访问https://groups.google.com/d/optout
Message has been deleted

wz

unread,
Aug 31, 2016, 9:38:03 AM8/31/16
to go-gost
我回复的帖子怎么自动删除了?

wz

unread,
Aug 31, 2016, 10:01:05 AM8/31/16
to go-gost

a>b>c>d>e 这种表达式很直观
e<d且a>b>c>d 这种表达就比较绕

从构建代码角度看,也许你是对的,引入参数,增加了复杂度,
但是上面的写法感觉不直观啊,可能你借鉴了ssh的写法,但如果按照传统写法,起码数据流的走向是非常直观清晰的。
当然,如果对这种写法习惯了,使用也不会有什么问题

Rain Zen

unread,
Aug 31, 2016, 10:08:26 AM8/31/16
to go-gost
你的帖子被自动标记为垃圾帖了 : ( 我手动恢复了。

使用新的参数可能会比较直观,但这样的话-L参数就不能同时设置多个了,比如我想转发多个端口:

gost -L=tcp://:2222/host1:22 -L=tcp://:2221/host2:21 -F=...

如果使用新参数就做不到了,而且写在一起可以很直观的看到端口的对应关系:
:2222 -> host1:22, :2221 -> host2:21

后面还会增加远程端口转发功能,这样可能还要加参数。



在 2016年8月31日星期三 UTC+8下午10:01:05,wz写道:

luxun

unread,
Sep 3, 2016, 12:32:05 PM9/3/16
to go-gost
是不是和ngrok一样啊?

goge...@gmail.com

unread,
Jan 25, 2019, 4:07:58 AM1/25/19
to go-gost


在 2016年9月4日星期日 UTC+8上午12:32:05,luxun写道:
是不是和ngrok一样啊?


比ngrok安全点 
Reply all
Reply to author
Forward
0 new messages