fix verify auth fail stop accepting

This commit is contained in:
ICKelin
2024-04-28 20:13:40 +08:00
parent a3563cbd83
commit 1fb5f4aa28
7 changed files with 85 additions and 5 deletions

View File

@@ -40,7 +40,6 @@ gtun支持多线路配置可以同时对美国日本欧洲目的网络
- [基础用法: 基于gtun实现公有云访问外部加速](doc/基础用法:基于gtun实现公有云访问外部加速.md)
- [玩转N1盒子基于gtun实现的游戏加速盒]()
- [玩转N1盒子基于gtun实现的tiktok加速路由]()
- [玩转N1盒子基于gtun实现办公网访问公有云内网]()
- [有问题怎么办](#有问题怎么办)
- [关于作者](#关于作者)

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

View File

@@ -1 +1,81 @@
# 基于gtun实现公有云访问外部加速
之前的三篇教程都偏向于本地加速的,在云场景下也能实现类似的代理加速功能,公有云场景和旁路由非常类似,
本文通过配置一个gtun云服务器让所有vpc的访问流量都通过这台服务器作为加速网关能够实现两个基本的功能
- vpc访问加速比如现在AI发展迅猛很多企业都需要在公有云上下载大模型那么通过配置gtun的加速网关能够解决这一场景
- 跨vpc的单边访问比如有大陆和美国两个公有云通过配置对端vpc的网段加速就能实现大陆vpc通过内网ip访问美国的vpc。
依照惯例,我们还是先看一看拓扑图。
![img.png](assets/public_cloud_topology.png)
- 包含大陆腾讯云和美国aws
- 美国aws找一台云服务器部署gtund同时内网开启一个api-server进行测试验证
- 大陆腾讯云找一台云服务器部署gtun同时内网有其他实例通过配置vpc路由把流量转到gtun所在的云服务器上
> ⚠️
> gtun的云服务器相当于一个路由器如果该云服务器宕机会影响到其他实例的网络可用性
那么接下来开始具体的配置。
# 程序安装
这个之前的文章已经详细介绍了,并没有太多的区别,可以参考下面文章来进行配置
[基础用法:基于gtun+ipset实现ip代理加速和分流](基础用法:基于gtun+ipset实现ip代理加速和分流.md)
# 配置
首先清理GTUN_ALL配置的加速列表和NOPROXY的加速列表
```shell
ipset -F GTUN_ALL
ipset -F NOPROXY
```
这两个操作完之后就是一个不配置任何加速的空跑的gtun服务然后开始配置
配置包括两个方面:
- 公有云的路由表
- gtun所在云服务器的转发规则ipset操作
本文包括两个场景:
- 美国公有云vpc网段的加速
- 非vpc网段的加速
首先配置vpc网段的加速。
第一步把对端vpc的cidr加入到GTUN_ALL这个ipset当中
```shell
ipset add GTUN_ALL 172.31.0.0/16
```
配置完这一步之后你就可以在gtun所在的云服务器通过对端服务器的内网地址访问到对端的服务。
我们启动一个http server来进行测试
```shell
root@ip-172-31-3-157:~# python3 -m http.server 12590
# 在大陆腾讯云通过curl访问测试
root@iZwz97kfjnf78copv1ae65Z:~# curl 172.31.3.157:12590 >/dev/null
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 835 100 835 0 0 3255 0 --:--:-- --:--:-- --:--:-- 3261
# 观察输出来源IP是gtund所在服务器的内网IP172.31.3.157
Serving HTTP on 0.0.0.0 port 12590 (http://0.0.0.0:12590/) ...
172.31.3.157 - - [28/Apr/2024 10:59:31] "GET / HTTP/1.1" 200 -
```
有时候我们并不只是一台机器需要被gtun代理因此需要配置除了gtun所在的服务器之外的其他服务器的代理这里需要通过配置公有云的vpc路由来把流量导入到gtun所在服务器。
第二步配置公有云的路由表把对端vpc的cidr路由到gtun所在的云服务器实例。
非美国vpc网段的流量也是同样的配置方式只是路由表会比较大您也可以跟之前的文章一样配置`0.0.0.0/0`的路由把所有流量先导入到gtun所在服务器。
# 结束语
gtun加速公有云访问外部流量与其他场景没有本质上的区别唯一的区别仅仅只是需要配置公有云的路由
如果要跟软路由场景对标软路由由于本身有无线Wi-Fi因此网关会自动设置为gtun所在机器公有云则需要在云厂商控制台配置路由来控制。

2
go.mod
View File

@@ -3,7 +3,7 @@ module github.com/ICKelin/gtun
go 1.20
require (
github.com/ICKelin/optw v0.0.0-20240428011618-ca9b64a90fcc
github.com/ICKelin/optw v0.0.0-20240428102250-612f5bb01303
github.com/agiledragon/gomonkey/v2 v2.11.0
github.com/astaxie/beego v1.12.3
github.com/belogik/goes v0.0.0-20151229125003-e54d722c3aff

4
go.sum
View File

@@ -1,6 +1,6 @@
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/ICKelin/optw v0.0.0-20240428011618-ca9b64a90fcc h1:h+8a9EzkvaJFGqYEhnH+iekl0Gv9+2XsFORKyf/MwdU=
github.com/ICKelin/optw v0.0.0-20240428011618-ca9b64a90fcc/go.mod h1:MQl8fLDhV0btvBztH05wsDamj0Rn8BDnDmCPeuIBpbY=
github.com/ICKelin/optw v0.0.0-20240428102250-612f5bb01303 h1:+Ny6mSEahFVfuEXXzoxChuWUStKyW0V53wTA/v0r3ug=
github.com/ICKelin/optw v0.0.0-20240428102250-612f5bb01303/go.mod h1:MQl8fLDhV0btvBztH05wsDamj0Rn8BDnDmCPeuIBpbY=
github.com/Knetic/govaluate v3.0.0+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0=
github.com/agiledragon/gomonkey/v2 v2.11.0 h1:5oxSgA+tC1xuGsrIorR+sYiziYltmJyEZ9qA25b6l5U=
github.com/agiledragon/gomonkey/v2 v2.11.0/go.mod h1:ap1AmDzcVOAz1YpeJ3TCzIgstoaWLA6jbbgxfB4w2iY=

View File

@@ -76,6 +76,7 @@ func main() {
listener.SetAuthFunc(func(token string) bool {
ok := false
auths := GetConfig().Auths
logs.Info("verify auth token %s", token)
for _, auth := range auths {
if auth.AccessToken == token {
if auth.ExpiredAt == 0 {

View File

@@ -66,7 +66,7 @@ func (s *Server) Run() error {
continue
}
}
return err
continue
}
logs.Info("accept connect from remote: %s", conn.RemoteAddr().String())