doc: add a new document

This commit is contained in:
ICKelin
2024-04-28 10:56:19 +08:00
parent 254a570040
commit bfead4bddb
6 changed files with 150 additions and 18 deletions

View File

@@ -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实现办公网访问公有云内网]()
- [有问题怎么办](#有问题怎么办)
- [关于作者](#关于作者)

View File

@@ -0,0 +1,2 @@
# openwrt搭载gtun打造加速软路由连接Wi-Fi即可畅游网络

View 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之后不会再走加速出口出这里不再赘述了。
# 结束语

View File

@@ -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
View File

@@ -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
View File

@@ -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=