倾旋的博客

倾旋的博客

现阶段在进行有效性验证/攻击模拟相关的安全研究工作,我的博客会记录一些我的学习过程和部分安全技术研究成果。

07 Aug 2023

记录一下配置Clash透明代理

📝Clash是什么?

https://github.com/Dreamacro/clash

Clash是一个支持多种协议隧道转发的工具,主要功能如下:

目前作者还在维护高级核心版(免费),为了尝试支持更多功能。

🪢关于透明代理

这里可以参考之前写过的一篇介绍:

Linux透明代理在红队渗透中的应用 | 倾旋的博客

配置Clash服务

这里需要注意的是需要设置redir-port,这个选项: Linux 和 macOS 的透明代理服务端口 (TCP 和 TProxy UDP 重定向)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
port: 7890
socks-port: 7891
allow-lan: true
redir-port: 7892
mode: Rule
log-level: info
external-controller: 127.0.0.1:9090
experimental:
  interface-name: enp34s0 # your interface-name
dns:
  enable: true
  listen: 127.0.0.1:53
  nameserver:
    - 223.5.5.5
  fallback:
    - 'tls://1.1.1.1:853'
    - 'tcp://1.1.1.1'
    - 'tcp://208.67.222.222:443'
    - 'tls://dns.google'

除此之外,最好编写一个服务文件,将Clash运行在其他用户身份下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[Unit]
Description=clash daemon

[Service]
Type=simple
StandardError=journal
User=clash
Group=clash
CapabilityBoundingSet=CAP_NET_BIND_SERVICE CAP_NET_ADMIN
AmbientCapabilities=CAP_NET_BIND_SERVICE CAP_NET_ADMIN
ExecStart=/usr/bin/clash -d /home/arch/.config/clash
Restart=on-failure

[Install]
WantedBy=default.target

将服务文件拷贝到:/etc/systemd/system/

1
2
3
$ sudo systemctl daemon-reload # 重新扫描服务单元变更
$ sudo systemctl enable clash  # 开机启动
$ sudo systemctl start clash   # 启动Clash

设置DNS服务器地址,直接/etc/resolv.conf文件即可:

1
2
# /etc/resolv.conf
nameserver 127.0.0.1

配置iptables规则

在iptables中有一个owner模块,可以过滤指定用户的流量,对我们来说只需要将clash运行在一个单独的用户身份下,对这个用户的所有流量放行即可。

0

iptables命令:

1
2
3
4
5
# 添加规则
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner clash ! -d 127.0.0.1 -j REDIRECT --to-port 7892

# 删除规则
sudo iptables -t nat -D OUTPUT -p tcp -m owner ! --uid-owner clash ! -d 127.0.0.1 -j REDIRECT --to-port 7892

这个命令的意思是将所有不属于用户ID为"clash"的TCP流量重定向到端口7892。

配置Clash规则

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
proxies:
  - ...server1
  - ...server2
proxy-groups:
  - name: ProxyChian1
    type: select
    proxies:
      - server1
      - DIRECT
- name: ProxyChian2
    type: select
    proxies:
      - DIRECT
	- name: 工作环境
    type: select
    proxies:
      - server1
rules:
  - DOMAIN-SUFFIX,local,ProxyChian2
  - DOMAIN-SUFFIX,localhost,ProxyChian2
  - DOMAIN-SUFFIX,payloads.online,工作环境
  - IP-CIDR,10.10.0.0/16,工作环境,no-resolve
  - IP-CIDR,10.20.0.0/24,工作环境,no-resolve
  - .....

通过rules可以配置不同的DNS域名、IP-CIDR目标地址的流量该走到哪个代理链上,这里我的规则仅仅只是示例,为了达到更好的网络体验,规则是上达几百行的。

1

如此一来,工作/上网问题不需要切换代理解决了。