前言
起因是我给棒子装了openwrt 并且想装无验证http代理 ,别问我为啥不用科学上网插件的http代理因为哪些是用来做公网的需要加密,需求不一样,而且好像用opclah插件会经常崩溃(可能是棒子op内核问题)。
所以我试过Squid、Privoxy、Varnish、Polipo、Tinyproxy,这些或多或少都出现各种问题:
Squid和Privoxy 经常活莫名报http错误(因为它们带缓存和过滤)
Polipo与Tinyproxy 经常偶发无法科学上网,明明已经设置代理本机流量,就是无法科学。
那么有什么及高级又稳定的东西呢? 》》》 GOST github 》 https://github.com/go-gost/gost
ipk软件包(框架:aarch64_cortex-a53)
介绍
gost 是 GO语言实现的安全隧道插件插件/工具
主要由
四大模块:服务(Service),节点(Node),跳跃点(Hop),转发链(Chain),
五个子模块:监听器(Listener),处理器(Handler),转发器(Forwarder),拨号器(Dialer)和连接器(Connector),
加若干辅助模块:节点选择器(Selector),准入控制器(Admission),分流器(Bypass),域名解析器(Resolver),主机映射器(Hosts),限速器(Limiter)等组成。
gost很强大 能做到:
多端口监听
多级转发链
多协议支持
TCP/UDP端口转发
反向代理和隧道
TCP/UDP透明代理
DNS解析和代理
TUN/TAP设备
负载均衡
具体介绍我都懒得说 你们自己去Wiki站点看吧:https://gost.run
我遇到的一些问题
gost 很强大 但是 我在棒子的openwrt却用不了(无法运行启动)
软件包gost版本是2.11 用gost -V 显示是:gost 2.12.0 (go1.22.2 linux/arm64)
内核是6.1.38
看了文档发现 这luci完全不适配gost 不如自己手动运行
用终端运行了一条命令 :gost -L http://:8080 可以运行 luci上也提示已运行,
那么做一条开机启动脚本吧 执行。
由于gost支持命令行和配置文件 不想让任务列表又臭又长 那就用 配置文件吧:
{
"ServeNodes": [
"http://:8080"
],
"Routes": [
{
"ServeNodes": [
"http+socks5://127.0.0.1:1080"
],
"Match": {
"Network": "tcp",
"Host": ["*"],
"Path": ["*"]
}
}
]
}
并放在/etc/gost/config.json 配置里(随便你放哪里 记得调用就行)换算成命令就是: gost -L http://:8080
命令行参数扩展
1、 -L - 指定本地服务,可设置多个
此参数值为类URL格式(方括号中的内容可以省略):
[scheme://][username:password@host]:port[?key1=value1&key2=value2]
或用于端口转发模式
scheme://[bind_address]:port/[host]:hostport[?key1=value1&key2=value2]
scheme:
可以是处理器(Handler)与监听器(Listener)的组合,也可以是单独的处理器(监听器默认为tcp)或监听器(处理器默认为auto),
例如:
http+tls - 处理器http与监听器tls的组合,指定HTTPS代理服务
http - 等价与http+tcp,处理器http与监听器tcp的组合,指定HTTP代理服务
tcp - 等价与tcp+tcp,处理器tcp与监听器tcp的组合,指定TCP端口转发
tls - 等价与auto+tls,处理器auto与监听器tls的组合
示例:
gost -L http://:8080
gost -L http://:8080 -L socks5://:1080?foo=bar
gost -L http+tls://gost:gost@:8443
gost -L tcp://:8080/192.168.1.1:80
gost -L tls://:8443
注:gost -L :8080(监听在8080端口的HTTP/SOCKS5代理服务)
开启多个代理服务:gost -L http2://:443 -L socks5://:1080 -L ss://aes-128-cfb:123456@:8338
2、 -F - 指定转发服务,可设置多个,构成转发链。
此参数值为类URL格式(方括号中的内容可以省略):
[scheme://][username:password@host]:port[?key1=value1&key2=value2]
scheme:
可以是连接器(Connector)与拨号器(Dialer)的组合,也可以是单独的连接器(拨号器默认为tcp)或拨号器(连接器默认为http),
例如:
http+tls - 连接器http与拨号器tls的组合,指定HTTPS代理节点
http - 等价与http+tcp,处理器http与监听器tcp的组合,指定HTTP代理节点
tls - 等价与http+tls
示例:
gost -L http://:8080 -F http://gost:gost@192.168.1.1:8080 -F socks5+tls://192.168.1.2:1080?foo=bar
是不是看不懂???
以下例子:
gost -L :8080 -F 192.168.1.1:8081
监听在8080端口的HTTP/SOCKS5代理服务,使用192.168.1.1:8081作为上级代理进行转发网络请求。
关于多级转发代理(代理链) GOST会按照-F设置的顺序通过代理链将请求最终转发
gost -L=:8080 -F=quic://192.168.1.1:8081 -F=socks5+wss://192.168.1.2:8082 -F=http2://192.168.1.3:8083 ...
那么做一条启动脚本吧 执行 nohup gost -C /etc/gost/config.json >/dev/null 2>&1 &