2024-05-01 17:34:39 +08:00
2024-04-26 11:03:21 +08:00
2024-04-29 12:55:09 +08:00
2024-04-27 22:06:10 +08:00
2024-05-01 17:34:39 +08:00
2024-04-27 22:06:10 +08:00
2024-04-28 20:13:40 +08:00
2024-04-05 22:14:14 +08:00
2021-11-21 13:21:24 +08:00
2024-05-01 17:34:39 +08:00
2024-05-01 17:34:39 +08:00
2024-05-01 17:34:39 +08:00
2018-03-29 21:31:41 +08:00
2024-04-29 12:55:09 +08:00

gtun

go report Build Status license

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

同时我们也基于gtun开发了收费版本对标阿里云的全球应用加速ucloud的pathX等产品的功能只是会更加灵活支持私有化部署独立部署可以部署到公有云数据中心和软路由如果您感兴趣可以访问我们的网站进行免费免费体验。

关于项目有任何问题需要咨询,可以联系作者进行交流

目录

应用场景

  • SaaS软件加速加速访问Salesforceoffce365等产品
  • 云服务器加速,加速访问海外服务器,跳板机,提升操作流畅度
  • 直播加速tiktok海外直播加速抖音直播加速
  • 游戏加速,结合专线网络和路由盒子实现游戏加速盒
  • 云服务器出口加速网关,加速整个公有云内网访问外网的流量

返回目录

功能特性

  • 纯应用层实现不存在overlay网络支持tcp和udp协议以及运行在其上的所有七层协议
  • 支持ip加速配合dnsmasq等软件可支持域名加速场景
  • 支持多链路容灾和竞速
  • 支持动态和静态内容访问加速
  • 引入kcpquic等协议优化跨境传输quic进行中

返回目录

技术原理

整体架构

gtun是一款ip正向代理软件包含代理客户端gtun和服务端gtund如上图所示gtun作为所有流量的入口也即是正向代理的客户端gtund作为所有流量的出口也即是正向代理的服务端gtun的客户端比较重服务端程序则非常的轻量级。

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

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

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

返回目录

安装部署

在这一节当中结合实际应用场景说明如何安装和部署gtun和gtund程序在本应用场景当中通过配置IP代理加速加快访问speedtest的测速文件

前期准备

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

安装运行gtund

gtund部署在美国的AWS上支持systemd和docker两种方式进行启动。

release里面找到2.0.7版本的产物并进行下载,

cd gtund
./install.sh

install.sh 会创建gtund的运行目录并通过systemd把gtund程序拉起。 执行install.sh完成之后gtund会

  • 监听tcp的3002作为mux协议的服务端口
  • 监听udp的3002作为kcp协议的服务端口
  • 日志记录在/opt/apps/gtund/logs/gtund.log

gtund的默认配置为默认情况下不需要作任何的修改即可

enable_auth: true
auths:
  - access_token: "ICKelin:free"
    expired_ath: 0

trace: ":3003"
server:
  - listen: ":3002"
    scheme: "kcp"

  - listen: ":3002"
    scheme: "mux"

log:
  days: 5
  level: "debug"
  path: "/opt/apps/gtund/logs/gtund.log"

您也可以使用docker-compose来进行安装

cd gtund
docker-compose up --build -d

执行完之后docker ps 看是否启动成功

返回目录

安装运行gtun

gtun的安装也类似release里面找到2.0.7版本的产物并进行下载然后在本地linux上进行部署

cd gtun
export ACCESS_TOKEN="ICKelin:free"
export SERVER_IP="gtund所在的服务器的ip"
./install.sh

其中ACCESS_TOKEN为gtund配置的认证的tokenSERVER_IP是gtund的公网IP

安装完成之后查看是否有错误日志

同样你也可以使用docker-compose来安装

cd gtun
docker-compose up --build -d

执行完成之后docker ps 看是否启动成功。

返回目录

配置加速ip

在上述过程中启动了gtun和gtund程序但是并未添加任何需要加速的信息那么gtun如何进行加速呢需要额外手动配置加速ip并将该ip的tcp流量全部转发至127.0.0.1:8524端口udp流量全部转发至127.0.0.1:8524∂端口。

这个过程是通过ipset和路由来配置的。以1.1.1.1为例

第一步创建ipset并将1.1.1.1加入其中

ipset create GTUN-US hash:net
ipset add GTUN-US 1.1.1.1

第二步创建iptables规则匹配目的ip为GTUN-US这个ipset内部的ip然后做tproxy操作将流量重定向到本地8524和8524端口

iptables -t mangle -I PREROUTING -p tcp -m set --match-set GTUN-US dst -j TPROXY --tproxy-mark 1/1 --on-port 8524
iptables -t mangle -I PREROUTING -p udp -m set --match-set GTUN-US dst -j TPROXY --tproxy-mark 1/1 --on-port 8524
iptables -t mangle -I OUTPUT -m set --match-set GTUN-US dst -j MARK --set-mark 1

第三步,添加路由表

ip rule add fwmark 1 lookup 100
ip ro add local default dev lo table 100

至此所有配置都已经完成后续需要新增代理ip只使用以下命令将ip加入GTUN-US这个ipset当中即可现在可以先尝试测试1.1.1.1这个ip的代理。

root@raspberrypi:/home/pi# nslookup www.google.com 1.1.1.1
Server:		1.1.1.1
Address:	1.1.1.1#53

Non-authoritative answer:
Name:	www.google.com
Address: 142.250.73.228

返回目录

加速效果

有了上述的基础,现在可以进行下载速度测试对比,以http://speedtest.atlanta.linode.com/100MB-atlanta.bin这个文件作为测试,

首先是通过gtun代理加速之后的测试需要将speedtest.atlanta.linode.com加入到GTUN-US当中

ipset add GTUN-US speedtest.atlanta.linode.com

root@raspberrypi:/home/pi# wget http://speedtest.atlanta.linode.com/100MB-atlanta.bin -v
--2021-05-18 22:00:23--  http://speedtest.atlanta.linode.com/100MB-atlanta.bin
正在解析主机 speedtest.atlanta.linode.com (speedtest.atlanta.linode.com)... 50.116.39.117, 2600:3c02::f03c:91ff:feae:641
正在连接 speedtest.atlanta.linode.com (speedtest.atlanta.linode.com)|50.116.39.117|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度104857600 (100M) [application/octet-stream]
正在保存至: “100MB-atlanta.bin”

100MB-atlanta.bin                   100%[==================================================================>] 100.00M  2.39MB/s    in 57s

2021-05-18 22:01:21 (1.77 MB/s) - 已保存 “100MB-atlanta.bin” [104857600/104857600])

然后通过正常网络测试,将speedtest.atlanta.linode.com从GTUN-US当中移除即可

ipset del GTUN-US speedtest.atlanta.linode.com

root@raspberrypi:/home/pi# wget http://speedtest.atlanta.linode.com/100MB-atlanta.bin -v
--2021-05-18 22:04:44--  http://speedtest.atlanta.linode.com/100MB-atlanta.bin
正在解析主机 speedtest.atlanta.linode.com (speedtest.atlanta.linode.com)... 50.116.39.117, 2600:3c02::f03c:91ff:feae:641
正在连接 speedtest.atlanta.linode.com (speedtest.atlanta.linode.com)|50.116.39.117|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度104857600 (100M) [application/octet-stream]
正在保存至: “100MB-atlanta.bin.1”

100MB-atlanta.bin.1                   0%[                                                                   ]   1012K  9.50KB/s    eta 98m 58s

可以看见通过gtun加速之后速度可以达到2.39MB/s而未通过gtun加速的正常下载速度则为15KB/s左右的速度两者差了一个数量级。

返回目录

有问题怎么办

返回目录

关于作者

一个爱好编程的人网名叫ICKelin。对于以下任何问题包括

  • 项目实现细节
  • 项目使用问题
  • 项目建议,代码问题
  • 案例分享
  • 技术交流

可加微信: zyj995139094

Description
用golang开发的IP加速器,商业化产品请关注: https://www.beyondnetwork.net 全球IP加速产品
Readme MIT 13 MiB
Languages
Go 97.8%
Shell 2%
Dockerfile 0.2%