{"id":13813993,"url":"https://github.com/ICKelin/gtun","last_synced_at":"2025-05-15T01:32:31.368Z","repository":{"id":43730722,"uuid":"127295520","full_name":"ICKelin/gtun","owner":"ICKelin","description":"用golang开发的加速器，支持tproxy流量劫持，quic，kcp，tcp协议进行代理传输，可用于游戏加速，应用加速","archived":false,"fork":false,"pushed_at":"2024-09-07T08:34:16.000Z","size":13638,"stargazers_count":279,"open_issues_count":3,"forks_count":51,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-09-07T09:48:23.748Z","etag":null,"topics":["dnsmasq","game-accelerator","golang-application","kcp","proxy","quic","tproxy"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ICKelin.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-03-29T13:29:47.000Z","updated_at":"2024-09-07T08:34:20.000Z","dependencies_parsed_at":"2024-05-01T11:35:14.206Z","dependency_job_id":"75db6196-91d5-4572-9659-773b84014c9f","html_url":"https://github.com/ICKelin/gtun","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ICKelin%2Fgtun","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ICKelin%2Fgtun/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ICKelin%2Fgtun/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ICKelin%2Fgtun/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ICKelin","download_url":"https://codeload.github.com/ICKelin/gtun/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225319413,"owners_count":17455771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dnsmasq","game-accelerator","golang-application","kcp","proxy","quic","tproxy"],"created_at":"2024-08-04T04:01:39.333Z","updated_at":"2025-05-15T01:32:31.333Z","avatar_url":"https://github.com/ICKelin.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"## gtun\n\u003ca href=\"\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/-Go-000?\u0026logo=go\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://goreportcard.com/report/github.com/ICKelin/gtun\" rel=\"nofollow\"\u003e\n\u003cimg src=\"https://goreportcard.com/badge/github.com/ICKelin/gtun\" alt=\"go report\"\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://travis-ci.org/ICKelin/gtun\" rel=\"nofollow\"\u003e\n\u003cimg src=\"https://travis-ci.org/ICKelin/gtun.svg?branch=master\" alt=\"Build Status\"\u003e\n\u003c/a\u003e\n\u003ca href=\"https://github.com/ICKelin/gtun/blob/master/LICENSE\"\u003e\n\u003cimg src=\"https://img.shields.io/github/license/mashape/apistatus.svg\" alt=\"license\"\u003e\n\u003c/a\u003e\n\ngtun是一款开源的ip代理加速软件，目前只支持linux，通过`tproxy`技术实现流量劫持，`quic`和`kcp`等协议优化广域网传输，gtun提供一个基础通道，所有加入`ipset`的ip的流量都会被gtun进行拦截并代理到指定出口。\ngtun支持多线路配置，可以同时对美国，日本，欧洲目的网络进行加速访问。您可以结合dnsmasq来使用，将需要配置加速的域名解析结果加入ipset，从而实现域名加速。\n\n[![gtun介绍与演示](https://res.cloudinary.com/marcomontalbano/image/upload/v1722935405/video_to_markdown/images/youtube--6edKBdVIqeE-c05b58ac6eb4c4700831b2b3070cd403.jpg)](https://youtu.be/6edKBdVIqeE?si=BzNcTFVD6EMzNrcy \"gtun介绍与演示\")\n\n\n同时我们也基于gtun开发了收费版本，对标阿里云的全球应用加速，ucloud的pathX等产品的功能，只是会更加灵活，支持私有化部署，独立部署，可以部署到公有云，数据中心和软路由，如果您感兴趣，可以访问[我们的网站](https://www.beyondnetwork.net)进行免费免费体验。\n\n我们基于gtun已经构建了多个SD-WAN加速场景：\n\n- 通用TCP/UDP端口加速，可以实现ssh，远程桌面，游戏等场景的加速，[配置入口](https://dash.beyondnetwork.net/console/globalIpAcc/manage)\n- Docker镜像拉取加速，参考视频：[Youtube](https://youtu.be/o6aoE1YA6kI?si=mUwFGQC670RKOiSb) | [B站](https://www.bilibili.com/video/BV18zUWY5EPC/)\n- Huggingface大模型下载加速，参考视频：[Youtube](https://youtu.be/fW2gI02TQSk?si=umxjIEsWVdXhzoFO) \n- 海外回国加速，可免费体验3天，[配置入口](https://dash.beyondnetwork.net/console/globalIpAcc/gipaBackCN)\n- SaaS应用加速（基于gtun的域名\u0026IP分流策略），需要购买加速旁路由，[配置入口](https://dash.beyondnetwork.net/console/globalIpAcc/gipaCpe)\n\n## 目录\n- [介绍](#gtun)\n- [应用场景](#应用场景)\n- [功能特性](#功能特性)\n- [技术原理](#技术原理)\n- [安装部署](#安装部署)\n  - [前期准备](#前期准备)\n  - [安装运行gtund](#安装运行gtund)\n  - [安装运行gtun](#安装运行gtun)\n  - [配置加速ip](#配置加速ip)\n  - [加速效果测试](#加速效果)\n- [用法玩法]()\n  - [基础用法: 基于gtun+ipset实现ip代理加速和分流](doc/基础用法_基于gtun+ipset实现ip代理加速和分流.md)\n  - [基础用法: 基于gtun+dnsmasq实现域名代理加速和分流](doc/基础用法_基于gtun+dnsmasq实现域名代理加速和分流.md)\n  - [基础用法: openwrt搭载gtun打造加速软路由，连接Wi-Fi即可畅游网络](doc/基础用法_openwrt搭载gtun打造加速软路由，连接Wi-Fi即可畅游网络.md)\n  - [基础用法: 基于gtun实现公有云访问外部加速](doc/基础用法_基于gtun实现公有云访问外部加速.md)\n  - [玩转N1盒子：基于gtun实现的tiktok加速路由](doc/玩转N1盒子_基于gtun实现的tiktok加速路由.md)\n  - [玩转N1盒子：基于gtun实现的游戏加速盒](doc/玩转N1盒子_基于gtun实现的游戏加速盒.md)\n- [有问题怎么办](#有问题怎么办)\n- [关于作者](#关于作者)\n\n## 应用场景\n\n- SaaS软件加速，加速访问Salesforce，offce365等产品\n- 云服务器加速，加速访问海外服务器，跳板机，提升操作流畅度\n- 直播加速，tiktok海外直播加速，抖音直播加速\n- 游戏加速，结合专线网络和路由盒子实现游戏加速盒\n- 云服务器出口加速网关，加速整个公有云内网访问外网的流量\n\n[返回目录](#目录)\n\n## 功能特性\n\n- 纯应用层实现，不存在overlay网络，支持tcp和udp协议以及运行在其上的所有七层协议\n- 支持ip加速，配合dnsmasq等软件可支持域名加速场景\n- 支持多链路容灾和竞速\n- 支持动态和静态内容访问加速\n- 引入`kcp`，`quic`等协议优化跨境传输\n\n[返回目录](#目录)\n\n## 技术原理\n\n![](doc/assets/gtun.jpg)\n\u003ccenter\u003e\u003cp\u003e整体架构\u003c/p\u003e\u003c/center\u003e\ngtun是一款ip正向代理软件，包含代理客户端gtun和服务端gtund，如上图所示，gtun作为所有流量的入口，也即是正向代理的客户端，gtund作为所有流量的出口，也即是正向代理的服务端，gtun的客户端比较重，服务端程序则非常的轻量级。\n\ngtun最主要的功能是流量代理，gtun经过三个版本的演变，最初基于tun网卡的vpn技术，然后优化到dnat技术，再到目前的tproxy技术，现已逐步趋于稳定。\n\ngtun本身只提供流量代理通道，至于哪些流量需要被劫持，**这个是由使用者定义的**，使用者最终只需要将被代理的IP加入到`ipset`当中，那么该ipset的ip就会被代理\n\n为了实现更加快速的代理，gtun考虑集成`kcp`或者`quic`等基于UDP实现的可靠性传输协议，同时接入FEC，实时选路等机制，以避免长链路tcp丢包严重触发拥塞控制机制，降低传输效率。\n\n[返回目录](#目录)\n\n## 安装部署\n在这一节当中结合实际应用场景说明如何安装和部署gtun和gtund程序，在本应用场景当中，通过配置IP代理加速，加快访问speedtest的测速文件\n\n### 前期准备\n\n- 一台公有云服务器，用于部署服务端程序gtund，区域越靠近被加速区域（源站）越好，并且确认gtund监听的端口被打开\n- 另外一台可以是公有云服务器，也可以是内网机器，也可以是路由器，用于部署客户端程序gtun，目前gtun只支持linux系统\n\n### 安装运行gtund\ngtund部署在美国的AWS上，支持systemd和docker两种方式进行启动。\n\n在[release](https://github.com/ICKelin/gtun/releases)里面找到2.0.8版本的产物并进行下载，\n\n```\ncd gtund\n./install.sh\n```\ninstall.sh 会创建gtund的运行目录，并通过systemd把gtund程序拉起。\n执行install.sh完成之后，gtund会：\n- 监听tcp的3002作为mux协议的服务端口\n- 监听udp的3002作为kcp协议的服务端口\n- 监听udp的4002作为quic协议的服务端口\n- 日志记录在/opt/apps/gtund/logs/gtund.log\n\ngtund的默认配置为，默认情况下不需要作任何的修改即可\n\n```yaml\nenable_auth: true\nauths:\n  - access_token: \"ICKelin:free\"\n    expired_ath: 0\n\ntrace: \":3003\"\nserver:\n  - listen: \":3002\"\n    scheme: \"kcp\"\n\n  - listen: \":3002\"\n    scheme: \"mux\"\n    \n  - listen: \":4002\"\n    scheme: \"quic\"\n\nlog:\n  days: 5\n  level: \"debug\"\n  path: \"/opt/apps/gtund/logs/gtund.log\"\n\n```\n\n您也可以使用docker-compose来进行安装：\n\n```shell\ncd gtund\ndocker-compose up --build -d\n```\n\n执行完之后docker ps 看是否启动成功\n\n[返回目录](#目录)\n\n### 安装运行gtun\n\ngtun的安装也类似，在[release](https://github.com/ICKelin/gtun/releases)里面找到2.0.8版本的产物并进行下载，然后在本地linux上进行部署\n\n```shell\ncd gtun\nexport ACCESS_TOKEN=\"ICKelin:free\"\nexport SERVER_IP=\"gtund所在的服务器的ip\"\n./install.sh\n```\n\n其中ACCESS_TOKEN为gtund配置的认证的token，SERVER_IP是gtund的公网IP\n\n安装完成之后查看是否有错误日志\n\n同样，你也可以使用docker-compose来安装\n\n```shell\ncd gtun\ndocker-compose up --build -d\n```\n\n执行完成之后docker ps 看是否启动成功。\n\n[返回目录](#目录)\n\n### 配置加速ip\n\n在上述过程中，启动了gtun和gtund程序，但是并未添加任何需要加速的信息，那么gtun如何进行加速呢？需要额外手动配置加速ip，并将该ip的tcp流量全部转发至127.0.0.1:8524端口，udp流量全部转发至127.0.0.1:8524∂端口。\n\n这个过程是通过ipset和路由来配置的。以1.1.1.1为例\n\n第一步，创建ipset，并将1.1.1.1加入其中\n```\nipset create GTUN-US hash:net\nipset add GTUN-US 1.1.1.1\n```\n\n第二步，创建iptables规则，匹配目的ip为GTUN-US这个ipset内部的ip，然后做tproxy操作，将流量重定向到本地8524和8524端口\n\n```\niptables -t mangle -I PREROUTING -p tcp -m set --match-set GTUN-US dst -j TPROXY --tproxy-mark 1/1 --on-port 8524\niptables -t mangle -I PREROUTING -p udp -m set --match-set GTUN-US dst -j TPROXY --tproxy-mark 1/1 --on-port 8524\niptables -t mangle -I OUTPUT -m set --match-set GTUN-US dst -j MARK --set-mark 1\n```\n\n第三步，添加路由表\n\n```\nip rule add fwmark 1 lookup 100\nip ro add local default dev lo table 100\n```\n\n至此所有配置都已经完成，后续需要新增代理ip，只使用以下命令将ip加入GTUN-US这个ipset当中即可，现在可以先尝试测试1.1.1.1这个ip的代理。\n\n```\nroot@raspberrypi:/home/pi# nslookup www.google.com 1.1.1.1\nServer:\t\t1.1.1.1\nAddress:\t1.1.1.1#53\n\nNon-authoritative answer:\nName:\twww.google.com\nAddress: 142.250.73.228\n```\n\n[返回目录](#目录)\n\n### 加速效果\n\n有了上述的基础，现在可以进行下载速度测试对比，以`http://speedtest.atlanta.linode.com/100MB-atlanta.bin`这个文件作为测试，\n\n首先是通过gtun代理加速之后的测试，需要将`speedtest.atlanta.linode.com`加入到GTUN-US当中\n\n`ipset add GTUN-US speedtest.atlanta.linode.com`\n\n```shell\nroot@raspberrypi:/home/pi# wget http://speedtest.atlanta.linode.com/100MB-atlanta.bin -v\n--2021-05-18 22:00:23--  http://speedtest.atlanta.linode.com/100MB-atlanta.bin\n正在解析主机 speedtest.atlanta.linode.com (speedtest.atlanta.linode.com)... 50.116.39.117, 2600:3c02::f03c:91ff:feae:641\n正在连接 speedtest.atlanta.linode.com (speedtest.atlanta.linode.com)|50.116.39.117|:80... 已连接。\n已发出 HTTP 请求，正在等待回应... 200 OK\n长度：104857600 (100M) [application/octet-stream]\n正在保存至: “100MB-atlanta.bin”\n\n100MB-atlanta.bin                   100%[==================================================================\u003e] 100.00M  2.39MB/s    in 57s\n\n2021-05-18 22:01:21 (1.77 MB/s) - 已保存 “100MB-atlanta.bin” [104857600/104857600])\n```\n\n然后通过正常网络测试，将`speedtest.atlanta.linode.com`从GTUN-US当中移除即可\n\n`ipset del GTUN-US speedtest.atlanta.linode.com`\n\n```\nroot@raspberrypi:/home/pi# wget http://speedtest.atlanta.linode.com/100MB-atlanta.bin -v\n--2021-05-18 22:04:44--  http://speedtest.atlanta.linode.com/100MB-atlanta.bin\n正在解析主机 speedtest.atlanta.linode.com (speedtest.atlanta.linode.com)... 50.116.39.117, 2600:3c02::f03c:91ff:feae:641\n正在连接 speedtest.atlanta.linode.com (speedtest.atlanta.linode.com)|50.116.39.117|:80... 已连接。\n已发出 HTTP 请求，正在等待回应... 200 OK\n长度：104857600 (100M) [application/octet-stream]\n正在保存至: “100MB-atlanta.bin.1”\n\n100MB-atlanta.bin.1                   0%[                                                                   ]   1012K  9.50KB/s    eta 98m 58s\n```\n\n可以看见，通过gtun加速之后，速度可以达到2.39MB/s，而未通过gtun加速的正常下载速度则为15KB/s左右的速度，两者差了一个数量级。\n\n[返回目录](#目录)\n\n## 有问题怎么办\n\n- [wiki](https://github.com/ICKelin/gtun/wiki)\n- [查看文档]()\n- [提交issue](https://github.com/ICKelin/gtun/issues)\n- [查看源码](https://github.com/ICKelin/gtun)\n- [联系作者交流解决](#关于作者)\n\n[返回目录](#目录)\n\n## 关于作者\n一个爱好编程的人，网名叫ICKelin。对于以下任何问题，包括\n\n- 项目实现细节\n- 项目使用问题\n- 项目建议，代码问题\n- 案例分享\n- 技术交流\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FICKelin%2Fgtun","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FICKelin%2Fgtun","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FICKelin%2Fgtun/lists"}