ScotGu

OpenWrt利用SS+ipset聪明上网

最近装了Google Photos来备份手机里的照片,

iOS未越狱想用Google的服务器并不容易。

所以对于聪明的路由器的需求越来越强~

 

正好最近也打算换个支持5G的无线路由器,

百度了下发现极路由比较火,但是极一已经很老了,配置比较差,

极三价格虚高,并且极路由的评价并不是很好,

碰巧看到联想出的Newifi mini(Y1)貌似在做推广,

查了下配置比极一高,价格却比极一便宜不少。

也可以刷很多固件,至少openwrt肯定可以刷,

受不住诱惑,JD下单入了一台。

到手后感受了下原版固件,然后毅然决然的鉴定了刷机之路。

(原版固件根本没有办法愉快的使用。)

零、前言,本教程需要一定折腾精神,建议没用过openwrt的同学多去中文论坛补补课,

至少学会如何更新ipk文件包和常规设置再进行更高级的操作。

任何刷机都有风险,刷坏、刷砖、刷冒烟、刷SB概不负责!

当然!你还需要有一个靠谱的SS帐号。

 

一、首先下载固件:这里推荐刷入PandoraBox系列。[点此进入下载页面]

根据页面提供的连接,我下载的是:[PandoraBox-ralink-mt7620-y1-squashfs-sysupgrade-r1024-20150608.bin]

 

二、刷入openwrt,具体方法如下:

Newifi mini(以下简称Y1)断电,按住Reset按键,再插电,当USB和2.4G灯同时闪烁3秒后再松开Reset按键,

PC端手动设置IP:192.168.1.2、掩码255.255.255.255、网关留空。

之后在浏览器中输入http://192.168.1.1 进入刷机页面,选择刚刚下载的bin文件,耐心等一会。

 

三、刷机成功后将本机IP恢复为自动获取。

 

四、访问:http://192.168.1.1 帐号admin密码为空登陆openwrt主页面。

必做:修改系统管理密码、开SSH登陆、修改WAN口协议使之可以上网;建议:先关闭无线。

 

五、更新软件包、安装必备程序包。

在SSH连接下,分别输入下面每行命令:

opkg update
opkg remove dnsmasq
opkg install dnsmasq-full
opkg install ipset

如果提示“kmod: failed to insert /lib/modules/3.10.44/*.ko”

请无视,这是正常的。

进入网页下的【软件包】在“过滤器:”下搜索【shadowsocks】,点击“可用软件包 (shadowsocks)”

安装“shadowsocks-libev”

编辑SS客户端配置文件:

{
"server":"SS服务器IP地址",
"server_port":SS服务器端口,
"local_port":1080,
"password":"SS服务器密码",
"method":"SS服务器加密类型"
}

设置shadowsocks自动启动

/etc/init.d/shadowsocks enable

修改shadowsocks的启动配置文件(覆盖原配置)

vim /etc/init.d/shadowsocks

#!/bin/sh /etc/rc.common
START=95
SERVICE_USE_PID=1
SERVICE_WRITE_PID=1
SERVICE_DAEMONIZE=1
CONFIG=/etc/shadowsocks.json
start() {
# Client Mode
#service_start /usr/bin/ss-local -c $CONFIG
# Proxy Mode
service_start /usr/bin/ss-redir -c $CONFIG
service_start /usr/bin/ss-tunnel -c $CONFIG -l 5353 -L 8.8.8.8:53 -u
}
stop() {
# Client Mode
#service_stop /usr/bin/ss-local
# Proxy Mode
service_stop /usr/bin/ss-redir

下面配置dnsmasq:

直接执行下面两条命令,分别创建dnsmasq科学名单和白名单文件加载路由。

mkdir /etc/dnsmasq.d

echo “conf-dir=/etc/dnsmasq.d” >> /etc/dnsmasq.conf

进入黑名单配置目录,并创建一个模板以便以后添加域名。

echo “server=/ipaddress.com/127.0.0.1#5353” >> /etc/dnsmasq.d/gfwdomains.conf

echo “ipset=/ipaddress.com/gfwipset” >> /etc/dnsmasq.d/gfwdomains.conf

echo “server=/google.com/127.0.0.1#5353” >> /etc/dnsmasq.d/gfwdomains.conf

echo “ipset=/google.com/gfwipset” >> /etc/dnsmasq.d/gfwdomains.conf

编辑开机自启动文件,在exit 0上面加入如下命令:

vim /etc/rc.local

ipset -N gfwipset iphash
iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwipset dst -j REDIRECT --to-port 1080

 

六、重启SS和dnsmasq查看是否生效。

/etc/init.d/dnsmasq restart

/etc/init.d/shadowsocks restart

这时关掉浏览器代理,开启cmd输入ipconfig /flushdns 清理本机DNS缓存。

访问:http://ipaddress.com,查看右上角是否为SS服务器IP。

如果是则成功,失败则需要检查SS是否连接和DNS是否可以转发。

 

七、添加域名及IP走SS连接

vim /etc/dnsmasq.d/gfwdomains.conf

server=/facebook.com/127.0.0.1#5353
ipset=/facebook.com/gfwipset

每一条域名对应两条命令,不要搞错。

关于后面的127.0.0.1#5353,实际是路由器的5353转发到8.8.8.8,我使用后会超时无法解析域名。

我采用的方案是自建DNS,在本地其他设备安装unbound程序,通过TCP连接将解析请求转发到上级DNS。[相关连接]

也可以在VPS搭建其他端口的DNS。[相关连接1][相关连接2]

相关连接(鸣谢):

《在openwrt中利用ipset将特定流量转发到shadowsocks》 – AxisRay’s Blog

本文:《OpenWrt利用SS+ipset聪明上网》发表在「WoNote」
文章链接:http://www.wonote.com/openwrt-ss-ipset-proxy-access-internet/

评论