项目作者: ljun20160606

项目描述 :
The god Heimdallr stands before the rainbow bridge.
高级语言: Go
项目地址: git://github.com/ljun20160606/bifrost.git
创建时间: 2019-01-19T04:22:16Z
项目社区:https://github.com/ljun20160606/bifrost

开源协议:MIT License

下载


Bifrost · PRs Welcome

内网穿透工具,名字的灵感来自战神4中北欧神话的彩虹桥

架构

实现内容

  • socks5协议实现
  • 网桥
  • 代理客户端
  • 本地socks->socks免校验代理

使用

在内网启动service,在公网启动bridge,使用socks5代理连接bridgeproxy端口即可使用service的内网环境,
所有的请求都会被service代理,支持多bridge、多service的部署方式

release中下载当前系统的程序压缩包,
解压后里面会包含一份默认配置.bifrost.yaml(查看需要 ls -a),程序会根据配置文件.bifrost.yaml初始化程序,
不过当前版本如果找不到配置也会直接使用代码里预设好的默认配置

也可以自己制定配置文件的位置

  1. # -f 可以制定配置文件
  2. $ bifrost [action] -f ~/.bifrost.yaml

任意访问内网

  1. # 启动网桥,网桥必须在service和client都可以访问的环境下启动
  2. $ bifrost bridge
  3. # 启动代理客户端
  4. $ bifrost service
  5. # 外网启本地代理
  6. $ bifrost proxy

我使用的代理工具是Chrome上的Proxy SwitchyOmegasock5协议代理到本地8080端口,done,事实上bifrost proxy本身是可以省略的,但是SwitchyOmega不支持Sock5 Auth,所以使用proxy中转了一下No Auth的请求。

端口映射

  1. # 启动网桥,网桥必须在service和client都可以访问的环境下启动
  2. $ bifrost bridge
  3. # 启动代理客户端
  4. $ bifrost service
  5. # 外网启动端口映射
  6. $ bifrost mapping

脚本本身支持自定义参数详情可以

  1. # 了解帮助信息
  2. $ bifrost -h

配置

  1. bridge:
  2. # 网桥地址
  3. addr: :7000
  4. # 网桥代理地址
  5. proxyAddr: :8888
  6. service:
  7. # 分组
  8. group: tangtangtang
  9. # 网桥地址,接受多个网桥地址使用`,`分割,如 :7000,:7001
  10. bridgeAddr: :7000
  11. # 密码
  12. password: 123456
  13. proxy:
  14. # 本地代理地址
  15. addr: :8080
  16. # 网桥代理地址
  17. bridgeProxyAddr: :8888
  18. # 分组
  19. group: tangtangtang
  20. # 密码
  21. password: 123456
  22. # 代理类型 http || socks5,默认socks5
  23. type: socks5
  24. mapping:
  25. # 本地代理地址
  26. addr: :8080
  27. # 网桥代理地址
  28. bridgeProxyAddr: :8888
  29. # 映射地址
  30. realAddr: ''
  31. # 分组
  32. group: tangtangtang
  33. # 密码
  34. password: 123456

功能说明

负载均衡

允许使用相同组注册到bridge,根据机器临时id一致性hash策略选择service

多路复用

bridge和service通信使用多路复用策略