35

clash的搭建教程

 2 years ago
source link: https://zhangrr.github.io/posts/20211108-clash/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Clash的搭建教程

2021-11-08 3 分钟阅读

没啊办法,翻墙翻墙还是翻墙。

上游有若干 trojian 、v2ray 、sock5 、http各种各样的代理,这样多种的选择,那么就装一个 clash 客户端就可以全接管了。

说下我们的做法:找个小Linux做旁路由,DNS和网关都设置在这台机器上,局域网内的机器都通过这台上网。

我们用到的是 clash 的 Tproxy redir-host 和 udp-proxy 模式,这种模式比较强大。用就用最强大的。

安装很简单,操作系统 centos 或者 ubuntu 都行,项目地址:

https://github.com/Dreamacro/clash

https://lancellc.gitbook.io/clash/clash-config-file/proxy-groups/load-balance

首先下载二进制文件,现在版本是 v1.7.1,解压后放到 /usr/local/bin 目录下

wget https://github.com/Dreamacro/clash/releases/download/v1.7.1/clash-linux-amd64-v1.7.1.gz
gzip -d clash-linux-amd64-v1.7.1.gz
chmod 755 clash-linux-amd64-v1.7.1
mv clash-linux-amd64-v1.7.1 /usr/local/bin

然后生成 clash.service

cat << EOF >> /etc/systemd/system/clash.service 
[Unit]
Description=clash service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/local/bin/clash-linux-amd64-v1.7.1
Restart=on-failure # or always, on-abort, etc

[Install]
WantedBy=multi-user.target
EOF

然后最重要的,就是配置文件了

我这里这个旁路由的设备 IP 地址是 192.168.2.2,网卡设备是 enp2s0

# http的代理端口
port: 7890
#mixed-port: 7890
socks-port: 7891
redir-port: 7892
tproxy-port: 7893

ipv6: false

allow-lan: true
bind-address: '192.168.2.2'
interface-name: enp2s0

mode: rule
log-level: info
external-controller: 0.0.0.0:9090
secret: "Fuck2021"
external-ui: dashboard

profile:
  store-selected: false
  tracing: true


hosts:
  # 把cantv的域名解析屏蔽掉,禁止它自动升级
  'tms.can.cibntv.net': 0.0.0.0

dns:
  enable: true
  listen: 0.0.0.0:1053
  enhanced-mode: redir-host # or fake-ip
  nameserver:
    - '114.114.114.114'
    - '223.5.5.5'
  fallback:
    - 208.67.220.220:5353
    - 208.67.222.222:5353
    - 101.6.6.6:5353

proxies:
  - name: "trojan1"
    type: trojan
    server: www.linuxboy.net
    port: 443
    password: Fuck2021
    sni: www.linuxboy.net
    skip-cert-verify: true

 - name: "vmess1"
    type: vmess
    server: 101.59.201.93
    port: 41555 
    uuid: 7a17ae5e-fb86-42e2-abd4-b8c33cfabcd
    alterId: 64
    cipher: auto
    
proxy-groups:
  - name: Proxy
    type: select
    proxies:
      - trojan

  - name: "auto"
    type: url-test
    proxies:
      - vmess1
      - trojan1
    url: 'http://www.gstatic.com/generate_204'
    interval: 300

rules:
  - DOMAIN-SUFFIX,v2ex.com,Proxy
  - DOMAIN-SUFFIX,t66y.com,Proxy
  - DOMAIN-SUFFIX,ycombinator.com,Proxy
  - DOMAIN-SUFFIX,reddit.com,Proxy
  - DOMAIN-KEYWORD,amazon,Proxy
  - DOMAIN-KEYWORD,google,Proxy
  - DOMAIN-KEYWORD,gmail,Proxy
  - DOMAIN-KEYWORD,youtube,Proxy
  - DOMAIN-KEYWORD,facebook,Proxy
  - DOMAIN-SUFFIX,fb.me,Proxy
  - DOMAIN-SUFFIX,fbcdn.net,Proxy
  - DOMAIN-KEYWORD,twitter,Proxy
  - DOMAIN-KEYWORD,instagram,Proxy
  - DOMAIN-KEYWORD,dropbox,Proxy
  - DOMAIN-SUFFIX,twimg.com,Proxy
  - DOMAIN-KEYWORD,blogspot,Proxy
  - DOMAIN-SUFFIX,youtu.be,Proxy
  - DOMAIN-KEYWORD,whatsapp,Proxy
  - SRC-IP-CIDR,192.168.1.0/32,DIRECT
  - SRC-IP-CIDR,192.168.2.0/32,DIRECT
  - IP-CIDR,127.0.0.0/8,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,Proxy

解释一下:proxy 定义了两个代理,一个是 trojan,一个是 v2ray。然后再集合成组,一个组叫 Proxy, 显式指定用 trojan;另一个组叫 auto,根据 vmess1 和 trojan1 访问 http://www.gstatic.com/generate_204 的页面速度,谁快就用谁,缺省300秒会访问一次这个页面来决定哪个代理快。

剩下的 rules 就很简单,把自己知道要访问的域名放到代理中去,然后把局域网的 IP 段放进 DIRECT 直接访问,最后 GEO IP 不是中国的由 Proxy 兜底。

网上有一大堆规则,八戒的建议是不要去学,规则越多越慢,你自己知道要访问什么网站需要翻墙,加进去就好了。弄一堆,自己看着都头蒙

最后我们在 rc.local 放入以下 iptable 内容,就可以了

###
#clash
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 100.64.0.0/10 -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.0.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

# whitelist China ip.
# iptables -t mangle -A clash -m set --match-set china dst -j RETURN

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

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

# hijack DNS to Clash
iptables -t nat -N CLASH_DNS
iptables -t nat -F CLASH_DNS 
iptables -t nat -A CLASH_DNS -p udp -j REDIRECT --to-port 1053
iptables -t nat -I PREROUTING -p udp --dport 53 -j CLASH_DNS

最后启动clash

systemctl start clash

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK