Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FAQs整理 #557

Open
ginuerzh opened this issue Apr 11, 2020 · 39 comments
Open

FAQs整理 #557

ginuerzh opened this issue Apr 11, 2020 · 39 comments

Comments

@ginuerzh
Copy link
Owner

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

@ginuerzh ginuerzh pinned this issue Apr 11, 2020
@f4nff
Copy link

f4nff commented Apr 11, 2020

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例外?

@poly-1
Copy link

poly-1 commented Apr 14, 2020

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

@ginuerzh
Copy link
Owner Author

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

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

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

目前不支持host混淆。

@PHCSJC
Copy link

PHCSJC commented Apr 17, 2020

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

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

@poly-1
Copy link

poly-1 commented Apr 20, 2020

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

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

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

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

@bash99
Copy link

bash99 commented Apr 20, 2020

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

@ginuerzh
Copy link
Owner Author

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

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

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

@ginuerzh
Copy link
Owner Author

  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
Copy link
Owner Author

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

暂不支持解析后过滤。

@PHCSJC
Copy link

PHCSJC commented Apr 21, 2020

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

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

@vaakian
Copy link

vaakian commented Apr 21, 2020

  • 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
Copy link

poly-1 commented Apr 21, 2020

  • 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
Copy link

poly-1 commented Apr 21, 2020

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

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

可以

@vaakian
Copy link

vaakian commented Apr 21, 2020

  • 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

@poly-1
Copy link

poly-1 commented Apr 21, 2020

或许你是指这个?

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

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

@vaakian
Copy link

vaakian commented Apr 21, 2020

或许你是指这个?

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是可以成功连接的。

@lfznnzq
Copy link

lfznnzq commented Apr 23, 2020

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

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

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

@poly-1
Copy link

poly-1 commented Apr 26, 2020

或许你是指这个?

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
Copy link

poly-1 commented Apr 26, 2020

转发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好像也是不能单独作为一种传输类型使用的吧?

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

@vaakian
Copy link

vaakian commented Apr 26, 2020

或许你是指这个?

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。

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

@poly-1
Copy link

poly-1 commented Apr 26, 2020

或许你是指这个?

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 多谢大佬

@oscode1988
Copy link

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

@jfc8000
Copy link

jfc8000 commented May 3, 2020

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

@weiweiqingshan
Copy link

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

@steom
Copy link

steom commented Jun 6, 2020

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

@ch4rc0al1080
Copy link

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

在服务器A上使用

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

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

@wnark
Copy link

wnark commented Aug 8, 2020

请问这个命令:
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
Copy link

wnark commented Oct 18, 2020

请问这个命令:
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

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

@ghost
Copy link

ghost commented Oct 30, 2020

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

@proxy666-dev
Copy link
Contributor

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

@syouko
Copy link

syouko commented Jan 6, 2022

请问,在负载均衡中:
gost -L=:8080 -F='http://localhost:8080?ip=192.168.1.1,192.168.1.2:8081,192.168.1.3:8082&strategy=round&max_fails=1&fail_timeout=30s' -F=socks5://localhost:1080?ip=172.20.1.1:1080,172.20.1.2:1081,172.20.1.3:1082

这条示例命令,
-F='http://localhost:8080?ip=... 中的 localhost:8080 是做什么用途的呢?

我的理解有一个用途是,后面 ip= 中的域名或者IP未指定端口的情况下会默认用8080,但localhost不知其作用。

还有个疑惑就是两个 -F 的情况下,是默认就变成了从第一个F到第二个F的代理吗?
普通情况下使用两个F好像没有效果

@heeroyuyj
Copy link

请问 gost 支持范围端口转发吗, 目前看到的示例都是指定某个端口到某个端口, 能否实现 A-B 到 C-D 这样的转发呢

@sn01615
Copy link

sn01615 commented Feb 20, 2022

怎么关闭控制台的日志输出?

@omaidb
Copy link

omaidb commented Jul 12, 2022

有哪位大佬知道在json 文件中如何配置"探测防御"的参数吗?
https://v2.gost.run/probe_resist/

@just4xcx
Copy link

刚刚 windows 11自带的defender现在把windows-386和windows-amd64的程序都判定为 “This program is used to create viruses, worms or other malware.”,我刚下载了最新版的依然会触发风险隔离

@mymicroblog
Copy link

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例外?

这个有答案了么

@baguettex
Copy link

请教一下 转发端口中 rtcp和tcp 的区别, 貌似他们俩功能是一致的?

@woodlyer
Copy link

请教一下 转发端口中 rtcp和tcp 的区别, 貌似他们俩功能是一致的?

see https://github.com/woodlyer/gostExample to know what's rtcp.

@catninelife
Copy link

请教ws的header参数的写法,例如 header=Host: 123.com 或者header={'Host':123.com} 都不起作用

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests