Skip to content

Commit 3aafa76

Browse files
committed
merge dev
2 parents ee67b40 + 3b4e765 commit 3aafa76

File tree

118 files changed

+148432
-2101
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

118 files changed

+148432
-2101
lines changed

.github/workflows/docker-image.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ jobs:
1515
steps:
1616
- uses: actions/checkout@v3
1717
- name: Build the Docker image
18-
run: ./build_image.sh
18+
run: ./docker_build.sh

.github/workflows/go.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,5 @@ jobs:
2222
go-version: 1.19
2323

2424
- name: Build
25-
run: ./build_exec.sh
25+
run: ./build.sh
2626

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,6 @@ research
1212
*.tar.gz
1313

1414
docker-build/gtun/gtun*
15-
docker-build/gtund/gtund
15+
docker-build/gtund/gtund
16+
release
17+
images

README-EN.md

-14
This file was deleted.

README.md

+96-75
Original file line numberDiff line numberDiff line change
@@ -13,27 +13,18 @@
1313
<img src="https://img.shields.io/github/license/mashape/apistatus.svg" alt="license">
1414
</a>
1515

16-
gtun是一款开源的ip代理加速软件,通过`tproxy`技术实现流量劫持,`quic``kcp`等协议优化广域网传输,gtun提供一个基础通道,所有加入`ipset`的ip,出口,入口流量都会被gtun进行拦截并代理到指定出口。
17-
16+
gtun是一款开源的ip代理加速软件,目前只支持linux,通过`tproxy`技术实现流量劫持,`quic``kcp`等协议优化广域网传输,gtun提供一个基础通道,所有加入`ipset`的ip的流量都会被gtun进行拦截并代理到指定出口。
1817
gtun支持多线路配置,可以同时对美国,日本,欧洲目的网络进行加速访问。您可以结合dnsmasq来使用,将需要配置加速的域名解析结果加入ipset,从而实现域名加速。
1918

2019
[![](https://res.cloudinary.com/marcomontalbano/image/upload/v1686622903/video_to_markdown/images/youtube--pxv02e5EXPE-c05b58ac6eb4c4700831b2b3070cd403.jpg)](https://www.youtube.com/watch?v=pxv02e5EXPE "")
2120

22-
**使用场景**
23-
24-
- SaaS软件加速,加速访问Salesforce,offce365等产品
25-
- 云服务器加速,加速访问海外服务器,跳板机,提升操作流畅度
26-
- 直播加速,tiktok海外直播加速,抖音直播加速
27-
- 游戏加速,结合专线网络和路由盒子实现游戏加速盒
28-
29-
gtun是一个完整的加速器,**目前只支持linux**
30-
31-
同时我们也基于gtun开发了收费版本,对标阿里云的全球应用加速,ucloud的pathX等产品的功能,只是会更加灵活,支持私有化部署,独立部署,可以下沉到办公室,如果您感兴趣,可以访问[我们的网站](https://www.beyondnetwork.net)进行免费免费体验。
21+
同时我们也基于gtun开发了收费版本,对标阿里云的全球应用加速,ucloud的pathX等产品的功能,只是会更加灵活,支持私有化部署,独立部署,可以部署到公有云,数据中心和软路由,如果您感兴趣,可以访问[我们的网站](https://www.beyondnetwork.net)进行免费免费体验。
3222

3323
关于项目有任何问题需要咨询,可以[联系作者](#关于作者)进行交流
3424

3525
## 目录
3626
- [介绍](#gtun)
27+
- [应用场景](#应用场景)
3728
- [功能特性](#功能特性)
3829
- [技术原理](#技术原理)
3930
- [安装部署](#安装部署)
@@ -42,10 +33,24 @@ gtun是一个完整的加速器,**目前只支持linux**
4233
- [安装运行gtun](#安装运行gtun)
4334
- [配置加速ip](#配置加速ip)
4435
- [加速效果测试](#加速效果)
45-
- [应用场景](#应用场景)
36+
- [用法玩法]()
37+
- [基础用法: 基于gtun+ipset实现ip代理加速和分流](doc/基础用法:基于gtun+ipset实现ip代理加速和分流.md)
38+
- [基础用法: 基于gtun+dnsmasq实现域名代理加速和分流](doc/基础用法:基于gtun+dnsmasq实现域名代理加速和分流.md)
39+
- [基础用法: openwrt搭载gtun打造加速软路由,连接Wi-Fi即可畅游网络](doc/基础用法:openwrt搭载gtun打造加速软路由,连接Wi-Fi即可畅游网络.md)
40+
- [基础用法: 基于gtun实现公有云访问外部加速](doc/基础用法:基于gtun实现公有云访问外部加速.md)
41+
- [玩转N1盒子:基于gtun实现的tiktok加速路由](doc/玩转N1盒子:基于gtun实现的tiktok加速路由.md)
42+
- [玩转N1盒子:基于gtun实现的游戏加速盒](doc/玩转N1盒子:基于gtun实现的游戏加速盒.md)
4643
- [有问题怎么办](#有问题怎么办)
4744
- [关于作者](#关于作者)
4845

46+
## 应用场景
47+
48+
- SaaS软件加速,加速访问Salesforce,offce365等产品
49+
- 云服务器加速,加速访问海外服务器,跳板机,提升操作流畅度
50+
- 直播加速,tiktok海外直播加速,抖音直播加速
51+
- 游戏加速,结合专线网络和路由盒子实现游戏加速盒
52+
- 云服务器出口加速网关,加速整个公有云内网访问外网的流量
53+
4954
## 功能特性
5055

5156
- 纯应用层实现,不存在overlay网络,支持tcp和udp协议以及运行在其上的所有七层协议
@@ -64,9 +69,9 @@ gtun是一款ip正向代理软件,包含代理客户端gtun和服务端gtund
6469

6570
gtun最主要的功能是流量代理,gtun经过三个版本的演变,最初基于tun网卡的vpn技术,然后优化到dnat技术,再到目前的tproxy技术,现已逐步趋于稳定。
6671

67-
gtun本身只提供流量代理通道,至于哪些流量需要被劫持,这个是由使用者定义的,使用者最终只需要将被代理的IP加入到`ipset`当中,那么该ipset的ip就会被代理
72+
gtun本身只提供流量代理通道,至于哪些流量需要被劫持,**这个是由使用者定义的**,使用者最终只需要将被代理的IP加入到`ipset`当中,那么该ipset的ip就会被代理
6873

69-
为了实现更加快速的代理,gtun考虑集成`kcp`或者`quic`等基于UDP实现的可靠性传输协议,以避免长链路tcp丢包严重触发拥塞控制机制,降低传输效率。
74+
为了实现更加快速的代理,gtun考虑集成`kcp`或者`quic`等基于UDP实现的可靠性传输协议,同时接入FEC,实时选路等机制,以避免长链路tcp丢包严重触发拥塞控制机制,降低传输效率。
7075

7176
[返回目录](#目录)
7277

@@ -76,87 +81,110 @@ gtun本身只提供流量代理通道,至于哪些流量需要被劫持,这
7681
### 前期准备
7782

7883
- 一台公有云服务器,用于部署服务端程序gtund,区域越靠近被加速区域(源站)越好,并且确认gtund监听的端口被打开
79-
- 另外一台可以是公有云服务器,也可以是内网机器,用于部署客户端程序gtun,目前gtun只支持linux系统
84+
- 另外一台可以是公有云服务器,也可以是内网机器,也可以是路由器,用于部署客户端程序gtun,目前gtun只支持linux系统
8085

8186
### 安装运行gtund
82-
gtund需要运行在公有云上,相对比较简单,原则上越靠近源站越好。
87+
gtund部署在美国的AWS上,支持systemd和docker两种方式进行启动。
88+
89+
[release](https://github.com/ICKelin/gtun/releases)里面找到2.0.7版本的产物并进行下载,
90+
91+
```
92+
cd gtund
93+
./install.sh
94+
```
95+
install.sh 会创建gtund的运行目录,并通过systemd把gtund程序拉起。
96+
执行install.sh完成之后,gtund会:
97+
- 监听tcp的3002作为mux协议的服务端口
98+
- 监听udp的3002作为kcp协议的服务端口
99+
- 日志记录在/opt/apps/gtund/logs/gtund.log
83100

84-
首先生成配置文件,可以下载 [gtund.yaml](https://github.com/ICKelin/gtun/blob/master/etc/gtund.yaml) 进行修改
101+
gtund的默认配置为,默认情况下不需要作任何的修改即可
85102

86103
```yaml
104+
enable_auth: true
105+
auths:
106+
- access_token: "ICKelin:free"
107+
expired_ath: 0
108+
87109
trace: ":3003"
88110
server:
89111
- listen: ":3002"
90-
authKey: "rewrite with your auth key"
91112
scheme: "kcp"
92113

114+
- listen: ":3002"
115+
scheme: "mux"
116+
93117
log:
94118
days: 5
95119
level: "debug"
96-
path: "gtund.log"
120+
path: "/opt/apps/gtund/logs/gtund.log"
121+
97122
```
98123

99-
大部分情况下,如果您的端口未被占用,不需要修改任何配置
100-
`./gtund -c gtund.yaml`文件即可。
124+
您也可以使用docker-compose来进行安装:
101125

102-
### 安装运行gtun
103-
gtun可以运行在内网,也可以运行在公有云,在本场景当中,gtun会被部署在内网。
126+
```shell
127+
cd gtund
128+
docker-compose up --build -d
129+
```
104130

105-
首先生成配置文件,可以下载 [gtun.yaml](https://github.com/ICKelin/gtun/blob/master/etc/gtun.yaml) 进行修改
131+
执行完之后docker ps 看是否启动成功
106132

107-
```yaml
108-
settings:
109-
US:
110-
# 代理ip文件,可以是本地文件,也可以是网络文件,一行是一个IP或者cidr
111-
proxy_file: "https://www.ipdeny.com/ipblocks/data/countries/us.zone"
112-
route:
113-
# 拨测地址,需要修改US_SERVER_IP和US_SERVER_TRACE_PORT,对应gtund的公网IP和端口
114-
- trace_addr: ${US_SERVER_IP}:${US_SERVER_TRACE_PORT}
115-
scheme: "kcp"
116-
# 服务端地址,修改为对应gtund的IP和端口
117-
addr: ${US_SERVER_IP}:${US_SERVER_PORT}
118-
auth_key: "rewrite with your auth key"
119-
proxy:
120-
# 代理插件配置
121-
"tproxy_tcp": |
122-
{
123-
"read_timeout": 30,
124-
"write_timeout": 30,
125-
"listen_addr": ":8524",
126-
"rate_limit": 50,
127-
"region": "US"
128-
}
129-
"tproxy_udp": |
130-
{
131-
"read_timeout": 30,
132-
"write_timeout": 30,
133-
"session_timeout": 30,
134-
"listen_addr": ":8524",
135-
"rate_limit": 50,
136-
"region": "US"
137-
}
138-
log:
139-
days: 5
140-
level: Debug
141-
path: gtun.log
133+
### 安装运行gtun
142134

143-
http_server:
144-
listen_addr: ":9001"
135+
gtun的安装也类似,在[release](https://github.com/ICKelin/gtun/releases)里面找到2.0.7版本的产物并进行下载,然后在本地linux上进行部署
136+
137+
```shell
138+
cd gtun
139+
export ACCESS_TOKEN="ICKelin:free"
140+
export SERVER_IP="gtund所在的服务器的ip"
141+
./install.sh
145142
```
146143

147-
配置完成之后可以启动gtun程序,运行`./gtun -c gtun.yaml`即可启动。
144+
其中ACCESS_TOKEN为gtund配置的认证的token,SERVER_IP是gtund的公网IP
145+
146+
安装完成之后查看是否有错误日志
148147

149-
gtund启动时,会自动设置 iptables规则和路由表,并将需要加速的ip加入ipset当中,如果ip量比较大,启动时间会稍微长一些。
148+
同样,你也可以使用docker-compose来安装
149+
150+
```shell
151+
cd gtun
152+
docker-compose up --build -d
153+
```
154+
155+
执行完成之后docker ps 看是否启动成功。
150156

151157
[返回目录](#目录)
152158

153159
### 配置加速ip
154-
目前支持两种方式配置IP:
155160

156-
- 基于接口的方式,我们提供HTTP接口进行动态增删IP,目前正在开发页面配置动态管理加速的IP,应用,域名,敬请期待。
157-
- 使用命令手动配置,手动将ip加入到ipset当中
161+
在上述过程中,启动了gtun和gtund程序,但是并未添加任何需要加速的信息,那么gtun如何进行加速呢?需要额外手动配置加速ip,并将该ip的tcp流量全部转发至127.0.0.1:8524端口,udp流量全部转发至127.0.0.1:8524∂端口。
162+
163+
这个过程是通过ipset和路由来配置的。以1.1.1.1为例
164+
165+
第一步,创建ipset,并将1.1.1.1加入其中
166+
```
167+
ipset create GTUN-US hash:net
168+
ipset add GTUN-US 1.1.1.1
169+
```
170+
171+
第二步,创建iptables规则,匹配目的ip为GTUN-US这个ipset内部的ip,然后做tproxy操作,将流量重定向到本地8524和8524端口
172+
173+
```
174+
iptables -t mangle -I PREROUTING -p tcp -m set --match-set GTUN-US dst -j TPROXY --tproxy-mark 1/1 --on-port 8524
175+
iptables -t mangle -I PREROUTING -p udp -m set --match-set GTUN-US dst -j TPROXY --tproxy-mark 1/1 --on-port 8524
176+
iptables -t mangle -I OUTPUT -m set --match-set GTUN-US dst -j MARK --set-mark 1
177+
```
178+
179+
第三步,添加路由表
180+
181+
```
182+
ip rule add fwmark 1 lookup 100
183+
ip ro add local default dev lo table 100
184+
```
185+
186+
至此所有配置都已经完成,后续需要新增代理ip,只使用以下命令将ip加入GTUN-US这个ipset当中即可,现在可以先尝试测试1.1.1.1这个ip的代理。
158187

159-
接下来以命令配置的方式进行配置,以`1.1.1.1`为例,只需要将`1.1.1.1`加入其中ipset当中`ipset add GTUN-US 1.1.1.1`即可。
160188
```
161189
root@raspberrypi:/home/pi# nslookup www.google.com 1.1.1.1
162190
Server: 1.1.1.1
@@ -211,13 +239,6 @@ root@raspberrypi:/home/pi# wget http://speedtest.atlanta.linode.com/100MB-atlant
211239

212240
[返回目录](#目录)
213241

214-
## 应用场景
215-
216-
- IP加速,可用于ip,子网加速
217-
- 域名,站点加速,需要使用dnsmasq或者nginx/openresty等组件实现
218-
- k8s集群网络代理,ip加速的一个子集,可代理访问k8s的service,pod网段
219-
- 全球应用加速
220-
221242
## 有问题怎么办
222243

223244
- [wiki](https://github.com/ICKelin/gtun/wiki)

build.sh

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
rm -r release
2+
mkdir -p release
3+
mkdir -p release/gtun/etc
4+
mkdir -p release/gtund/etc
5+
6+
git log -n 5 > release/gtun/ChangeLog
7+
git log -n 5 > release/gtund/ChangeLog
8+
9+
DIR=`pwd`
10+
11+
cd src/gtun
12+
GOOS=linux go build -o gtun
13+
mv gtun $DIR/release/gtun/
14+
cd $DIR
15+
cp scripts/install_gtun.sh release/gtun/install.sh
16+
cp -r scripts release/gtun/scripts
17+
cp -r etc/gtun/* release/gtun/etc
18+
19+
cd src/gtund
20+
GOOS=linux GOARCH=amd64 go build -o gtund
21+
mv gtund $DIR/release/gtund/
22+
cd $DIR
23+
cp scripts/install_gtund.sh release/gtund/install.sh
24+
cp -r etc/gtund/* release/gtund/etc

build_exec.sh

-14
This file was deleted.

build_image.sh

-14
This file was deleted.

cmd/gtun/gtun.go

-42
This file was deleted.

0 commit comments

Comments
 (0)