pandorabox 第三方路由器固件结合ChinaDNS与dnsmasq 实现透明代理

为什么要翻出去?

  1. 让自己不是那么被愚弄, 本来生活就那么压抑, 为何不尝试改变一下呢?
  2. 学习更多更有价值的知识, 为自己充电。
  3. 其实说到底是哪里有压迫,哪里就有反抗,但你永远也叫不醒一个装睡的人。

需要些什么硬件和软件?

  1. 一个可以刷第三方固件的路由器,我这里用了斐讯的k2, 并刷了pandorabox固件,这里我就不过多的说如何去刷固件了,网上教程很多,我会放下我所用的软件的链接。
  2. 一些需要用到的固件(小型嵌入式设备上能用到的,算是操作系统吧),还有是适合你路由器芯片型号的特定软件。
  • PandoraBox-ralink-mt7620-xiaomi-mini-squashfs-sysupgrade-r1055-20150615_5.5M
  • shadowsocks-libev-spec_2.4.8-2_ramips_24kec.ipk
  • luci-app-shadowsocks-spec_1.5.0-1_all.ipk
  • ChinaDNS 下载
  • luci-app-chinadns 下载
  • dnsmasq 默认这个固件里有,就不需要了就是网络→DHCP/DNS这个菜单里的配置。
  • 一个SSH客户端,比如WinSCP, 用于传软件到路由器里面。
  • 命令行终端工具: 如putty, xshell之类。
  • 其他未提供下载地址的软件链接 密码: dx1n
  • 再说明一下,你下载软件一定要先弄清楚你的路由器的芯片型号,然后下载适合你硬件的软件,这样才不会不能用。

下面开始安装和配置教程:

  1. 用winscp软件连上路由器,方便传下好的软件进去。

    img1

  2. 把软件以ipk结尾的都上传到/tmp/这个目录。

    img2

  3. 开始安装软件咯,用putty登录到路由器,这里我用的是xshell,根据自己的喜好来,不强求。

    img3

  4. 以下是命令行操作:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    1. 进入tmp目录:
    cd /tmp
    2. 此文件夹如果没有你之前上传的其他ipk文件的话,直接运行这个命令安装:
    opkg install *.ipk
    3. 这里说一下如果有什么报错,要用搜索引擎找一下答案,有可能会有依赖没装之类的,先配置下软件源,这个操作是在浏览器里进行的, 菜单是: 系统→软件包→配置,把里面的默认内容删掉,替换为以下的配置后并提交。
    dest root /
    dest ram /tmp
    lists_dir ext /var/opkg-lists
    option overlay_root /overlay
    src/gz barrier_breaker_base http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ramips/mt7620a/packages/base
    src/gz barrier_breaker_luci http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ramips/mt7620a/packages/luci
    src/gz barrier_breaker_management http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ramips/mt7620a/packages/management
    src/gz barrier_breaker_oldpackages http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ramips/mt7620a/packages/oldpackages
    src/gz barrier_breaker_packages http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ramips/mt7620a/packages/packages
    src/gz barrier_breaker_routing http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ramips/mt7620a/packages/routing
    src/gz barrier_breaker_telephony http://mirrors.ustc.edu.cn/openwrt/barrier_breaker/14.07/ramips/mt7620a/packages/telephony
    src/gz openwrt_dist http://openwrt-dist.kxrr.us/dist/base/ramips
    src/gz openwrt_dist_luci http://openwrt-dist.kxrr.us/dist/luci
    arch all 100
    arch noarch 200
    arch ralink 300
    arch ramips_24kec 400
  5. 安装好之后,请看一下是不是在服务菜单里有对应软件的luci界面。

    img4

  6. 下面开始正式配置,把你有的工具都用上。先配置shadowsocks:

    img5

    图中划红线的都要填,根据你从服务端得来的账号和密码。

    img6

    访问控制一节,被忽略ip列表,选ChinaDNS路由表。

    如何得到这个路由表呢?其实你安装ChinaDNS后,在/etc目录下就有这个txt文件了,但是这个文件需要更新,因为里面的ip是会更新的。先在命令行终端里运行如下命令,在添加计划任务,让其自动帮你更新。

    1
    2
    3
    4
    5
    6
    7
    1. 先手动更新一下:
    wget -O- '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)) }' > /etc/chinadns_chnroute.txt
    2. 在系统/计划任务里添加任务,让其自动更新:
    0 4 * * * wget -O- '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)) }' > /etc/chinadns_chnroute.txt
  7. 接下来配置ChinaDNS,让其根据chnroute文件来交给对应的dns服务器去解析,国内的域名交给114.114.114.114 或者是运营商dns服务器, 国外的就交给上游的dns,比如Google的dns: 8.8.8.8:53 或者是8.8.4.4:53, 具体怎么选择要根据你当地的网络情况,有时google的dns也ping不通的。

    img7

  8. 最后就是路由器里的dnsmasq了,算是客户端吧,不过你要说是服务端也对,概念有时是相对的,我也不知道我理解的对不对,大佬轻喷。
    关于dnsmasq的介绍可以搜索看一下,就是关于dns和dhcp的。

    img8

    菜单: 网络→DHCP/DNS

    img9

    HOSTS和解析文件这个选项卡:勾选忽略解析文件和忽略HOSTS文件,这个的优先级是高,但域名解析不还是从你本机开始解析吗? 关于是不是要修改dnsmasq的配置文件,我也不太清楚,我是做了,但好像我注释掉,也能透明代理,具体就是修改/etc/dnsmasq.conf这个文件,加入这些东西,可以看到我里面是注释掉的:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # 设置 DNS 转发,路由器接到 DNS 解析请求后,会转发给这个 DNS,也就是 chinadns
    #server=127.0.0.1#5353
    # 不使用 ISP 的 DNS,如果不设置这个,路由器会自己找 ISP 要一个 DNS 来解析域名
    #no-resolv
    # 这里指定配置文件路径,就是上面的 dnsmasq-china-list 列表,这个列表的优先级略高,如果这里有指定 DNS,将不会走 127.0.0.1#7453 (这个是dnsmasq的服务端口,可以自定义,别和其他服务的端口冲突就好了。
    #conf-dir=/etc/dnsmasq.d

    你可以从这个链接下载zip文件,然后把里面的conf文件传到路由器的/etc/dnsmasq.d/这个目录里就可以了。

  9. 最后就来说一下如何停止和启动服务以及让服务开机启动吧。

    1
    2
    3
    4
    5
    /etc/init.d/shadowsocks enable
    /etc/init.d/shadowsocks start
    /etc/init.d/chinadns enable
    /etc/init.d/chinadns start
    /etc/init.d/dnsmasq reload

    其实网页里点保存和应用一样的效果,只是有些时候启动不起来,反正我是不知道网页里的操作行不行。

  10. 就扯这些吧, 真心写不下去了,太累了,现在明白能把博客写好也是一种优秀的品质了,习惯养成了,其他都是水到渠成。

生活不止眼前的苟且,还有那片海