newifi安装shadowosocks(pandarabox版)

网络 by 神秘人 at 2017-10-04

官网下载地址

一般刷稳定版的够了。

我用的版本是newifi y1

hardware(MediaTek MT7620A 580MHz, 16MB Flash, 128MB RAM, 2.4G/5G WIFI, 1 USB 2.0 port)

1.在浏览器输入 http://192.168.1.1/ , username "root", password "admin".

2.Select 系统-> 软件包 -> 配置, 清除旧内容,用以下内容代替:

arch all 100  
arch ramips_24kec 200  
arch ralink 300  
arch ramips 400`

dest root /  
dest ram /tmp  
lists_dir ext /var/opkg-lists  
option overlay_root /overlay

src/gz r2_base http://pb.scorpwill.com/base  
src/gz r2_management http://pb.scorpwill.com/management  
src/gz r2_packages http://pb.scorpwill.com/packages  
src/gz r2_routing http://pb.scorpwill.com/routing  
src/gz r2_telephony http://pb.scorpwill.com/telephony

3.开始安装程序

通过telnet 192.168.1.1,连接到路由器

移除旧的程序包

opkg remove luci-app-chinadns
opkg remove ChinaDNS

安装 wget and ca-certificates

opkg update
opkg install wget
opkg install ca-certificates

增加新的源 Install additional packages

Select 系统-> 软件包 -> 配置,添加下面新的源

src/gz openwrt_dist https://mirror.scorpwill.com/openwrt/base/ramips  
src/gz openwrt_dist_luci https://mirror.scorpwill.com/openwrt/luci

安装 ChinaDNS and shadowsocks

opkg update
opkg install iptables-mod-tproxy ip ipset
opkg install ChinaDNS
opkg install luci-app-chinadns
opkg install shadowsocks-libev
opkg install luci-app-shadowsocks

重启路由

再增加新的源 Install additional packages

Select 系统-> 软件包 -> 配置,添加下面新的源

src/gz openwrt_dist http://openwrt-dist.sourceforge.net/packages/OpenWrt/base/ramips/
src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/packages/OpenWrt/luci

安装 DNS-forwarder 及luci-app-dns-forwarder

opkg install dns-forwarder
opkg install luci-app-dns-forwarder

4、进行shadowsocks调整

选择服务-> 影梭-> 服务器管理

添加你自已的服务器后,点击保存应用

选择一般服务-> 透理代理

选你的主服务器,UDP服务器及端口,如果服务器不支持UDP,就不用开启UDP服务器。其它socks5及端口转发都选择停用,点击保存应用。

选择网络->影梭 - 访问控制

007

DNS设置

选择服务->DNS转发

006

选择服务->ChinaDNS

005

选择网络->DHCP/DNS->一般设置

003

选择网络->DHCP/DNS->host和解析文件,忽略解析文件打勾,忽略HOST文件,保存应用

004

最后我们并不需要 ISP 提供的 DNS,所以不让其更新 resolv.conf 就好了。

用SSH路由器中输入

echo "nohook resolv.conf" >> /etc/dhcpcd.conf

重启路由

选择网络->接口->WAN->一般设置->高级设置,取消使用端局通告的DNS的服务器

008

如何使用路由器下面的设备,新入设备处于墙内

009


dnsmasq

Dnsmasq 是一个开源的轻量级 DNS 转发和 DHCP、TFTP 服务器,使用C语言编写。

Dnsmasq 针对家庭局域网等小型局域网设计,资源占用低,易于配置。

对于 OpenWrt 来说默认就安装了 dnsmasq,dnsmasq 监听了 53 端口,是系统的默认 DNS server。

Dnsmasq 提供 DNS 缓存和 DHCP 服务功能。作为域名解析服务器(DNS),dnsmasq 可以通过缓存 DNS 请求来提高对访问过的网址的连接速度。

作为 DHCP 服务器,dnsmasq 可以用于为局域网电脑分配内网 IP 地址和提供路由。

编辑配置文件 /etc/dnsmasq.conf,在最后添加一行:

conf-dir=/etc/dnsmasq.d

该配置让 dnsmasq 去加载 /etc/dnsmasq.d 目录下所有的配置。例如,生成一个 /etc/dnsmasq.d/gfw.conf 文件,把需要代理的域名代理给 ChinaDNS:

/etc/dnsmasq.d/gfw.conf --- google
server=/.google.com/127.0.0.1#5353
server=/.googlecode.com/127.0.0.1#5353
server=/.googleapis.com/127.0.0.1#5353
server=/.gmail.com/127.0.0.1#5353
server=/.youtube.com/127.0.0.1#5353

然后重启 dnsmasq 服务即可:

/etc/init.d/dnsmasq restart

因为需要代理的域名很多而且很繁琐,因此这里使用 dnsmasq-china-list 的代理配置:

cd /etc 
mkdir dnsmasq.d
cd  dnsmasq.d
wget --no-check-certificate https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/accelerated-domains.china.conf
wget --no-check-certificate https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/bogus-nxdomain.china.conf
wget --no-check-certificate https://raw.githubusercontent.com/felixonmars/dnsmasq-china-list/master/google.china.conf

下面是关于网络的进一步优化,可做可不做。

自动更新ChinaDNS路由表

自动更新CHNROUTE(IGNORE.LIST)文件

1.新建一个文件 /root/update_chnroute.sh 写入如下内容:

#!/bin/sh

set -e -o pipefail

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)) }' > \
    /tmp/chinadns_chnroute.txt

mv /tmp/chinadns_chnroute.txt /etc/

if pidof ss-redir>/dev/null; then
    /etc/init.d/shadowsocks restart
fi

2.使用 chmod +x /root/update_chnroute.sh 添加可执行权限

3.打开路由器管.理页面 系统 - 计划任务 填写如下内容(每天 04:30 执行):

30 4 * * * /root/update_chnroute.sh>/dev/null 2>&1
30 4 * * * /root/update_chnroute.sh>/dev/null 2>&1

检测定时重启脚本/root/watchss.sh

#!/bin/sh

# version: 0.0.1

LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
wget --spider --quiet --tries=1 --timeout=10 https://www.google.com/
if [ "$?" == "0" ]; then
    echo '['$LOGTIME'] No Problem.'
    exit 0
else
    wget --spider --quiet --tries=1 --timeout=10 https://www.baidu.com/
    if [ "$?" == "0" ]; then
        echo '['$LOGTIME'] Problem decteted, restarting shadowsocks.'
        /etc/init.d/shadowsocks restart
    else
        echo '['$LOGTIME'] Network Problem. Do nothing.'
    fi
fi

选择系统->计划任务,添加

*/10 * * * * /root/watchss.sh >> /var/log/ss_watchdog.log 2>&1
0 1 * * 7 echo "" > /var/log/ss_watchdog.log

整个防止DNS污染的流程如下

DNS请求
  └─转发给ChinaDNS(127.0.0.1#5353)
        └─根据国内路由表(/etc/chinadns_chnroute.txt)判断是否为国内网站
              │
              ├─国内网站交给上游服务器(114.114.114.114)处理
              │
              └─国外网站交给shadowsocks的UDP转发(127.0.0.1:1153)处理
                    └─shadowsocks的UDP转发给国外DNS服务器(8.8.4.4:53)解析

有時可能遇到依賴包缺失,以下可能是須裝的信賴包

opkg install ip libc libgcc libgmp libnettle libopenssl zlib
opkg install ipset iptables-mod-tproxy
opkg install kmod-nfnetlink kmod-ipt-ipset kmod-ipt-tproxy libmnl libpthread

如果要安装shadowsocks-libev3.03以上的版本一定要下载安装libev_4.19-1_ramips_24kec.ipk

wget https://downloads.openwrt.org/chaos_calmer/15.05/ramips/mt7628/packages/packages/libev_4.19-1_ramips_24kec.ipk
opkg libev_4.19-1_ramips_24kec.ipk

如果 ipset 版本小于 6.22 请使用 without-ipset 版本.