2019
12-24

openwrt配置dnsmasq、doh、v2ray解决方案,v2ray配置文件client-config.json设置,openwrt配置v2ray教程

官方QQ群号码:922069959

v2ray-dnsmasq-doh

本文为在路由器openwrt中使用v2ray的另一种解决方案,之前相对简单的方案在这里v2ray-openwrt。重点说下本方案的不同或者特点:

dnsmasq负责园内的解析(默认)

dnsmasq直接屏蔽广告域名

dns-over-https(doh)负责园外的解析(基于gw表或cn表)(可选)

通过tproxy处理udp流量(可选)

ipset记录园外域名的ip(gw模式下)

iptables根据ipset转发指定流量到v2ray同时屏蔽广告ip

v2ray只负责进站出站

dns-over-https和tproxy两者可以选择其一使用,使用tproxy是将dns查询的UDP流量通过转交给v2ray来处理,这样就和之前s&s流行时的UDP转发一样了,也可以解决dns误染的问题。同时也可以实现UDP加速的效果,比如某些游戏。

下载v2ray

可以从我的另一个repo的release下找自己对应平台的文件,压缩包内只包含v2ray单文件,如果不喜欢可以自行从官方渠道下载。

下载hosts和ips文件

gw模式不需要cn.ips文件,cn模式不需要gwXXX文件,gw.hosts与gw-udp.hosts互斥,选择其一,前者用于仅TCP,后者配合支持UDP转发。

v2ray.service # v2ray服务

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/v2ray/

你可以放到自己喜欢的路径下,注意与下面的dnsmasq.conf配置中保持一致即可。看到有人说可以开机自动复制到/tmp目录,然后dnsmasq从/tmp下读文件更快,/tmp路径实际是内存。

添加执行权限

chmod +x /etc/config/v2ray/v2ray

添加v2ray服务

服务自启动

chmod +x /etc/config/v2ray/v2ray.serviceln -s /etc/config/v2ray/v2ray.service /etc/init.d/v2ray/etc/init.d/v2ray enable

开启

/etc/init.d/v2ray start

关闭

/etc/init.d/v2ray stop

dnsmasq配置

可以在luci界面进行配置,也可以直接在dnsmasq.conf文件里配置,luci界面的优先级更高,换句话说就是会覆盖dnsmasq.conf文件里相同的配置项。

vi /etc/dnsmasq.conf

加入下面的配置项,使用cn模式的话,只需要ad.hosts文件即可

conf-dir=/etc/config/v2ray, *.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/v2ray/ad.ips

ipset -R < /etc/config/v2ray/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/v2ray/ad.ips

ipset -R < /etc/config/v2ray/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/v2ray/ad.ips

ipset -R < /etc/config/v2ray/cn.ips

iptables -t nat -A PREROUTING -m set --match-set ad dst -j REJECT

iptables -t nat -N V2RAY

iptables -t nat -A V2RAY -d 0.0.0.0 -j RETURN

iptables -t nat -A V2RAY -d 127.0.0.1 -j RETURN

iptables -t nat -A V2RAY -d 192.168.1.0/24 -j RETURN

iptables -t nat -A V2RAY -d YOUR_SERVER_IP -j RETURN

iptables -t nat -A V2RAY -m set --match-set cn dst -j RETURN

iptables -t nat -A V2RAY -p tcp -j REDIRECT --to-ports 12345

iptables -t nat -A PREROUTING -j V2RAY


# With UDP support

ipset -R < /etc/config/v2ray/ad.ips

ipset -R < /etc/config/v2ray/cn.ips

iptables -t nat -A PREROUTING -m set --match-set ad dst -j REJECT

iptables -t mangle -N V2RAY

iptables -t mangle -A V2RAY -d 0.0.0.0 -j RETURN

iptables -t mangle -A V2RAY -d 127.0.0.1 -j RETURN

iptables -t mangle -A V2RAY -d 192.168.1.0/24 -j RETURN

iptables -t mangle -A V2RAY -d YOUR_SERVER_IP -j RETURN

iptables -t mangle -A V2RAY -m set --match-set cn dst -j RETURN

iptables -t mangle -A V2RAY -p tcp -j TPROXY --on-port 12345 --tproxy-mark 1

iptables -t mangle -A V2RAY -p udp -j TPROXY --on-port 12345 --tproxy-mark 1

iptables -t mangle -A PREROUTING -j V2RAY

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段的根据实际情况修改。

v2ray配置

注意替换==包含的内容为你自己的,配置采用ws作为底层传输协议,服务端及nginx相关配置可度娘。

v2ray客户端配置参数client-config.json文件

v2ray服务端配置参数server-config.json文件

规则来源及更新

主要规则取自

https://github.com/h2y/Shadowrocket-ADBlock-Rules

https://github.com/neoFelhz/neohosts

生成的hosts文件不定期更新,你也可以clone到本地自己更新规则,添加删除你想要的site,或着fork一份做你想要的。

相关推荐

openwrt安装v2ray及配置openwrt安装v2ray设置教程openwrt配置v2ray教程

路由器openwrt配置dnsmasq、doh,高性能v2ray解决方案openwrt配置v2ray

官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:https://jq.qq.com/?_wv=1027&k=5AKdmZP

您可能感兴趣的文章

免费支持本站

支付宝打赏支付宝打赏 微信打赏微信打赏

本站》评论功能已永久关闭

官方QQ群号码:922069959
点击链接加入群聊【路由器交流】:
https://jq.qq.com/?_wv=1027&k=5AKdmZP
官方QQ群号码:922069959