go-gost / gost

GO Simple Tunnel - a simple tunnel written in golang
https://gost.run
MIT License
4.39k stars 528 forks source link

interface支持负载均衡轮询随机 #528

Closed superen7527 closed 4 months ago

superen7527 commented 4 months ago

我搜过相关关键词 只找到了https://github.com/go-gost/gost/issues/98 所以只能自己研究,本人技术有限,刚接触计算机相关编程东西,自己琢磨了一下用法,不足希望可以提点一下。

用法和问题:

我最开始用 gost -L :8080?interface=ip1,ip2 发现 虽然可以成功创建,但是这个不是轮询 ip1成功就会一直用ip1

然后又看看文档

如果不使用上级代理,则可以通过虚拟节点让服务使用多网口进行负载均衡。

使用 gost -L :8080 -F virtual://:0?interface=ip1,ip2 还是只有ip1

研究了一晚上通宵(现在发的是最后的结论部分精简issue),然后就放弃了,单独对10个ip启动10个gost 如下

gost -L ip1:8080?interface=ip1
gost -L ip2:8080?interface=ip2
......

手动10个 然后再套一个 gost -L :8888 -F :8080 在这里做 然后8888做池入口 然后想了想应该在这里做负载 最后改成 gost -L :8888 -F "socks5://ip1:8080,ip2:8080?strategy=rand&maxFails=1&failTimeout=10s" 类似于这样 勉强可以实现我的效果,随机池,但是要启动11个gost如果后面ip有100个 就得101个,,,

补充 > 我说的这两条命令逻辑看着没问题,但是根本用不了。最后只能使用虚拟网节点。 > > 用 `gost -L :8888 -F :8080` 还是一样全部`Can't complete SOCKS5 connection`用 `gost -L :8888 -F "socks5://ip1:8080,ip2:8080?strategy=rand&maxFails=1&failTimeout=10s" > 会返回gost的日志 估计是把gost的日志当做请求体 应该是我哪里搞错了

所以想着 有没有以下更简便的优化 1.interface加一个类似于 strategy 参数 来实现轮询随机负载,可以用gost -L :8080?interface=ip1,ip2&strategy=rand类似于这样的方式启动 2.如果不行 有没有一个gost写法 可以代替我上面的批量部分

gost -L ip1:8080?interface=ip1
gost -L ip2:8080?interface=ip2

实现类似于 gost -L ipx:8080?interface=ipx 输入一个ip列表 自动创建对应ip和对应interface的代理监听端口。

我理解的不知道对不对,还是有什么遗漏的用法 一般做池又是怎么用的。如果本来就有更好更高效简便的实现 能不能指点一下,十分感谢。

ginuerzh commented 4 months ago

你看到的文档里的虚拟节点例子就可以,不过只能用配置文件方式:

services:
- name: service-0
  addr: ":8080"
  handler:
    type: auto
    chain: chain-0
  listener:
    type: tcp
chains:
- name: chain-0
  hops:
  - name: hop-0
    selector:
      strategy: round
    nodes:
    - name: node-0
      addr: :0
      interface: ip1
      connector:
        type: virtual
      dialer:
        type: virtual
    - name: node-1
      addr: :0
      interface: ip2
      connector:
        type: virtual
      dialer:
        type: virtual
    - name: node-2
      addr: :0
      interface: ip3
      connector:
        type: virtual
      dialer:
        type: virtual
superen7527 commented 4 months ago

原来是这样 十分感谢 好像有点明白了 这个虚拟相当于我自己在上游一个个绑定gost 他可以自动绑定不需要启动一个个gost了。

请问一下 这里能否我直接指定网口 比如esn3 然后gost会自动轮询网口列表里面的ip?还是只能一个个手动获取填进去?

superen7527 commented 4 months ago

另外请教一下另一个题外话,关于webui项目

1.目前是只能用官方前端链接后端吗,好像文档没看到启动命令。 2.我开放了18080端口 网页访问是404 填到ui.gost.run又连不上 是我操作有什么问题吗? 3.这个ui登录的账号密码,应该是怎在启动时设置的?

找到文档了,大部分都可以解决 好像默认路径是/api 看文档的配置文件找到关键词了。 https://gost.run/tutorials/api/overview/#web-api