gost icon indicating copy to clipboard operation
gost copied to clipboard

FAQs整理

Open ginuerzh opened this issue 4 years ago • 39 comments

此处为FAQs汇总帖,可以提出你的疑问,或给出见解,后面会统一放到WIKI中。

ginuerzh avatar Apr 11 '20 06:04 ginuerzh

gost -L red://:12345 -F=mws://www.baidu.com:80?ip=122.223.22.11 iptables -t nat -A OUTPUT -p tcp --match multiport ! --dports 12345,80 -j DNAT --to-destination 127.0.0.1:12345 除了80,12345 端口其他测试都没问题, 但是80端口我日常需要使用,远程连接也需要, 该怎么对特定ip:80进行例外? 而不是对全部80例外?

f4nff avatar Apr 11 '20 07:04 f4nff

  • gost 内置的 TLS 证书是每次随机生成的还是固定的?若是固定的,是不是相当于所有人共用一个私钥,非常不安全,需要注明一下。
  • gost 的 ws 作为一种传输协议能否像 v2ray 一样添加host混淆(即使用不同于 server ip 的域名)?或者当前有没有类似的方案实现?

poly-1 avatar Apr 14 '20 15:04 poly-1

  • gost 内置的 TLS 证书是每次随机生成的还是固定的?若是固定的,是不是相当于所有人共用一个私钥,非常不安全,需要注明一下。

每次启动会生成一次,也可以使用手动生成的证书文件。

  • gost 的 ws 作为一种传输协议能否像 v2ray 一样添加host混淆(即使用不同于 server ip 的域名)?或者当前有没有类似的方案实现?

目前不支持host混淆。

ginuerzh avatar Apr 15 '20 08:04 ginuerzh

gost -L http+ws://11111:22222@:80

请问这种带验证的是加密的吗?也就是墙可以看到传输的内容吗?

PHCSJC avatar Apr 17 '20 06:04 PHCSJC

  1. 当具有多个 -L 和 -F 参数时,实际效果是否如下: 对于每一个 -L 指定的服务,都会按照多个 -F 参数指定的一系列节点进行同样的链式转发

  2. 上述做法中,多个-L参数的摆放顺序是否与最终结果无关?

  3. 上述做法是否等效于在配置文件中配置了多个ServeNodes和ChainNodes节点?

  4. relay protocal 实现的是 udp over tcp 吗?

poly-1 avatar Apr 20 '20 03:04 poly-1

bypass支持先解析后过滤ip吗? 比如 gost -L :8080 -F 192.168.1.1:8081?bypass=chnroutes.ip 这时如果用ip访问,则会跳过下级代理直接访问,但是如果用域名访问,即使域名解析出来在 chnroutes.ip 的范围内,仍然会通过下级代理访问。 甚至下游是socks5协议也是一样。

bash99 avatar Apr 20 '20 15:04 bash99

gost -L http+ws://11111:22222@:80

请问这种带验证的是加密的吗?也就是墙可以看到传输的内容吗?

加密和验证是两种不同的功能,二者没有联系。

ginuerzh avatar Apr 21 '20 02:04 ginuerzh

  1. 当具有多个 -L 和 -F 参数时,实际效果是否如下: 对于每一个 -L 指定的服务,都会按照多个 -F 参数指定的一系列节点进行同样的链式转发

是的,可以看成是多对一的关系,多个-L对应一个链。

  1. 上述做法中,多个-L参数的摆放顺序是否与最终结果无关?

无关。

  1. 上述做法是否等效于在配置文件中配置了多个ServeNodes和ChainNodes节点?

是的。多个ServeNodes相当于多个入口,共用一个转发链(ChainNodes)。

  1. relay protocal 实现的是 udp over tcp 吗?

relay是协议,与具体的传输类型无关,可以是over TCP (tls, ws等),也可以是over UDP(kcp, quic)。

ginuerzh avatar Apr 21 '20 02:04 ginuerzh

bypass支持先解析后过滤ip吗? 比如 gost -L :8080 -F 192.168.1.1:8081?bypass=chnroutes.ip 这时如果用ip访问,则会跳过下级代理直接访问,但是如果用域名访问,即使域名解析出来在 chnroutes.ip 的范围内,仍然会通过下级代理访问。 甚至下游是socks5协议也是一样。

暂不支持解析后过滤。

ginuerzh avatar Apr 21 '20 02:04 ginuerzh

gost -L http+ws://11111:22222@:80

请问这种方式,墙可以看到传输的内容吗?

PHCSJC avatar Apr 21 '20 02:04 PHCSJC

  • gost 内置的 TLS 证书是每次随机生成的还是固定的?若是固定的,是不是相当于所有人共用一个私钥,非常不安全,需要注明一下。
  • gost 的 ws 作为一种传输协议能否像 v2ray 一样添加host混淆(即使用不同于 server ip 的域名)?或者当前有没有类似的方案实现?

可以配合自定义域名解析,然后ws地址填上域名就可以,我目前亲测是可行的。

除了可以自定义DNS服务用来解析域名外,还可以手动指定域名-IP映射关系,类似于Linux下的/etc/hosts文件功能。

gost -L=:8080?hosts=hosts.txt

配置文件的格式:

# options
reload  10s

# IP_address    canonical_hostname     [aliases...]
127.0.0.1       localhost
192.168.1.10    foo.mydomain.org       foo
192.168.1.13    bar.mydomain.org       bar baz

vaakian avatar Apr 21 '20 04:04 vaakian

  • gost 内置的 TLS 证书是每次随机生成的还是固定的?若是固定的,是不是相当于所有人共用一个私钥,非常不安全,需要注明一下。
  • gost 的 ws 作为一种传输协议能否像 v2ray 一样添加host混淆(即使用不同于 server ip 的域名)?或者当前有没有类似的方案实现?

可以配合自定义域名解析,然后ws地址填上域名就可以,我目前亲测是可行的。

除了可以自定义DNS服务用来解析域名外,还可以手动指定域名-IP映射关系,类似于Linux下的/etc/hosts文件功能。

gost -L=:8080?hosts=hosts.txt

配置文件的格式:

# options
reload  10s

# IP_address    canonical_hostname     [aliases...]
127.0.0.1       localhost
192.168.1.10    foo.mydomain.org       foo
192.168.1.13    bar.mydomain.org       bar baz

谢谢回复,之前作者已经回答我了。不过您的这个回答似乎与我的问题完全无关,可能是我没有理解

poly-1 avatar Apr 21 '20 04:04 poly-1

gost -L http+ws://11111:22222@:80

请问这种方式,墙可以看到传输的内容吗?

可以

poly-1 avatar Apr 21 '20 04:04 poly-1

  • gost 内置的 TLS 证书是每次随机生成的还是固定的?若是固定的,是不是相当于所有人共用一个私钥,非常不安全,需要注明一下。
  • gost 的 ws 作为一种传输协议能否像 v2ray 一样添加host混淆(即使用不同于 server ip 的域名)?或者当前有没有类似的方案实现?

可以配合自定义域名解析,然后ws地址填上域名就可以,我目前亲测是可行的。 除了可以自定义DNS服务用来解析域名外,还可以手动指定域名-IP映射关系,类似于Linux下的/etc/hosts文件功能。

gost -L=:8080?hosts=hosts.txt

配置文件的格式:

# options
reload  10s

# IP_address    canonical_hostname     [aliases...]
127.0.0.1       localhost
192.168.1.10    foo.mydomain.org       foo
192.168.1.13    bar.mydomain.org       bar baz

谢谢回复,之前作者已经回答我了。不过您的这个回答似乎与我的问题完全无关,可能是我没有理解

或许你是指这个?

gost -L :1080 -F ws://ip:port?host=yahoo.com
或者
gost -L :1080 -F ws://domain:port?host=yahoo.com

vaakian avatar Apr 21 '20 04:04 vaakian

或许你是指这个?

gost -L :1080 -F ws://ip:port?host=yahoo.com
或者
gost -L :1080 -F ws://domain:port?host=yahoo.com

这个host参数应该是在SNI协议里面用的吧?ws作为一种传输类型应该没有这个功能。

poly-1 avatar Apr 21 '20 12:04 poly-1

或许你是指这个?

gost -L :1080 -F ws://ip:port?host=yahoo.com
或者
gost -L :1080 -F ws://domain:port?host=yahoo.com

这个host参数应该是在SNI协议里面用的吧?ws作为一种传输类型应该没有这个功能。

你试试就知道了

我最近就有这种需求。ws本身建立连接的时候就会有类似http的请求头,所以也有相应的Host字段, 混淆也是一个道理。

虽然作者文档中没说websocket可以这么手动指定host,但是我自己试验确实是可以的。 我服务器上用nginx监听了一个域名,配置好websocket。然后用这种方法指定host是可以成功连接的。

vaakian avatar Apr 21 '20 12:04 vaakian

服务端是caddy forwardproxy的https代理(带tls证书)

客户端是gost -L=:1080 -F=https://user:password@服务器域名:443

请问这种方式,墙可以看到传输的内容吗?

lfznnzq avatar Apr 23 '20 15:04 lfznnzq

或许你是指这个?

gost -L :1080 -F ws://ip:port?host=yahoo.com
或者
gost -L :1080 -F ws://domain:port?host=yahoo.com

这个host参数应该是在SNI协议里面用的吧?ws作为一种传输类型应该没有这个功能。

你试试就知道了

我最近就有这种需求。ws本身建立连接的时候就会有类似http的请求头,所以也有相应的Host字段, 混淆也是一个道理。

虽然作者文档中没说websocket可以这么手动指定host,但是我自己试验确实是可以的。 我服务器上用nginx监听了一个域名,配置好websocket。然后用这种方法指定host是可以成功连接的。

谢谢解答,你是用nginx反代的websocket吗?如果成功反代的话,那么这个用法应该是正确的, 不过也有可能是nginx反代的时候只验证path没有验证host导致可以凑巧成功。

大佬 @ginuerzh 能解答一下到底ws有没有实现这个功能吗?

poly-1 avatar Apr 26 '20 06:04 poly-1

转发ws隧道似乎可以这样实现, gost -L=tcp://:1111 -F=forward+ws://2.2.2.2:2222?path=/path

这种用法似乎不符合标准用法,因为此时 tcp://:1111 这种格式并不符合TCP本地端口转发的scheme(TCP本地端口转发的scheme后面应该接远程地址,如tcp://:1111/:3333),而tcp好像也是不能单独作为一种传输类型使用的吧?

但该用法似乎可以正常工作,想问下该用法是正确的吗?如果不正确,正确的等价用法是什么呢?

poly-1 avatar Apr 26 '20 07:04 poly-1

或许你是指这个?

gost -L :1080 -F ws://ip:port?host=yahoo.com
或者
gost -L :1080 -F ws://domain:port?host=yahoo.com

这个host参数应该是在SNI协议里面用的吧?ws作为一种传输类型应该没有这个功能。

你试试就知道了 我最近就有这种需求。ws本身建立连接的时候就会有类似http的请求头,所以也有相应的Host字段, 混淆也是一个道理。 虽然作者文档中没说websocket可以这么手动指定host,但是我自己试验确实是可以的。 我服务器上用nginx监听了一个域名,配置好websocket。然后用这种方法指定host是可以成功连接的。

谢谢解答,你是用nginx反代的websocket吗?如果成功反代的话,那么这个用法应该是正确的, 不过也有可能是nginx反代的时候只验证path没有验证host导致可以凑巧成功。

大佬 @ginuerzh 能解答一下到底ws有没有实现这个功能吗?

当然验证host了,我怎么会犯这种错误。

我的nginx在80绑定了一堆域名,纯IP访问设置的404。

有没有实现,你自己试验一下不就知道了?

vaakian avatar Apr 26 '20 07:04 vaakian

或许你是指这个?

gost -L :1080 -F ws://ip:port?host=yahoo.com
或者
gost -L :1080 -F ws://domain:port?host=yahoo.com

这个host参数应该是在SNI协议里面用的吧?ws作为一种传输类型应该没有这个功能。

你试试就知道了 我最近就有这种需求。ws本身建立连接的时候就会有类似http的请求头,所以也有相应的Host字段, 混淆也是一个道理。 虽然作者文档中没说websocket可以这么手动指定host,但是我自己试验确实是可以的。 我服务器上用nginx监听了一个域名,配置好websocket。然后用这种方法指定host是可以成功连接的。

谢谢解答,你是用nginx反代的websocket吗?如果成功反代的话,那么这个用法应该是正确的, 不过也有可能是nginx反代的时候只验证path没有验证host导致可以凑巧成功。 大佬 @ginuerzh 能解答一下到底ws有没有实现这个功能吗?

当然验证host了,我怎么会犯这种错误。

我的nginx在80绑定了一堆域名,纯IP访问设置的404。

有没有实现,你自己试验一下不就知道了?

Perfect 多谢大佬

poly-1 avatar Apr 26 '20 10:04 poly-1

?ip=ip.txt 支持 绝对路径吗,放绝对路径文件好像无效

oscode1988 avatar Apr 30 '20 07:04 oscode1988

希望可以改进链路检测 比如通过链路要正常打开某个特定网页才判定为“正常”

jfc8000 avatar May 03 '20 13:05 jfc8000

QQ、微信、浏览器都可以使用IE代理配置,请问GOST如何让IE代理配置(主要wpad获取内容不知道)作为一级代理进行转发?

weiweiqingshan avatar May 13 '20 14:05 weiweiqingshan

it's possible with gost to redirect all internet traffic via tun/tap a-la tun2socks?

tun2socks-windows-4.0-amd64.exe -tunAddr 10.0.0.2 -tunGw 10.0.0.1 -proxyType socks -proxyServer 192.168.101.1:1086 -dnsServer 8.8.8.8,8.8.4.4

steom avatar Jun 06 '20 15:06 steom

请问 用gost反代加速国外网站

在服务器A上使用

gost -L tcp://:443/B_ip:443

直接输入https://A_ip可以访问,但是使用域名解析后访问就会出现 Connection_aborted 这个怎么搞

ch4rc0al1080 avatar Jul 07 '20 13:07 ch4rc0al1080

请问这个命令: gost -L sni://:443?whitelist=tcp:*.baidu.com,*.qq.com:443 怎么写成json呢? 我写的:

{
    "Debug": true,
    "Retries": 0,
    "ServeNodes": [
        "sni://:443"
    ],
    "whitelist": [
        "*.baidu.com",
        "*.qq.com"
    ]
}

不太清楚whitelist的TCP和443端口怎么加进去

wnark avatar Aug 08 '20 11:08 wnark

请问这个命令: gost -L sni://:443?whitelist=tcp:*.baidu.com,*.qq.com:443 怎么写成json呢? 我写的:

{
    "Debug": true,
    "Retries": 0,
    "ServeNodes": [
        "sni://:443"
    ],
    "whitelist": [
        "*.baidu.com",
        "*.qq.com"
    ]
}

不太清楚whitelist的TCP和443端口怎么加进去

你的-L 没写错的话,应该是这样的

{
    "Debug": true,
    "Retries": 0,
    "ServeNodes": [
        "sni://:443?whitelist=tcp:*.baidu.com,*.qq.com:443"
    ],
    "ChainNodes": [
        
    ]
}

您这种写法gost可以成功sni代理,其实我之前

{
    "Debug": true,
    "Retries": 0,
    "ServeNodes": [
        "sni://:443"
    ],
    "whitelist": [
        "*.baidu.com",
        "*.qq.com"
    ]
}

的白名单也没生效。 单独执行

gost -L sni://:443?whitelist=tcp:*.baidu.com,*.qq.com:443

是有效的 请问有没有比较简单添加白名单的写法?谢谢

wnark avatar Oct 18 '20 08:10 wnark

#592 希望可以加上-F 链上的自定义DNS解析

ghost avatar Oct 30 '20 10:10 ghost

这里有最新的gost二进制文件:https://github.com/proxy6-dev/Auto-Build-Gost-Bin

proxy666-dev avatar Dec 06 '20 11:12 proxy666-dev