安装所需软件包
ShadowVPN for OpenWrt 官方下载地址: https://github.com/clowwindy/ShadowVPN/releases
1 2 3 4 |
opkg update opkg remove dnsmasq opkg install dnsmasq-full ip ipset iptables-mod-nat-extra kmod-ipt-ipset opkg install <Path to shadowvpn.ipk> |
配置 dnsmasq 和 ipset
为了防止 DNS 污染和把被认证域名对应的 IP 存放到 ipset 中,我们要把需要通过代理访问的站点域名交由 dnsmasq 处理,域名列表可以自己收集也可以从 gfwlist 导出,最简单的方法就是使用 gfwlist2pac ,从生成的 pac 文件中提取出域名列表再进行加工即可用于 dnsmasq
首先使用 ipset 新建一个名为 redir 的 set 用于存放列表中的域名对应的 IP,将以下命令加入开机启动项中
1 |
ipset create redir iphash |
修改 /etc/dnsmasq.conf 在最后加入 conf-dir=/etc/dnsmasq.d ,新建并进入目录 /etc/dnsmasq.d ,新建一个名为 redir.conf 的配置文件,内容如下:
1 2 3 4 5 |
#使用非标准端口的opendns避免DNS污染 server=/google.com/208.67.220.220#443 #将解析出来的IP保存到名为redir的ipset表中 ipset=/google.com/redir |
完整的由 gfwlist 生成的域名配置文件从 这里 下载
由于我们要让符合条件的域名走 VPN,所以需要使用 iptables 给这些数据包打上值为200的标记,只让带有标记的数据走 VPN,将以下命令加入到防火墙自定义规则中
1 |
iptables -t mangle -A PREROUTING -m set --match-set redir dst -j MARK --set-mark 200 |