mirror of
https://github.com/ICKelin/gtun.git
synced 2025-12-24 13:28:18 +08:00
doc: add a new document
This commit is contained in:
19
README.md
19
README.md
@@ -33,16 +33,15 @@ gtun支持多线路配置,可以同时对美国,日本,欧洲目的网络
|
||||
- [安装运行gtun](#安装运行gtun)
|
||||
- [配置加速ip](#配置加速ip)
|
||||
- [加速效果测试](#加速效果)
|
||||
- [最佳实践]()
|
||||
- [最佳实践: 基于gtun+ipset实现ip代理加速和分流](doc/最佳实践:基于gtun+ipset实现ip代理加速和分流.md)
|
||||
- [最佳实践: 基于gtun+dnsmasq实现域名代理加速和分流]()
|
||||
- [最佳实践: openwrt搭载gtun打造加速软路由,连接Wi-Fi即可畅游网络]()
|
||||
- [玩法分享:基于gtun+n1盒子实现软路由加速](doc/玩法分享:基于gtun+n1盒子实现软路由加速.md)
|
||||
- [玩法分享:基于gtun实现的tiktok加速路由]()
|
||||
- [玩法分享:基于gtun实现公有云访问外部加速]()
|
||||
- [玩法分享:基于gtun实现办公网访问公有云内网]()
|
||||
- [玩法分享:基于gtun实现的游戏加速盒]()
|
||||
- [玩法分享:基于gtun实现的大模型下载加速]()
|
||||
- [用法玩法]()
|
||||
- [基础用法:基于gtun+ipset实现ip代理加速和分流](doc/基础用法:基于gtun+ipset实现ip代理加速和分流.md)
|
||||
- [基础用法:基于gtun+dnsmasq实现域名代理加速和分流](doc/基础用法:基于gtun+dnsmasq实现域名代理加速和分流.md)
|
||||
- [基础用法:openwrt搭载gtun打造加速软路由,连接Wi-Fi即可畅游网络](doc/基础用法:openwrt搭载gtun打造加速软路由,连接Wi-Fi即可畅游网络.md)
|
||||
- [玩转N1盒子:基于gtun实现带加速功能的软路由]()
|
||||
- [玩转N1盒子:基于gtun实现的tiktok加速路由]()
|
||||
- [玩转N1盒子:基于gtun实现的游戏加速盒]()
|
||||
- [玩转N1盒子:基于gtun实现公有云访问外部加速]()
|
||||
- [玩转N1盒子:基于gtun实现办公网访问公有云内网]()
|
||||
- [有问题怎么办](#有问题怎么办)
|
||||
- [关于作者](#关于作者)
|
||||
|
||||
|
||||
2
doc/基础用法:openwrt搭载gtun打造加速软路由,连接Wi-Fi即可畅游网络.md
Normal file
2
doc/基础用法:openwrt搭载gtun打造加速软路由,连接Wi-Fi即可畅游网络.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# openwrt搭载gtun打造加速软路由,连接Wi-Fi即可畅游网络
|
||||
|
||||
100
doc/基础用法:基于gtun+dnsmasq实现域名代理加速和分流.md
Normal file
100
doc/基础用法:基于gtun+dnsmasq实现域名代理加速和分流.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# 基于gtun+dnsmasq实现域名代理加速和分流.md
|
||||
|
||||
之前的文章分享了[使用gtun实现ip代理加速和分流](最佳实践:基于gtun+ipset实现ip代理加速和分流.md),实现了一个最简单的基于ip代理加速的场景,但是在实际应用当中会有两个不太优雅的地方:
|
||||
|
||||
- 基于ip的方式,如果ip发生变动,可能会出现分流策略不准的问题
|
||||
- 有时候并不需要加速这么多ip,只需要加速部分网站或者应用即可(非常典型的比如SaaS应用加速)
|
||||
|
||||
基于此我们有了基于dnsmasq的域名解析策略来实现基于域名的加速和分流,最终拓扑如下:
|
||||
|
||||
# 前置准备
|
||||
您可以参考这篇文章来安装gtund和gtun。安装完gtun和gtund之后,您需要再安装dnsmasq并且成功启动。
|
||||
|
||||
# 配置dnsmasq解析策略
|
||||
|
||||
首先还是创建好基本的运行环境,参考scripts/redirect_all.sh
|
||||
|
||||
```shell
|
||||
|
||||
setname=GTUN_ALL
|
||||
noproxy_set=NOPROXY
|
||||
redirect_port=8524
|
||||
|
||||
clear_noproxy() {
|
||||
iptables -t mangle -D PREROUTING -m set --match-set $noproxy_set dst -j ACCEPT
|
||||
iptables -t mangle -D OUTPUT -m set --match-set $noproxy_set dst -j ACCEPT
|
||||
ipset destroy $noproxy_set >/dev/null
|
||||
}
|
||||
|
||||
add_noproxy() {
|
||||
ipset create $noproxy_set hash:net
|
||||
cat noproxy.txt | while read line
|
||||
do
|
||||
echo "no proxy for" $line
|
||||
ipset add $noproxy_set $line
|
||||
done
|
||||
|
||||
iptables -t mangle -A PREROUTING -m set --match-set $noproxy_set dst -j ACCEPT
|
||||
iptables -t mangle -A OUTPUT -m set --match-set $noproxy_set dst -j ACCEPT
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
然后配置dnsmasq的规则,dnsmasq的规则主要有两个:
|
||||
- 域名解析的上游地址是多少
|
||||
- 解析接入写入到哪个ipset里面
|
||||
通过这两个控制我们就能够实现dnsmasq和gtun的无缝结合。
|
||||
|
||||
在本例当中,还是配置的代理所有ip,其中大陆地区的域名使用`114.114.114.114`这个上游地址进行解析,并将解析结果加入到NOPROXY这个ipset当中。
|
||||
从而实现大陆地区的域名不加速。
|
||||
|
||||
```shell
|
||||
config_dnsmasq() {
|
||||
echo "configuring dnsmasq service"
|
||||
cp dnsmasq/dnsmasq.conf /etc/dnsmasq.conf
|
||||
cp dnsmasq/dnsmasq.resolv /etc/dnsmasq.resolv
|
||||
echo "configuring dnsmasq cn domain list"
|
||||
cp dnsmasq/cn.conf /etc/dnsmasq.d/
|
||||
cp dnsmasq/cn_set.conf /etc/dnsmasq.d/
|
||||
systemctl restart dnsmasq
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
完整命令可以参考`gtun/scripts/redirect_domains.sh`。修改完之后本机需要设置`/etc/resolv.conf`文件的`nameserver 127.0.0.1`
|
||||
才会真正用本机的dnsmasq去解析。
|
||||
|
||||
# 测试
|
||||
接下来进行一轮测试,我们使用我们自己的一个域名`demo.xxxx.tech`进行测试。
|
||||
|
||||
第一步将demo.xxxx.tech配置进dnsmasq里面
|
||||
|
||||
```shell
|
||||
root@OpenWrt:~/gtun# head /etc/dnsmasq.d/cn.conf
|
||||
server=/demo.xxxx.tech/114.114.114.114
|
||||
|
||||
root@OpenWrt:~/gtun# head /etc/dnsmasq.d/cn_set.conf
|
||||
ipset=/demo.xxxx.tech/NOPROXY
|
||||
```
|
||||
|
||||
第二步nslookup解析测试
|
||||
|
||||
```shell
|
||||
root@OpenWrt:~/gtun# nslookup demo.xxxx.tech 127.0.0.1
|
||||
Server: 127.0.0.1
|
||||
Address: 127.0.0.1:53
|
||||
|
||||
Non-authoritative answer:
|
||||
Name: demo.xxxx.tech
|
||||
Address: 47.115.xx.xx
|
||||
|
||||
Non-authoritative answer:
|
||||
|
||||
root@OpenWrt:~/gtun# ipset -T NOPROXY 47.115.xx.xx
|
||||
Warning: 47.115.xx.xx is in set NOPROXY.
|
||||
```
|
||||
|
||||
demo.xxxx.tech这个域名已经被加入到NOPROXY里面了,根据之前的文章,加入到NOPROXY之后不会再走加速出口出,这里不再赘述了。
|
||||
|
||||
# 结束语
|
||||
|
||||
@@ -10,7 +10,7 @@ gtun的基础功能是ip加速,本文通过具体的配置来讲解如何配
|
||||
|
||||
我们可以通过iptables非常灵活的控制加速和非加速流量。
|
||||
|
||||
**本文的是基于gtun的2.0.7版本。**
|
||||
**本文是基于gtun的2.0.7版本。**
|
||||
|
||||
# 安装
|
||||
安装包括两个组件:
|
||||
@@ -24,8 +24,8 @@ gtun的基础功能是ip加速,本文通过具体的配置来讲解如何配
|
||||
cd gtund
|
||||
./install.sh
|
||||
```
|
||||
install_gtund.sh 会创建gtund的运行目录,并通过systemd把gtund程序拉起。
|
||||
执行install_gtund.sh完成之后,gtund会:
|
||||
install.sh 会创建gtund的运行目录,并通过systemd把gtund程序拉起。
|
||||
执行install.sh完成之后,gtund会:
|
||||
- 监听tcp的3002作为mux协议的服务端口
|
||||
- 监听udp的3002作为kcp协议的服务端口
|
||||
- 日志记录在/opt/apps/gtund/logs/gtund.log
|
||||
@@ -68,9 +68,9 @@ gtun的安装也类似,在release里面找到2.0.7版本的产物并进行下
|
||||
|
||||
```shell
|
||||
cd gtun
|
||||
export ACCESS_KEY="ICKelin:free"
|
||||
export ACCESS_TOKEN="ICKelin:free"
|
||||
export SERVER_IP="gtund所在的服务器的ip"
|
||||
./install_gtun.sh
|
||||
./install.sh
|
||||
```
|
||||
|
||||
安装完成之后查看是否有错误日志
|
||||
@@ -164,6 +164,37 @@ cat cn.cidr | while read line
|
||||
|
||||
用法非常多,后续文章会不断分享一些用法。
|
||||
|
||||
# 测试
|
||||
最后来进行一次简单的测试,首先是不加速的验证,这里我用我的一个服务器的ip来进行测试。
|
||||
|
||||
```shell
|
||||
# 将ip加入到NOPROXY ipset当中
|
||||
ipset add NOPROXY xx.xx.xx.xx
|
||||
|
||||
# ssh 连接ip
|
||||
ssh root@xx.xx.xx.xx
|
||||
|
||||
# 使用who命令查看当前连接的ip
|
||||
root@iZwz97kfjnf78copv1ae65Z:~# who
|
||||
root tty1 Jun 28 10:41
|
||||
root pts/0 Apr 28 09:43 (119.139.xx.xx)
|
||||
```
|
||||
|
||||
最终结果走的是本地的出口(119.139.xx.xx)。
|
||||
|
||||
同样的方式,把这个ip从NOPROXY ipset中删除,加入到GTUN_ALL这个匹配走加速的ipset当中。
|
||||
|
||||
```shell
|
||||
ipset del NOPROXY xx.xx.xx.xx
|
||||
ipset add GTUN_ALL xx.xx.xx.xx
|
||||
|
||||
root@iZwz97kfjnf78copv1ae65Z:~# who
|
||||
root tty1 Jun 28 10:41
|
||||
root pts/1 Apr 28 09:46 (3.141.xx.xx)
|
||||
```
|
||||
|
||||
最终走的是加速的出口(3.141.xx.xx)
|
||||
|
||||
# 结束语
|
||||
以上是gtun的最基本的功能,实现所有流量劫持并进行加速,同时也提了一嘴如何访问大陆地区的ip不加速,通过这个实例基本上能了解gtun是如何跑起来的,也能定制一些更加适合自己的用法。
|
||||
后续会继续介绍如何通过gtun跟dnsmasq结合实现访问域名的加速。
|
||||
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-20240424081636-bc7a0dd32f38
|
||||
github.com/ICKelin/optw v0.0.0-20240428011618-ca9b64a90fcc
|
||||
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-20240424081636-bc7a0dd32f38 h1:a/Ll84/fF0KAvo7HMLK0HVYRZ0HymdD6MFRQbEw3mcc=
|
||||
github.com/ICKelin/optw v0.0.0-20240424081636-bc7a0dd32f38/go.mod h1:MQl8fLDhV0btvBztH05wsDamj0Rn8BDnDmCPeuIBpbY=
|
||||
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/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=
|
||||
|
||||
Reference in New Issue
Block a user