Clash

安装

releases下载链接

解压可参考

tar

# 示例
cd ~/app/clash
wget https://github.com/Dreamacro/clash/releases/download/v1.10.0/clash-linux-amd64-v1.10.0.gz
gzip -d clash-linux-amd64-v1.10.0.gz

ls -lh clash-linux-amd64-v1.10.0
-rw-r--r-- 1 user group 8.6M Mar 19 14:14 clash-linux-amd64-v1.10.0

chmod +x clash-linux-amd64-v1.10.0

mkdir -p ~/.config/clash

./clash-linux-amd64-v1.10.0 
# 将在~/.config/clash文件夹中创建Country.mmdb,cache.db,config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Configuration

  • 从1.9版本起配置文件有变化,我主要用到是vmess修改为 ws-opts

    ...
    network: ws
    ws-opts:
    path: /path
      headers:
        Host: proxy.server
    ...
    
    1
    2
    3
    4
    5
    6
    7
  • 加入了办公内网配置, 办公室frp到pve(运行clash的主机,10.10.10.2)的9999端口, clash 配置中使用

    ...
    proxies:
      - name: frp-http
        type: http
        server: 127.0.0.1
        port: 9999
    ...
    rules:
    IP-CIDR,192.168.200.0/24,frp-http # 192.168.200.0/24 为办公室lan网段
    ...
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
  • 把 clash 加入 PATHln -s /home/username/app/clash/clash-linux-amd64-v1.10.0 /usr/bin/clash

  • 注册clash服务

    vim /etc/systemd/system/clash.service
    
    [Unit]
    Description=Clash daemon, A rule-based proxy in Go.
    After=network.target
    
    [Service]
    Type=simple
    Restart=always
    ExecStart=/usr/bin/clash -d /path/to/clash/config
    
    [Install]
    WantedBy=multi-user.target
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13

yacd UI

可以临时使用http://yacd.haishan.me, 连接10.10.10.2:9090

官方DashBoard Web UI

Clash Dashboard Web Dashboard for Clash

  • All ClashX configurations
  • Manage Proxies
  • Manage Proxy Groups
  • Realtime Log

订阅转换

  1. 运行 ./subconverter
  2. 填写 订阅地址
  3. 修改 后端服务地址: http://ip:25500/sub?
  4. 复制 定制订阅
  5. 粘贴
  6. 生成配置文件, 自行保存
  7. ./clash -f path/to/config.yaml

透明网关实现

环境

lan: 10.10.10.0/24 clash 运行在 pve 上, pve-ip: 10.10.10.2 仅手机代理, 手机ip: 10.10.10.20 手机设置网关和dns: 10.10.10.2 10.10.10.2上运行了adguardHome,监听53端口, 实际上手机上设置的dns是AdGuardHome, clash配置中没有使用dns配置, 测试时发现dns污染非常严重, twitter连接失败,原来被解析到127.0.0.1, 修改了AdGuardHome上游服务器,删除了国内所有dns服务器,总算是正常了

开启pve转发

为了让系统有基本的路由转发功能,需要开一下 IP 转发。编辑 /etc/sysctl.conf 文件,将 net.ipv4.ip_forward 和 net.ipv6.conf.all.forwarding 都改为 1,然后执行 sysctl -p 使配置生效。

cat /proc/sys/net/ipv4/ip_forward
# 检查是否已生效
1
2

设置iptables

# 新建 clash 链
iptables -t nat -N clash
# return 本地 lan 地址范围
iptables -t nat -A clash \
-d 10.10.10.0/24 -j RETURN
# 转发 tcp 请求到clash redir-port 7893 端口
iptables -t nat -A clash -p tcp \
-j REDIRECT --to-ports 7893
1
2
3
4
5
6
7
8
# 10.10.10.20 是手机的ip
# 我手机的tcp请求目标地址
# 不是lan才交clash处理
iptables -t nat -A PREROUTING \
-s 10.10.10.20/32 \
! -d 10.10.10.0/24 \
-p tcp -j clash
1
2
3
4
5
6
7
# 作为网关时自动修改源地址和返回时的目标地址
# 不开的话手机接收不到返回数据
iptables -t nat -A POSTROUTING \
-j MASQUERADE
1
2
3
4

主路由lede指定客户端分配指定网关和dns

ssh root@lede
vim /etc/config/dhcp
1
2
...
config host
  option name '8plus'
- option dns '1'
+ #option dns '1'
  option mac 'D5:61:DA:2D:0E:FA'
  option ip '10.10.10.20'
  option leasetime 'infinite'
+ option tag 'clash'

+config tag 'clash'
+  list dhcp_option '3,10.10.10.2'
+  list dhcp_option '6,10.10.10.2'
+  option force '1'
1
2
3
4
5
6
7
8
9
10
11
12
13
14

应用更改 /etc/init.d/dnsmasq restart

euserv纯ipv6主机访问ipv4问题

测试了twitter和telegram

  • tg的ios客户端是直接ipv4的tcp连接,没有解决
  • api.twitter.com是纯ipv4地址,不能访问,但abs.twimg.com和video.twimg.com有ipv6地址,表现为打开twitter不能刷新但是可以访问已存在的视频和图片

twitter解决办法

DNS64是与NAT64搭配使用的,原理很简单,修改你的DNS到DNS64提供者的DNS,当你发出向解析到IPv4的域名的请求后,DNS会将IPv4地址按照一定格式嵌入IPv6地址中;这个返回IPv6地址会指向NAT64的服务器,NAT64网关会按照它包含的信息获取IPv4的数据并转发给你,这样一来你就能够直接访问IPv4的网站了。

一般修改/etc/resolv.conf的namesever值即可.

DNS64的好处是配置方便。弊端服务商会记录你三天的浏览记录以防止用于不法用途,且NAT64服务器到你的服务器速度未必非常理想。

vim /etc/resolv.conf

# http://www.trex.fi/2011/dns64.html
2001:67c:2b0::4
2001:67c:2b0::6

# https://go6lab.si/current-ipv6-tests/nat64dns64-public-test/
2001:67c:27e4:15::6411
2001:67c:27e4::64
1
2
3
4
5
6
7
8
9

Last Updated: