NETGEAR WNDR4300 折腾之 OpenWrt + dnsmasq + SS
前言
一直想入手一个可以刷 OpenWrt 的路由器,国内的不考虑,国外的看中了两款,NETGEAR 的 WNDR4300 以及 linksys 的 E4200,E4200 貌似不能刷 OpenWrt,而且国内也没有地方可以买到。于是 WNDR4300 成了不二之选。
这里记录下我的刷机并且实现自动科学上网的过程.
本机系统环境: Archlinux
防 DNS 劫持方案: dnsmasq 搭配 ss-tunnel
针对 IP 封锁:搭配 ignore.list 列表
刷机
下载 OpenWrt 固件
下载 OpenWrt 官方安装镜像及升级包,
|
|
刷入 OpenWrt 固件
登录路由器管理界面 (http://www.routerlogin.net) 进入「固件升级」页面,选择下载的安装镜像openwrt-ar71xx-nand-wndr4300-ubi-factory.img
,点「确定」。
等待镜像刷入成功。
初次登入 OpenWrt 是没有密码的,随机键入一个字符即可进入管理界面。
升级 OpenWrt 固件
「System」-「Backup/Flash Firmware」-「Flash new firmware image」,选中下载的openwrt-ar71xx-nand-wndr4300-squashfs-sysupgrade.tar
升级包,「Flash image…」
等待升级成功。
重启路由
当固件刷入成功后,为了确保 5GHz 的 WiFi 功能能正常使用,必须先关闭路由电源等待 5s 再开启电源重新启动。
至此,刷机步骤完成。
配置 OpenWrt
配置网络
「Network」-「Interface」-WAN
后面的「Edit」,Protocol
选择PPPoE
,「Switch Protocol」,输入帐号密码,「Save&Apply」,配置正确的话,此时有线网络可以正常连接上。
更改界面语言
PS: 此步骤可选,我为了尽量节省空间,就没有做修改.
「System」-「Software」-「Update list」-filter
后面输入chinese
搜索语言包,切换到「Available Packages」,点击搜索到的软件包后面的「install」安装中文包。
「System」-「System」-「Language&style」选择chinese
-「Save&Apply」,刷新即可甚至界面为中文。
安装及配置 Dnsmasq 和 SS
这里罗列一下使用到的开源项目包括版本(截至2015-11-9):
- shadowsocks-libev-spec v2.4.1-1
- dnsmasq-full v2.72-4
安装
ssh
到 openwrt
|
|
更新软件包列表并安装依赖包
|
|
添加第三方源OpenWrt-dist
源到etc/opkg.conf
:
|
|
卸载原本自带的 dnsmasq,安装 dnsmasq-full 和 spec 版 ss
|
|
有时候会发现安装速度很慢,此时也可通过 PC 端下载并传至路由器
/tmp
目录再执行安装.
上传文件到路由器:
1 scp luci-app-shadowsocks-spec_1.3.3-1_all.ipk shadowsocks-libev-spec_2.2.3-1_ar71xx.ipk root@192.168.1.1:/tmp/ssh 到路由器执行安装:
123 cd /tmpopkg install shadowsocks-libev-spec_2.2.3-1_ar71xx.ipkopkg install luci-app-shadowsocks-spec_1.3.3-1_all.ipk
下载忽略列表文件到/etc/shadowsocks/ignore.list
,之后更新该文件也是使用此命令。
|
|
配置
SS 的配置
登录到路由器的 WEB 管理界面,
「Services」-「ShadowSocks」- 「Global Setting」 里 「Enable」打勾并在下面输入 ss 服务器信息,「Proxy Setting」下的 「Proxy Method」选择Ignore List
,「Proxy Protocol」选择TCP only
,「UDP Forward」下勾选 「Enable」,然后点击「Save & Apply」即可.
这里配置启用了UDP 端口转发,默认会把本地的 5300 端口内容转发到 8.8.4.4#53
.
DNS 的配置
「Network」-「DHCP and DNS」-「Resolv and Hosts Files」- 勾选「Ignore Hosts files」防止上级 DNS 的污染.
打开 SSH 窗口,在/etc/dnsmasq.conf
中加入如下内容:
|
|
通过如上配置,可以有效防止DNS污染,使所有的网址都通过 GOOGLE 公共DNS 服务器来解析,但同时会使某些情况下访问国内网站会出现国际版的情况,此时就需要进行针对性的优化了.
基本思路是,国内的站点使用 114 来进行解析,国外的站点继续走 GOOGLE 的公共 DNS.这可以通过对 dnsmasq 进行配置来实现.
相关的配置文件如下:
[dnsmasq.conf] (https://github.com/aa65535/openwrt-dnsmasq/tree/master/etc)
[dnsmasq-china-list] (https://github.com/felixonmars/dnsmasq-china-list)
操作步骤:
SSH 到openwrt
修改 /etc/dnsmasq.conf
文件,对应的配置范例可点击上面链接,主要修改的几个地方:
|
|
创建 dnsmasq.d
配置目录
|
|
切换到 PC 端 terminal 操作(Linux 系统下)
重启
|
|
此时可以测试操作是否成功了。测试相关 ip 网址如下:
- 国内 http://ip.cn
- 国外 http://www.whatsmyip.org/
- 查询所使用的 DNS 服务 https://www.whatsmydns.net/
添加计划任务实现自动更新
备注: 此更新脚本可以自动更新已安装的软件脚本以及 ignore list
文件. 关于国内网址列表文件,我是在本机客户端自做了一个小脚本自动更新 git 仓库并上传到路由器覆盖.
ssh 到 openwrt,新建文件 /root/update
,添加如下内容:
|
|
运行命令 chmod +x /root/update
给脚本添加可执行权限
打开路由器 WEB 管理界面:
「System」-「Scheduled Tasks」填写如下内容(每天 04:30 执行):
|
|
后续补充
还有一些涉及到的例如 SS 服务器的安装与优化,及其他的一些改善内容,后续再慢慢研究。
参考资料: