1 wndr4300刷openwrt固件
wndr4300在openwrt的官方支持列表中,但官方固件可使用空间只有12M,所以需要打一些补丁。本文所用固件来自我也分享 WNDR4300 14.07 固件,官方 ImageBuilder 编译,完全使用 128M flash,集成中文 Luci ,具体链接:openwrt-ar71xx-nand-wndr4300
刷机说明: netgear原厂刷openwrt,必须刷结尾是factory.img的那个文件。由于无线网络缺省是关闭状态,必须使用网线,ip分配为dhcp自动分配,执行ping命令。返回成功后,可以使用telnet登录,没有密码。登录成功后,使用passwd命令改变root密码。然后使用ssh root@192.168.1.1 重新登录。也可以用 http://192.168.1.1,进入 luci web配置页面,此时的密码就是刚才设置的root密码。
ping 192.168.1.1
telnet 192.168.1.1
进入web页面后,在网络-无线菜单下,设置wifi ssid,密码,启动WIFI,然后就可以无线登录了。在网络-接口-LAN 下,选择修改,可以设置路由器的静态IP。如果多个串联,需要把地址设置为192.168.2/3/4.1等非192.168.1.1的情况。【!!!必须设置为静态IP,千万不要选dhcp等其他选项,否则后面无法登录系统】
wndr4300变砖后,通过tftp重新刷固件的恢复方法。
1、通过网线连接计算机和路由器的lan接口
2、在计算机上,ip地址设置为手工设定为 192.168.1.2 掩码255.255.255.0
3、关闭路由器电源开关。使用大头针或者类似工具,戳路由器背面的红色小孔(恢复出厂设置的孔),不要松开。
4、打开路由器电源开关,观察电源指示灯从黄色-变成绿色闪烁状态,然后可以放开大头针
5、在计算机上,进入存放待刷固件的目录(openwrt-ar71xx-nand-wndr4300-ubi-factory.img),使用tftp客户端 连接路由器。 mac os x命令如下:(-e 参数表示二进制模式)
tftp -e 192.168.1.1
put openwrt-ar71xx-nand-wndr4300-ubi-factory.img
6 另开一个终端窗口,持续ping 192.168.1.1,等待连续ping连续成功后10秒以上,断开路由器电源开关。等待5秒钟,再打开路由器电源。继续观察ping结果。等待ping持续成功后,可以telnet 192.168.1.1,进入正常设置程序。
2 安装shadowsocks+chinadns
参考:Shadowsocks + ChnRoute 实现 OpenWRT 路由器自动翻墙
获取 shadowsocks忽略表
wget -O- 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | awk -F\| '/CN\|ipv4/ { printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > ignore.list
注意:在luci配置的时候,要指定ignore.list文件的存放位置
获取chinadns 国内IP列表
curl 'http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest' | grep ipv4 | grep CN | awk -F\| '{ printf("%s/%d\n", $4, 32-log($5)/log(2)) }' > chnroute.txt
在Luci中切换至“网络”-“DHCP/DNS”设置,如下图,在”DNS转发”中填入127.0.0.1#5353
然后切到HOSTS和解析文件选项卡,勾中“忽略解析文件”,忽略上级dns
安装dig工具
opkg install bind-dig
dig www.twitter.com
3 shadowsocks支持udp转发
1 服务器侧必须使用shadowsocks-libev版本,且启动参数中有-u
netstat -an | grep udp
已经有udp端口8888的监听
udp 0 0 0.0.0.0:8888 0.0.0.0:*
2在iptables中添加一条允许udp 8888端口通过的规则
sudo iptables -I INPUT -p udp --dport 8888 -j ACCEPT
3 在openwrt luci shadowsocks服务中,启用udp转发,端口5300,转发地址8.8.8.8:53 (google public dns)
/usr/bin/ss-tunnel -c /var/etc/shadowsocks.json -l 5300 -L 8.8.8.8:53 -f /var/run/ss-tunnel.pid -u
使用dig测试一下:
root@OpenWrt:~# dig @localhost -p 5300 www.twitter.com
;; ANSWER SECTION:
www.twitter.com. 354 IN CNAME twitter.com.
twitter.com. 1 IN A 199.59.149.198
twitter.com. 1 IN A 199.59.150.39
;; Query time: 274 msec
;; SERVER: 127.0.0.1#5300(127.0.0.1)
4 检查服务器侧数据,UDP包已经转发过来了
sudo iptables -L -v -n
464 39550 ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:8888
5 配置chinadns,加上shadowssocks的UDP转发源
共配置4个dns服务器,分别是是阿里dns,114 dns,dnscrypt-proxy,shadowsocks udp转发端口
223.5.5.5,114.114.114.114,127.0.0.1:2053,127.0.0.1:5300
4 安装dnscrypt-proxy
添加软件源
src/gz exopenwrt http://exopenwrt.and.in.net/barrier_breaker/ar71xx/packages/exOpenWrt
opkg update
opkg install dnscrypt-proxy
启动
/etc/init.d/dnscrypt-proxy enable
/etc/init.d/dnscrypt-proxy start
配置文件是:
/etc/config/dnscrypt-proxy
缺省端口为2053
修改chinadns的国外源,缺省是8.8.4.4,建议修改为dnscrypt-proxy提供的源
127.0.0.1:2053
比较常用的几个服务器
208.67.220.220 https://www.opendns.com Cisco OpenDNS
180.131.144.144 http://www.nawala.id nawala Indonesia
106.185.41.36 http://meo.ws/dnsrec.php opennic-fvz-rec-jp-tk-01
5 使用shadowsock+gfwlist的方式翻墙
参考:Shadowsocks + GfwList 实现 OpenWRT 路由器自动翻墙
和利用ignore.list的方法的差别在于:前面的方法,只要IP不在国内,那么就需要启动代理,这种情况下,很多没有屏蔽的海外网站访问也通过代理,速度会下降很多。
而通过gfwlist的方式,只有针对在gfwlist限制范围内IP地址,才启动代理。
1.首先卸载前面已经安装但后面不再需要的包,注意shadowsocks-libev-spec 这个包是不需要的
opkg remove ip resolveip iptables-mod-tproxy shadowsocks-libev-spec
安装新的包(shadowsock-libev 没有spec后缀):
opkg install iptables-mod-nat-extra
opkg install shadowsocks-libev
卸载dnsmasq,安装dnsmasq-full,full版本才支持需要用到的ipset特性
opkg remove dnsmasq && opkg install dnsmasq-full
2 配置/etc/shadowsock.json,和服务器配置一致。 修改/etc/init.d/shadowsocks, 启用ss-redir/ss-tunnel两个命令,关闭ss-local命令,注意ss-tunnel的监听端口5300不要和现有的端口冲突
SERVICE_USE_PID=1
SERVICE_WRITE_PID=1
SERVICE_DAEMONIZE=1
SERVICE_PID_FILE=/var/run/shadowsocks.pid
CONFIG=/etc/shadowsocks.json
start() {
#service_start /usr/bin/ss-local -c $CONFIG -b 0.0.0.0 -f $SERVICE_PID_FILE
service_start /usr/bin/ss-redir -c $CONFIG -b 0.0.0.0 -f $SERVICE_PID_FILE
service_start /usr/bin/ss-tunnel -c $CONFIG -b 0.0.0.0 -u -l 5300 -L 8.8.8.8:53
}
stop() {
#service_stop /usr/bin/ss-local
service_stop /usr/bin/ss-redir
service_stop /usr/bin/ss-tunnel
}
3 启动shadowsocks
/etc/init.d/shadowsocks enable
/etc/init.d/shadowsocks start
4 增加防火墙规则,并加入到/etc/rc.local,保证开机执行
ipset -N gfwlist iphash
iptables -t nat -A PREROUTING -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 1080
iptables -t nat -A OUTPUT -p tcp -m set --match-set gfwlist dst -j REDIRECT --to-port 1080
5 修改 /etc/dnsmasq.conf ,在最后加入 conf-dir=/etc/dnsmasq.d ,新建并进入目录 /etc/dnsmasq.d ,下载dnsmasq_list.conf 后放入该目录
6 挂载u盘,格式是fat32
需要执行的命令如下:
opkg update
opkg install kmod-usb-storage
opkg install kmod-fs-vfat
opkg install kmod-nls-cp437
opkg install kmod-nls-utf8
opkg install kmod-nls-iso8859-1
#然后就可以
mount -t /dev/sda1 /mnt
7 定时任务
参考:OpenWrt使用crontab执行计划任务 - Slyar Home
每天自动重启:
59 02 * * 1-7 /sbin/reboot
每10分钟重启chinadns
*/10 * * * * /etc/init.d/chinadns restart >> /dev/null 2>&1