mirror of
https://github.com/ICKelin/gtun.git
synced 2025-09-27 03:15:52 +08:00
fix verify auth fail stop accepting
This commit is contained in:
@@ -40,7 +40,6 @@ gtun支持多线路配置,可以同时对美国,日本,欧洲目的网络
|
||||
- [基础用法: 基于gtun实现公有云访问外部加速](doc/基础用法:基于gtun实现公有云访问外部加速.md)
|
||||
- [玩转N1盒子:基于gtun实现的游戏加速盒]()
|
||||
- [玩转N1盒子:基于gtun实现的tiktok加速路由]()
|
||||
- [玩转N1盒子:基于gtun实现办公网访问公有云内网]()
|
||||
- [有问题怎么办](#有问题怎么办)
|
||||
- [关于作者](#关于作者)
|
||||
|
||||
|
BIN
doc/assets/public_cloud_topology.png
Normal file
BIN
doc/assets/public_cloud_topology.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
@@ -1 +1,81 @@
|
||||
# 基于gtun实现公有云访问外部加速
|
||||
之前的三篇教程都偏向于本地加速的,在云场景下也能实现类似的代理加速功能,公有云场景和旁路由非常类似,
|
||||
本文通过配置一个gtun云服务器,让所有vpc的访问流量都通过这台服务器作为加速网关,能够实现两个基本的功能:
|
||||
|
||||
- vpc访问加速,比如现在AI发展迅猛,很多企业都需要在公有云上下载大模型,那么通过配置gtun的加速网关能够解决这一场景
|
||||
- 跨vpc的单边访问,比如有大陆和美国两个公有云,通过配置对端vpc的网段加速,就能实现大陆vpc通过内网ip访问美国的vpc。
|
||||
|
||||
依照惯例,我们还是先看一看拓扑图。
|
||||
|
||||

|
||||
|
||||
- 包含大陆腾讯云和美国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所在服务器的内网IP(172.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
2
go.mod
@@ -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
4
go.sum
@@ -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=
|
||||
|
@@ -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 {
|
||||
|
@@ -66,7 +66,7 @@ func (s *Server) Run() error {
|
||||
continue
|
||||
}
|
||||
}
|
||||
return err
|
||||
continue
|
||||
}
|
||||
|
||||
logs.Info("accept connect from remote: %s", conn.RemoteAddr().String())
|
||||
|
Reference in New Issue
Block a user