openwrt配置dnsmasq、doh、v2瑞解决方案,v2瑞配置文件client-config.json设置,openwrt配置v2瑞教程
v2瑞-Dnsmasq-doh
本文为在路由器OpenWRT中使用v2瑞的另一种解决方案,之前相对简单的方案在这里v2瑞-openwrt。重点说下本方案的不同或者特点:
dnsmasq负责园内的解析(默认)
dnsmasq直接屏蔽广告域名
dns-over-https(doh)负责园外的解析(基于gw表或cn表)(可选)
通过tproxy处理udp流量(可选)
ipset记录园外域名的ip(gw模式下)
iptables根据ipset转发指定流量到v2瑞同时屏蔽广告ip
v2瑞只负责进站出站
dns-over-https和tproxy两者可以选择其一使用,使用tproxy是将dns查询的UDP流量通过转交给v2瑞来处理,这样就和之前s&s流行时的UDP转发一样了,也可以解决dns误染的问题。同时也可以实现UDP加速的效果,比如某些游戏。
下载v2瑞
可以从我的另一个repo的release下找自己对应平台的文件,压缩包内只包含v2瑞单文件,如果不喜欢可以自行从官方渠道下载。
下载hosts和ips文件
gw模式不需要cn.ips文件,cn模式不需要gwXXX文件,gw.hosts与gw-udp.hosts互斥,选择其一,前者用于仅TCP,后者配合支持UDP转发。
自行替换链接地址
v2瑞.service # v2瑞服务
ad.hosts # 屏蔽广告
ad.ips # 广告ip
gw.hosts # 某个域名列表,用于gw模式
gw.ips # 某个ip列表,用于gw模式
gw-udp.hosts # 某个域名列表,用于gw模式,通过UDP转发,默认使用8.8.8.8,可自行替换为其它
cn.ips # 从apnic提取出来的ip段集合,用于cn模式(园内直连)
通过ssh上传到路由器,路径此处为
/etc/config/v2瑞/
你可以放到自己喜欢的路径下,注意与下面的dnsmasq.conf配置中保持一致即可。看到有人说可以开机自动复制到/tmp目录,然后dnsmasq从/tmp下读文件更快,/tmp路径实际是内存。
添加执行权限
chmod +x /etc/config/v2瑞/v2瑞
添加v2瑞服务
服务自启动
chmod +x /etc/config/v2瑞/v2瑞.serviceln -s /etc/config/v2瑞/v2瑞.service /etc/init.d/v2瑞/etc/init.d/v2瑞 enable
开启
/etc/init.d/v2瑞 start
关闭
/etc/init.d/v2瑞 stop
dnsmasq配置
可以在luci界面进行配置,也可以直接在dnsmasq.conf文件里配置,luci界面的优先级更高,换句话说就是会覆盖dnsmasq.conf文件里相同的配置项。
vi /etc/dnsmasq.conf
加入下面的配置项,使用cn模式的话,只需要ad.hosts文件即可
conf-dir=/etc/config/v2瑞, *.hosts
dnsmasq配置不正确可能会导致无法上网,这里修改完了可以用下面的命令测试一下
dnsmasq -test
dns-over-https配置(可选)
使用UDP转发时,不需要dns-over-https,请忽略。
vi /etc/config/https_dns_proxy
可以看到内置了google和couldflare两家的服务,但是由于众所周知的原因,可能不太好用,或者说不能用,修改成下面的,红鱼的地址填好,端口可以根据个人口味调整
config https_dns_proxy
option listen_addr '127.0.0.1'
option listen_port '1053'
option user 'nobody'
option group 'nogroup'
option subnet_addr ''
option proxy_server ''
option url_prefix 'https://dns.rubyfish.cn/dns-query?'
也可以在服务器上安装自己的doh服务,以下基于Ubuntu 18.04
# install go
sudo apt install golang-go
# setup doh
git clone https://github.com/m13253/dns-over-https.git
cd dns-over-https
make
sudo make install
sudo systemctl start doh-server.service
sudo systemctl enable doh-server.service
doh的配置文件在这里,一般不用改动
sudo vi /etc/dns-over-https/doh-server.conf
修改服务器上nginx的配置,添加
location /dns-query { proxy_redirect off; proxy_set_header Host $http_host; proxy_pass http://127.0.0.1:8053/dns-query;}
nginx需要对外提供https访问,相关教程很多,这里不再赘述。
iptables规则
iptables配置要谨慎,错误的配置会造成无法连接路由器,只能重置路由器(恢复出厂设置)。为了安全,可以先通过ssh登陆到路由器,直接执行需要添加的iptables规则进行测试,如果发现终端不再响应,可能就是规则有问题,这时重启路由即可,刚刚执行的规则不会被保存。测试正常再添加到系统配置里。
在 luci-网络-防火墙-自定义规则 下添加
gw模式
# Only TCP
ipset -R < /etc/config/v2瑞/ad.ips
ipset -R < /etc/config/v2瑞/gw.ips
iptables -t nat -A PREROUTING -m set --match-set ad dst -j REJECT
iptables -t nat -A PREROUTING -p tcp -m set --match-set gw dst -j REDIRECT --to-port 12345
# With UDP support
ipset -R < /etc/config/v2瑞/ad.ips
ipset -R < /etc/config/v2瑞/gw.ips
ip rule add fwmark 1 table 100
ip route add local 0.0.0.0/0 dev lo table 100
iptables -t nat -A PREROUTING -m set --match-set ad dst -j REJECT
iptables -t mangle -A PREROUTING -p tcp -m set --match-set gw dst -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A PREROUTING -p udp -m set --match-set gw dst -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A PREROUTING -p udp -d 8.8.8.8 -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A OUTPUT -m mark --mark 255 -j RETURN
iptables -t mangle -A OUTPUT -p udp -d 8.8.8.8 -j MARK --set-mark 1
# The following two lines are for router self (optional)
iptables -t mangle -A OUTPUT -p tcp -m set --match-set gw dst -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p udp -m set --match-set gw dst -j MARK --set-mark 1
cn模式
# Only TCP
ipset -R < /etc/config/v2瑞/ad.ips
ipset -R < /etc/config/v2瑞/cn.ips
iptables -t nat -A PREROUTING -m set --match-set ad dst -j REJECT
iptables -t nat -N v2瑞
iptables -t nat -A v2瑞 -d 0.0.0.0 -j RETURN
iptables -t nat -A v2瑞 -d 127.0.0.1 -j RETURN
iptables -t nat -A v2瑞 -d 192.168.1.0/24 -j RETURN
iptables -t nat -A v2瑞 -d YOUR_SERVER_IP -j RETURN
iptables -t nat -A v2瑞 -m set --match-set cn dst -j RETURN
iptables -t nat -A v2瑞 -p tcp -j REDIRECT --to-ports 12345
iptables -t nat -A PREROUTING -j v2瑞
# With UDP support
ipset -R < /etc/config/v2瑞/ad.ips
ipset -R < /etc/config/v2瑞/cn.ips
iptables -t nat -A PREROUTING -m set --match-set ad dst -j REJECT
iptables -t mangle -N v2瑞
iptables -t mangle -A v2瑞 -d 0.0.0.0 -j RETURN
iptables -t mangle -A v2瑞 -d 127.0.0.1 -j RETURN
iptables -t mangle -A v2瑞 -d 192.168.1.0/24 -j RETURN
iptables -t mangle -A v2瑞 -d YOUR_SERVER_IP -j RETURN
iptables -t mangle -A v2瑞 -m set --match-set cn dst -j RETURN
iptables -t mangle -A v2瑞 -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A v2瑞 -p udp -j TPROXY --on-port 12345 --tproxy-mark 1
iptables -t mangle -A PREROUTING -j v2瑞
iptables -t mangle -A OUTPUT -m mark --mark 255 -j RETURN
# The following two lines are for router self (optional)
iptables -t mangle -A OUTPUT -p tcp -j MARK --set-mark 1
iptables -t mangle -A OUTPUT -p udp -j MARK --set-mark 1
cn模式需要将YOUR_SERVER_IP替换为实际的ip地址,局域网不是192.168.1.x段的根据实际情况修改。
v2瑞配置
注意替换==包含的内容为你自己的,配置采用ws作为底层传输协议,服务端及nginx相关配置可度娘。
v2瑞客户端配置参数client-config.json文件
v2瑞服务端配置参数server-config.json文件
规则来源及更新
主要规则取自
https://github.com/h2y/Shadowrocket-ADBlock-Rules
https://github.com/neoFelhz/neohosts
生成的hosts文件不定期更新,你也可以clone到本地自己更新规则,添加删除你想要的site,或着fork一份做你想要的。
相关推荐
openwrt安装v2瑞及配置openwrt安装v2瑞设置教程openwrt配置v2瑞教程
路由器openwrt配置dnsmasq、doh,高性能v2瑞解决方案openwrt配置v2瑞
点击链接加入群聊三群:751529538
点击链接加入群聊二群:376877156
点击链接加入群聊【路由器交流群:622891808已满】
本站附件分享,如果附件失效,可以去找找看
饿了么红包