We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【瞎折腾】Clash For Merlin记录 · ZiGma
ZiGma
【瞎折腾】Clash For Merlin 记录
瞎折腾
字数统计: 2,776 阅读时长: 13 min
2020/05/09 Share
设备:华硕 AC-86U 固件:KoolShare 改版 Merlin 384.16 Clash 版本:0.19 1.0 版 可以和 UU 加速器共存,并且 Switch 裸连可以达到 B(根据当前网络决定) 2.0 版 比较满意的版本,可以与 UU 加速器共存,Switch 裸连无异常,王者荣耀等游戏的延迟保持在 30ms 以下;
设备:华硕 AC-86U
固件:KoolShare 改版 Merlin 384.16
Clash 版本:0.19
1.0 版 可以和 UU 加速器共存,并且 Switch 裸连可以达到 B(根据当前网络决定)
2.0 版 比较满意的版本,可以与 UU 加速器共存,Switch 裸连无异常,王者荣耀等游戏的延迟保持在 30ms 以下;
之前尝试使用 KOP-XIAO 的Clash-Merlin在 AC86U 上安装,但是他的教程相对比较简单,并且有很多端口进行了自定义,在尝试使用透明代理过程中走了不少弯路,因此在此记录自己折腾的过程。
uname -a
clash
利用 ssh 连接路由器,利用以下命令创建文件夹,并赋予执行权限;
mkdir /jffs/clash/ chmod +x /jffs/clash/
Win 系统下直接利用 Winscp 将上述 clash、Country.mmdb、config.yaml 上传到/jffs/clash/文件夹内;
/jffs/clash/
Mac 系统下可以利用以下命令分别上传;
scp *本地文件路径* *路由器登陆用户名*@*路由器地址*:/jffs/clash/
赋予 clash 文件执行权限;
chmod +x /jffs/clash/clash
测试运行;
/jffs/clash/clash -d /jffs/clash/
如果配置无误,可以看到 Clash 开始跑并输出 log。
Merlin 直接跑 Clash 相对于 OpenClash 和 KoolClash 无法自动更新托管配置。
所以我们可以将 config.yaml 文件存放在 Gitlab 的私有库中,然后利用脚本进行更新,当然也可以增加定时任务进行定时更新。
以下带【】部分为需要自己填写项
> https://gitlab.com/api/v4/projects/【Project ID】/repository/files/【config.yaml】/raw?ref=master&private_token=【私有Token】 >
Project ID:可在以下位置找到。
[![](https://raw.githubusercontent.com/ZiGmaX809/Clash-For-Merlin/master/Project ID.png)
config.yaml:无需变更名称,直接在仓库根目录创建,否则下载下来还需要重命名;
私有 Token:需要自己申请 Token。
--- port: 7890 #默认http代理端口 socks-port: 7891 #默认socks代理端口 redir-port: 7892 #默认redir端口 allow-lan: true mode: Rule log-level: info external-controller: 0.0.0.0:9090 #控制台端口 experimental: interface-name: eth0 #(尝试)TUN模式下,流量出口,路由器为WAN口 ignore-resolve-fail: true #忽略DNS解析失败 dns: enable: true ipv6: false listen: 0.0.0.0:55 #监听路由器55端口 enhanced-mode: fake-ip fake-ip-range: 198.18.0.1/16 #enhanced-mode: redir-host nameserver: - 114.114.114.114 - 223.5.5.5 - tls://dns.rubyfish.cn:853 fallback: - 114.114.114.114 - tls://dns.rubyfish.cn:853 - 8.8.8.8 tun: enable: true #(尝试)TUN模式 proxy-provider: #使用proxy-provider对不同的规则进行订阅,以Dler为例 Dler: type: http path: ./Dler.yaml url: https://dler.cloud/subscribe/token?protocols=ss&list=clash&lv=3&noarea=cn interval: 3600 health-check: enable: true url: http://www.gstatic.com/generate_204 interval: 300 ... Proxy Group: - name: Auto - UrlTest type: url-test use: - Dler url: http://www.gstatic.com/generate_204 interval: "1800" - name: Proxy type: select use: - Dler proxies: - Auto - UrlTest - DIRECT ... Rule: ...
创建重启 Clash 脚本并赋予执行权限;
touch /jffs/clash/restart.sh chmod +x /jffs/clash/restart.sh vi /jffs/clash/restart.sh
打开后输入以下内容;
if $(pidof clash) > /dev/null; then kill $(pidof clash) fi start-stop-daemon -S -b -x /jffs/clash/clash -m -p /tmp/clash.pid -- -d /jffs/clash/
后续直接运行/jffs/clash/restart.sh即可重启 Clash。
/jffs/clash/restart.sh
创建更新 config.yaml 脚本并赋予执行权限;
touch /jffs/clash/update.sh chmod +x /jffs/clash/update.sh vi /jffs/clash/update.sh
wget -O /jffs/clash/config.yaml 'https://gitlab.com/api/v4/projects/【Project ID】/repository/files/【config.yaml】/raw?ref=master&private_token=【私有Token】' /bin/sh /jffs/clash/restart.sh
即为你 Gitlab 托管地址。
后续直接运行/jffs/clash/update.sh即可更新 config.yaml 配置文件。
/jffs/clash/update.sh
新建 sh 脚本以自动添加 iptables 规则,并赋予执行权限,并添加规则;
touch /jffs/clash/clash-iptable.sh chmod +x /jffs/clash/clash-iptable.sh vi /jffs/clash/clash-iptable.sh
添加
#排除ssh端口 iptables -t nat -A PREROUTING -p tcp --dport 22 -j ACCEPT #在nat表中首行添加排除来源为192.168.2.65规则(尚在尝试) iptables -t nat -I PREROUTING -s 192.168.2.65/32 -j RETURN #新建名为CLASH的CHAIN iptables -t nat -N CLASH #在CLASH的CHAIN中末行添加排除去向为192.168.0.0/16网段规则 iptables -t nat -A CLASH -d 192.168.0.0/16 -j RETURN #在CLASH的CHAIN中末行添加转发所有tcp数据至7892端口 iptables -t nat -A CLASH -p tcp -j REDIRECT --to-ports 7892 #在nat表中添加所有流量转向CLASH的CHAIN iptables -t nat -A PREROUTING -p tcp -j CLASH
其中iptables -t nat -I PREROUTING -s 192.168.2.65/32 -j RETURN是跳过192.168.2.65IP,因为这是 Switch 的地址,最近在玩动物之森,需要用到 UU 加速器。(该功能尚在尝试阶段)
iptables -t nat -I PREROUTING -s 192.168.2.65/32 -j RETURN
192.168.2.65
后续发现一个大神的 iptable 配置项目地址,可以代理 UDP; 稍作修改后可以和 UU 加速器共存,并且不再是 F 而是未开代理的 B。
#!/bin/sh proxy_port=7892 lan_ip=192.168.2.1 ssh_port=22 # ports redirect for clash except port 22 for ssh connection iptables -t nat -A PREROUTING -p tcp --dport $ssh_port -j ACCEPT # redirect for clash except Nintendo Switch iptables -t nat -I PREROUTING -s 192.168.2.100/32 -j RETURN iptables -t nat -I PREROUTING -s 192.168.2.101/32 -j RETURN #new iptables -t nat -N CLASH iptables -t nat -A CLASH -d 192.168.0.0/16 -j RETURN iptables -t nat -A CLASH -d 10.0.0.0/8 -j RETURN iptables -t nat -A CLASH -d 127.0.0.0/8 -j RETURN iptables -t nat -A CLASH -d 169.254.0.0/16 -j RETURN iptables -t nat -A CLASH -d 172.16.0.0/12 -j RETURN iptables -t nat -A CLASH -d 224.0.0.0/4 -j RETURN iptables -t nat -A CLASH -d 240.0.0.0/4 -j RETURN #redirect to Clash iptables -t nat -A CLASH -p tcp -j REDIRECT --to-ports $proxy_port iptables -t nat -A PREROUTING -j CLASH # fake-ip rules iptables -t nat -A OUTPUT -p tcp -d 198.18.0.0/16 -j REDIRECT --to-ports $proxy_port #DNS #iptables -t nat -A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination $lan_ip:55 # udp modprobe xt_TPROXY proxy_fwmark="0x162" proxy_table="0x162" ip rule add fwmark $proxy_fwmark table $proxy_table ip route add local default dev lo table $proxy_table iptables -t mangle -N CLASH iptables -t mangle -A CLASH -d 192.168.0.0/16 -j RETURN iptables -t mangle -A CLASH -d 10.0.0.0/8 -j RETURN iptables -t mangle -A CLASH -d 127.0.0.0/8 -j RETURN iptables -t mangle -A CLASH -d 169.254.0.0/16 -j RETURN iptables -t mangle -A CLASH -d 172.16.0.0/12 -j RETURN iptables -t mangle -A CLASH -d 224.0.0.0/4 -j RETURN iptables -t mangle -A CLASH -d 240.0.0.0/4 -j RETURN # redirect to Clash iptables -t mangle -A CLASH -p udp -j TPROXY --on-port $proxy_port --tproxy-mark $proxy_table iptables -t mangle -A PREROUTING -p udp -j CLASH # redirect for clash except Nintendo Switch iptables -t mangle -I PREROUTING -s 192.168.2.100/32 -j RETURN iptables -t mangle -I PREROUTING -s 192.168.2.101/32 -j RETURN # fake-ip rules iptables -t mangle -A OUTPUT -p udp -d 198.18.0.0/16 -j MARK --set-mark $proxy_fwmark
仅让 Clash 处理 DNS 地址为路由器地址(192.168.2.1)的客户端请求; 在不需要代理的设备中将 DNS 地址设置为非路由器地址即可绕过代理; 甚至该模式下无需固定 Switch 的 ip,可以稳定到达 B,以及王者荣耀在延迟测试的情况下保持在 21~24ms。
#!/bin/sh proxy_port=7892 lan_ip=192.168.2.1 ssh_port=22 # ports redirect for clash except port 22 for ssh connection iptables -t nat -A PREROUTING -p tcp --dport $ssh_port -j ACCEPT # new iptables -t nat -N CLASH iptables -t nat -A CLASH -d 192.168.0.0/16 -j RETURN iptables -t nat -A CLASH -d 10.0.0.0/8 -j RETURN iptables -t nat -A CLASH -d 127.0.0.0/8 -j RETURN iptables -t nat -A CLASH -d 169.254.0.0/16 -j RETURN iptables -t nat -A CLASH -d 172.16.0.0/12 -j RETURN iptables -t nat -A CLASH -d 224.0.0.0/4 -j RETURN iptables -t nat -A CLASH -d 240.0.0.0/4 -j RETURN # redirect to Clash and except udp iptables -t nat -A CLASH -p tcp -j REDIRECT --to-ports $proxy_port iptables -t nat -A PREROUTING ! -p udp -j CLASH # DNS iptables -t nat -I PREROUTING -p udp -m udp -d $lan_ip --dport 53 -j DNAT --to-destination $lan_ip:55
如果前面配置文件中 Clash 监听了 DNS 服务器的 53 端口,但是 53 端口已经被 dnsmasq 占用,所以要将 dnsmasq 端口更改或直接关闭。
touch /jffs/configs/dnsmasq.conf.add vi /jffs/configs/dnsmasq.conf.add
将以下内容添加进去,0 为关闭 DNS 功能,当然也可以更改为 5353 等端口;
port=0
我这边直接关闭 dnsmasq 的 DNS 解析功能,仅留存 DHCP 功能;
service restart_dnsmasq
重启 dnsmasq 服务。
需要在路由器—内部网络中将 DNS 地址设置为路由器地址,至此连接至改路由器的所有设备都将会科学上网。
不知道是 AC86U 的原因还是命令行位置不对,如果使用start-stop-daemon是无法在路由器重启时启动 Clash。
start-stop-daemon
所以我是使用&来进行后台运行;
&
vi /jffs/scripts/wan-start
在最后添加
/bin/sh /jffs/clash/clash-iptable.sh /jffs/clash/clash -d /jffs/clash/ &
之前尝试联系 Merlin 开发者以更新 iptable 版本来使用 - m owner -pid-owner 直接排除 UU 加速器的端口,但是被以稳定性无法保障为由驳回。
解决思路:将 Switch 固定 ip,并在 iptable 表中排除。
归根结底还是 udp 数据类型的问题,fake-ip 模式下,由于原有 iptable 规则所有流量都会经过 Clash,所以无法合理区分诸如王者荣耀等游戏以及微信视频聊天的 udp 数据,从而会导致游戏丢包以及掉线。
解决思路:
原文作者:ZiGma
原文链接:[http://www.zigma.cc/2020/05/09/【瞎折腾】Clash For Merlin 记录 /](http://www.zigma.cc/2020/05/09/【瞎折腾】Clash For Merlin 记录 /)
发表日期:[May 9th 2020, 8:19:34 pm](http://www.zigma.cc/2020/05/09/【瞎折腾】Clash For Merlin 记录 /)
更新日期:[June 4th 2020, 3:37:20 pm](http://www.zigma.cc/2020/05/09/【瞎折腾】Clash For Merlin 记录 /)
版权声明:本文采用知识共享署名 - 非商业性使用 4.0 国际许可协议进行许可
Previous Post
[
【JSBox】Patterns - 能自定义花样文字的键盘脚本
](/2019/05/19/【JSBox】Patterns - 能自定义花样文字的键盘脚本 / "【JSBox】Patterns - 能自定义花样文字的键盘脚本")
提交
0 评论
来发评论吧~
加载更多...
Powered By Valine v1.4.14
Powered by Hexotheme Archer
PV: :)
CATALOG
Total : 29
2020
2019
2018
2017
JSBox Hexo VPS 搬瓦工 CentOS VBA Python 皮肤 iOS 旅行 杂物 照片 瞎折腾 WIN10 合同 民间借贷 PotPlayer 落格 Wordpress
JSBox VPS VBA Python 旅行 瞎折腾 工作 Potplayer 皮肤 App Wordpress
https://www.zigma.cc/2020/05/09/%E3%80%90%E7%9E%8E%E6%8A%98%E8%85%BE%E3%80%91Clash%20For%20Merlin%E8%AE%B0%E5%BD%95/
The text was updated successfully, but these errors were encountered:
No branches or pull requests
ZiGma
【瞎折腾】Clash For Merlin 记录
ZiGma
【瞎折腾】Clash For Merlin 记录
瞎折腾
字数统计: 2,776 阅读时长: 13 min
2020/05/09 Share
Clash For Merlin
前言
之前尝试使用 KOP-XIAO 的Clash-Merlin在 AC86U 上安装,但是他的教程相对比较简单,并且有很多端口进行了自定义,在尝试使用透明代理过程中走了不少弯路,因此在此记录自己折腾的过程。
准备工作
uname -a
命令查看路由器架构,AC86U 为 armV8。clash
。安装
利用 ssh 连接路由器,利用以下命令创建文件夹,并赋予执行权限;
Win 系统下直接利用 Winscp 将上述 clash、Country.mmdb、config.yaml 上传到
/jffs/clash/
文件夹内;Mac 系统下可以利用以下命令分别上传;
赋予 clash 文件执行权限;
测试运行;
如果配置无误,可以看到 Clash 开始跑并输出 log。
透明代理
透明代理下的 config.yaml 配置
Merlin 直接跑 Clash 相对于 OpenClash 和 KoolClash 无法自动更新托管配置。
所以我们可以将 config.yaml 文件存放在 Gitlab 的私有库中,然后利用脚本进行更新,当然也可以增加定时任务进行定时更新。
Gitlab 的私有库 RAW 文件规则(Github 不支持私有库拉取 RAW)
以下带【】部分为需要自己填写项
Project ID:可在以下位置找到。
[![](https://raw.githubusercontent.com/ZiGmaX809/Clash-For-Merlin/master/Project ID.png)
](https://raw.githubusercontent.com/ZiGmaX809/Clash-For-Merlin/master/Project ID.png)
config.yaml:无需变更名称,直接在仓库根目录创建,否则下载下来还需要重命名;
私有 Token:需要自己申请 Token。
配置文件编写
重启 Clash 脚本
创建重启 Clash 脚本并赋予执行权限;
打开后输入以下内容;
后续直接运行
/jffs/clash/restart.sh
即可重启 Clash。更新 config.yaml 脚本
创建更新 config.yaml 脚本并赋予执行权限;
打开后输入以下内容;
wget -O /jffs/clash/config.yaml 'https://gitlab.com/api/v4/projects/【Project ID】/repository/files/【config.yaml】/raw?ref=master&private_token=【私有Token】' /bin/sh /jffs/clash/restart.sh
即为你 Gitlab 托管地址。
后续直接运行
/jffs/clash/update.sh
即可更新 config.yaml 配置文件。iptables 规则
常规规则
新建 sh 脚本以自动添加 iptables 规则,并赋予执行权限,并添加规则;
添加
其中
iptables -t nat -I PREROUTING -s 192.168.2.65/32 -j RETURN
是跳过192.168.2.65
IP,因为这是 Switch 的地址,最近在玩动物之森,需要用到 UU 加速器。(该功能尚在尝试阶段)代理 udp 数据
后续发现一个大神的 iptable 配置项目地址,可以代理 UDP;
稍作修改后可以和 UU 加速器共存,并且不再是 F 而是未开代理的 B。
绕过 Clash 处理 udp 数据
更改 dnsmasq 端口(Clash 的 DNS 服务监听非 53 端口则无需修改)
如果前面配置文件中 Clash 监听了 DNS 服务器的 53 端口,但是 53 端口已经被 dnsmasq 占用,所以要将 dnsmasq 端口更改或直接关闭。
将以下内容添加进去,0 为关闭 DNS 功能,当然也可以更改为 5353 等端口;
我这边直接关闭 dnsmasq 的 DNS 解析功能,仅留存 DHCP 功能;
重启 dnsmasq 服务。
其他
需要在路由器—内部网络中将 DNS 地址设置为路由器地址,至此连接至改路由器的所有设备都将会科学上网。
开机启动
不知道是 AC86U 的原因还是命令行位置不对,如果使用
start-stop-daemon
是无法在路由器重启时启动 Clash。所以我是使用
&
来进行后台运行;在最后添加
/bin/sh /jffs/clash/clash-iptable.sh /jffs/clash/clash -d /jffs/clash/ &
尚存问题
与 UU 加速器共存(已解决)
之前尝试联系 Merlin 开发者以更新 iptable 版本来使用 - m owner -pid-owner 直接排除 UU 加速器的端口,但是被以稳定性无法保障为由驳回。
解决思路:将 Switch 固定 ip,并在 iptable 表中排除。
网络环境中游戏问题及无需代理的设备(已解决)
归根结底还是 udp 数据类型的问题,fake-ip 模式下,由于原有 iptable 规则所有流量都会经过 Clash,所以无法合理区分诸如王者荣耀等游戏以及微信视频聊天的 udp 数据,从而会导致游戏丢包以及掉线。
解决思路:
原文作者:ZiGma
原文链接:[http://www.zigma.cc/2020/05/09/【瞎折腾】Clash For Merlin 记录 /](http://www.zigma.cc/2020/05/09/【瞎折腾】Clash For Merlin 记录 /)
发表日期:[May 9th 2020, 8:19:34 pm](http://www.zigma.cc/2020/05/09/【瞎折腾】Clash For Merlin 记录 /)
更新日期:[June 4th 2020, 3:37:20 pm](http://www.zigma.cc/2020/05/09/【瞎折腾】Clash For Merlin 记录 /)
版权声明:本文采用知识共享署名 - 非商业性使用 4.0 国际许可协议进行许可
Previous Post
[
【JSBox】Patterns - 能自定义花样文字的键盘脚本
](/2019/05/19/【JSBox】Patterns - 能自定义花样文字的键盘脚本 / "【JSBox】Patterns - 能自定义花样文字的键盘脚本")
提交
0 评论
来发评论吧~
加载更多...
Powered By Valine
v1.4.14
Powered by Hexotheme Archer
PV: :)
CATALOG
Total : 29
2020
2019
2018
2017
JSBox Hexo VPS 搬瓦工 CentOS VBA Python 皮肤 iOS 旅行 杂物 照片 瞎折腾 WIN10 合同 民间借贷 PotPlayer 落格 Wordpress
JSBox VPS VBA Python 旅行 瞎折腾 工作 Potplayer 皮肤 App Wordpress
https://www.zigma.cc/2020/05/09/%E3%80%90%E7%9E%8E%E6%8A%98%E8%85%BE%E3%80%91Clash%20For%20Merlin%E8%AE%B0%E5%BD%95/
The text was updated successfully, but these errors were encountered: