clash-tproxy 设置网关代理

config.yml 配置

增加 redir-port tproxy-port

1
2
3
4
5
6
7
8
9
#!/usr/bin/env bash
rm -f config.yaml
wget -O config.yaml ${URL}

sed -i 's/port: 7890/port: 8888/' config.yaml
sed -i 's/socks-port: 7891/socks-port: 8889/' config.yaml
sed -i '3 s/^/redir-port: 8890\n/' config.yaml
sed -i '4 s/^/tproxy-port: 8891\n/' config.yaml
sed -i 's/external-controller: :9090/external-controller: 0.0.0.0:6170/g' config.yaml

启动 clash

1
clash -d . # 启动clash

部署 yacd

clash 控制面板 用 docker 部署

1
docker run -p 8080:80 -d --restart=always --name yacd haishanh/yacd

访问网页 连接部署ip http://${ip}:6170

设置允许 ipv4 转发

1
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf && sysctl -p

iptables redirect 设置透明代理

1
2
3
4
5
6
7
8
9
#!/usr/bin/env bash

set -euo pipefail

iptables -t nat -N clash
iptables -t nat -A clash -d 10.10.10.0/24 -j RETURN
iptables -t nat -A clash -p tcp -j RETURN -m mark --mark 0xff
iptables -t nat -A clash -p tcp -j REDIRECT --to-ports 8890
iptables -t nat -A PREROUTING -p tcp -j clash

iptables tproxy 透明代理设置

tproxy 模块加载

tproxy 需要加载内核模块 xt_TPROXY

1
2
3
4
# 加载 tproxy
sudo modprobe xt_TPROXY
# /etc/modules-load.d/TPROXY.conf
xt_TPROXY

iptables 设置转发到 clashtproxy-port

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/usr/bin/env bash

set -euo pipefail

# ROUTE RULES
ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100

# CREATE TABLE
iptables -t mangle -N clash

# RETURN LOCAL AND LANS
iptables -t mangle -A clash -d 0.0.0.0/8 -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 192.168.50.0/16 -j RETURN
iptables -t mangle -A clash -d 192.168.9.0/16 -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

# FORWARD ALL
iptables -t mangle -A clash -p udp -j TPROXY --on-port 8891 --tproxy-mark 1
iptables -t mangle -A clash -p tcp -j TPROXY --on-port 8891 --tproxy-mark 1

# REDIRECT
iptables -t mangle -A PREROUTING -j clash

未完内容

  • 持久 iptables 设置
  • service 持久化

参考连接