# Clash

# 安装

  • 新增用户
groupadd clash
useradd -g clash -M -s /sbin/nologin clash
#执行上述命令会需要你填写一些信息酌情填写
#passwd clash
  • 进程控制
vi /lib/systemd/system/clash@.service
systemctl daemon-reload
systemctl enable clash@clash

Systemd 配置文件

[Unit]
Description=A rule based proxy in Go for %i.
After=network.target

[Service]
Type=simple
User=%i
ExecStart=/home/software/clash/clash -d /home/software/clash
Restart=on-abort
CapabilityBoundingSet=CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_BIND_SERVICE

[Install]
WantedBy=multi-user.target

# 配置文件

clash DNS 请求逻辑: (1) 当访问一个域名时, nameserver 与 fallback 列表内的所有服务器并发请求,得到域名对应的 IP 地址。 (2) clash 将选取 nameserver 列表内,解析最快的结果。 (3) 若解析结果中,IP 地址属于 国外,那么 clash 将选择 fallback 列表内,解析最快的结果。

touch config.yaml

port: 7890
socks-port: 7891
redir-port: 7892
allow-lan: true

mode: Rule

log-level: silent
# external-controller 主要是用于 web 端管理页面,必须监听在 0.0.0.0
external-controller: 0.0.0.0:9090

# secret 是进入管理面板所需要的密码,可填可不填,建议填上
secret: "huxin666"

# external-ui 表示管理面板的路径
external-ui: /home/software/clash/web/

dns:
  enable: true
  ipv6: false
  listen: 0.0.0.0:53
  enhanced-mode: redir-host
  nameserver:
    - 192.168.9.60:20053
  fallback:
    - 192.168.9.60:20054

proxies:
  - name: "proxy"
    type: socks5
    server: "192.168.9.60"
    port: 1080
    
proxy-groups:
  - name: "auto"
    type: url-test
    proxies:
      - proxy
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

  - name: "home-sh-select"
    type: select
    proxies:
      - DIRECT

  - name: "leanway-select"
    type: select
    proxies:
      - DIRECT
    
rules:
  - DOMAIN-SUFFIX,google.com,auto
  - DOMAIN-KEYWORD,google,auto
  - DOMAIN,google.com,auto
  - DOMAIN-SUFFIX,ad.com,REJECT
  # rename SOURCE-IP-CIDR and would remove after prerelease
  - SRC-IP-CIDR,192.168.1.201/32,DIRECT

# LAN
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT
  - IP-CIDR,172.16.0.0/12,DIRECT
  - IP-CIDR,192.168.0.0/16,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT
  - IP-CIDR,17.0.0.0/8,DIRECT
  - IP-CIDR,100.64.0.0/10,DIRECT
  
# 最终规则
  - GEOIP,CN,DIRECT
  - MATCH,auto

# Iptables

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf && sysctl -p
echo "net.ipv6.conf.all.forwarding = 1" >> /etc/sysctl.conf && sysctl -p
cat /proc/sys/net/ipv4/ip_forward


iptables -t nat -N clash
iptables -t nat -A PREROUTING -p tcp -j clash

#注意:这里的网段和IP你需要自己适配自己的
iptables -t nat -A clash -d 0.0.0.0/8 -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 192.168.0.0/16 -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

iptables -t nat -A clash -p tcp -j REDIRECT --to-ports 7892
iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner clash -j REDIRECT --to-port 7892

apt install -y iptables-persistent
netfilter-persistent save
netfilter-persistent start
iptables-save  > /etc/iptables/rules.v4