2020-03-06 | 折腾

OpenWrt clash 网关

记录下自己的路由器配置。这个方案用了几个月了,大部分时间没啥问题。

工具

方案

搭一个 OpenWrt 做网关转发流量,通过 iptable 把流量交给 clash
OpenWrt 只做透明代理

配置文件

配置 OpenWrt

给 OpenWrt 一个静态 ip

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
vim /etc/config/network

config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config globals 'globals'
option ula_prefix 'fda4:2477:ac44::/48'

config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
option ipaddr '192.168.1.xxx'
option netmask '255.255.255.0'
option ip6assign '60'
option gateway '192.168.1.1'
list dns '192.168.1.1'

配置 Clash

  1. 下个最新版 clash

https://github.com/Dreamacro/clash/releases
下载自己需要的版本

1
2
3
4
5
6
# 配置文件 config.yaml 和 clash 都扔里就行
mkdir /root/clash/

# Country.mmdb 最近总是下载失败, 可以试着跑一下 看看有没有啥问题
cd /root/clash/
./clash -d .

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# config.yaml
port: 58652
socks-port: 58653
# 透明代理端口
redir-port: 58654

allow-lan: true

mode: Rule

log-level: info

# 控制面板端口
external-controller: 0.0.0.0:xxxx

dns:
enable: false
listen: 0.0.0.0:53
ipv6: false
enhance-mode: redir-host
nameserver:
- 'tls://dns.rubyfish.cn:853'
- 'tls://1.1.1.1:853'
- 'tcp://1.1.1.1'
- 'tls://dns.google'
- 119.29.29.29

Proxy:
# 自己发挥
- name: Socks5Proxy
type: socks5
server: 127.0.0.1
port: 1080
Proxy Group:
- name: Proxy
type: select
proxies:
- Socks5Proxy
Rule:

# GeoIP China
- GEOIP,CN,Direct
- MATCH,Proxy
  1. 没啥问题给 clash 写个 service 自启
1
2
3
vim /etc/init.d/clash
service clash enable
service clash start

/etc/init.d/clash 文件内容复制下边这个

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh /etc/rc.common
# Example script
# Copyright (C) 2007 OpenWrt.org

USE_PROCD=1
START=95

start_service() {
procd_open_instance
procd_set_param respawn
procd_set_param stderr 1
procd_set_param stdout 1
procd_set_param command /root/clash/clash -d /root/clash/
procd_close_instance
}

配置 OpenWrt iptable

1
2
3
4
5
6
7
8
# /etc/firewall.user
iptables -t nat -N clash
iptables -t nat -A clash -d 192.168/16 -j RETURN
iptables -t nat -A PREROUTING -p tcp -j clash
iptables -t nat -A clash -p tcp -j REDIRECT --to-ports 58654

iptables -t nat -A PREROUTING -p udp -m udp --dport 53 -j DNAT --to-destination 192.168.1.xxx:53

客户端设备

我的设备都是手动配的网关和 DNS,有时需要切下代理,打开 http://yacd.haishan.me/ 这个面板基本够用了

问题

  1. 时不时的不能打开 google.com, 但是 google.com.hk 没问题,应该是 clash dns 的问题
  2. 微信语音视频不通,zoom 音频不通,怀疑是 udp 问题,不清楚
  3. clash dns 总是出问题,现在没啥动力,忍了

Ref