clash的搭建教程
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.
Clash的搭建教程
没啊办法,翻墙翻墙还是翻墙。
上游有若干 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
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK