查看: 12531|回复: 4

[大赛作品提交] 基于树莓派的可自(fan)由(qiang)上网的路由器

[复制链接]
  • TA的每日心情
    奋斗
    2018-3-7 19:42
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2017-12-28 09:40:45 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 ky123 于 2018-1-31 14:15 编辑

    前言:
    感谢
    e络盟官方提供的500元助赛基金。本来这次申请板子参加比赛的项目是做一个智能家居的网关,但板子拿到后,刚好碰到团队考虑无缝上网的问题,就想为小团队提供一个无差别的可自由上网的网络环境。这种体验是无差别的:就是之前我们怎么上网,现在还是怎么上网,但现在可以上之前上不了的一些网站。
    主要参考来自网络文章有以下几个,感谢他们:
    《Shadowsocks + ChnRoute 实现 OpenWRT / LEDE 路由器自动翻墙》
    《路由器实现自动翻墙》
    《Provides some OpenWrt/LEDE packages》


    以下操作几乎是Step by Step并为每个步骤都配图了。


    一. 把
    树莓派改造成一台路由器

    这里要感谢LEDE开源项目组,提供了这么完善的系统,LEDE项目(“Linux Embedded Development Environment”)是基于OpenWrt的Linux操作系统。它是供应商提供的各种无线路由器和非网络设备固件的完全替代品。
    下载LEDE固件:最新17.01.4版本 
    下载后解压,再使用烧录工具(如:Etcher)把下载的固件烧录进内存卡。我这里操作如下图:

    固件烧写

    固件烧写


    再把SD卡插入
    树莓派,上电启动。LEDE系统默认的网络IP为192.168.1.1,所以将电脑主机设置为IP:192.168.1.100   并用网线直连树莓派就可以访问到树莓派,网页登录192.168.1.1,也可以ssh直接登录 ,并设置密码。

    下面开始路由器配置,主要把以太网口配置成wlan口,按照需求设置网络类型(动态IP,静态IP,PPPoE等);把无线无卡设置成lan。具体步骤如下:
    1.先在Network - Wireless 选项卡中把无线打开。所有设置选择默认设置,电脑就可以直接连接SSID为LEDE的无线。

    开启无线

    开启无线


    2.断开有线网络。连接无线网络,并重新登录网页,在Network - Interface 选项卡中取消以太网口lan属性,再增加一个WLAN接口:

    以太网取消lan

    以太网取消lan


    3.WLAN设置。我这里直接接到公司网络上所以选择了静态IP,如果直接连接猫的话选择PPPoE并填账户密码就行。

    增减wlan口

    增减wlan口

    设置防火墙属性

    设置防火墙属性


    4.应用并保存,重启
    树莓派,现在电脑选择连接LEDE无线网络,应该就能上网了,不能上网的话需要排查下前面设置的问题。例如网关,dns等设置问题都可能引起不能上网,也很容易排查。



    二. 科(fan)学(qiang)上网环境搭建


    原理:在
    树莓派上安装shadowsocks客户端实现。

    1.安装插件,有两个插件是第三步要用到的,先一起安装(参考教程)。
    ssh到
    树莓派并执行一下命令(安装源证书):
    1. wget http://openwrt-dist.sourceforge.net/packages/openwrt-dist.pub
    2. opkg-key add openwrt-dist.pub
    复制代码
    并在网页System\Software\ Configuration添加两个源:
    1. src/gz openwrt_dist http://openwrt-dist.sourceforge.net/packages/LEDE/base/arm_cortex-a53_neon-vfpv4
    2. src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/packages/LEDE/luci
    复制代码

    插件源

    插件源


    回到ssh并执行一下命令:
    1. opkg update
    2. opkg install ChinaDNS
    3. opkg install luci-app-chinadns
    4. opkg install dns-forwarder
    5. opkg install luci-app-dns-forwarder
    6. opkg install shadowsocks-libev
    7. opkg install luci-app-shadowsocks
    复制代码
    安装完成后重启树莓派 。重新登录网页能看到多出一个Services菜单,及安装的插件:
    Services菜单.png

    2.配置shadowsocks。


    前提:有自己的vps且安装好shadowsocks服务端(当然也可以用网络上大家分享的账号),主要包括vps的IP地址,
    shadowsocks服务端口号,加密方式,密码等信息。服务器端推荐教程。

    在网页Services/Shadowsocks/ServersManage 填写Shadowsocks服务器对应参数,保存提交:

    ss配置

    ss配置

    ss配置结果

    ss配置结果


    在网页Services/Shadowsocks/AccessControl设置全局代理,其他选项默认:

    全局代理

    全局代理


    在网页Services/Shadowsocks/ General Settings 启动Shadowsocks服务:

    启动ss服务

    启动ss服务


    这步设置完后,就能够科(fan)学(qiang)上网了。可以上http://www.ip138.com/ 查询IP,应该就是Shadowsocks服务器的IP了,并且可以上一些以前不能上的网站了;但有个缺点就是所有的网站都是经过Shadowsocks,既影响体验又浪费流量!



    三. 自动科(fan)学(qiang)上网


    要打造无差别的上网体验,到步骤二显然是不够的,我们期望是只有被墙的站点才走Shadowsocks,没有被墙的就直连,而这些判断也可以直接在树莓派上搞定,让用户体验到无差别上网。主要原理:建立list,通过list判断要不要走Shadowsocks。这些list都是有网络开源人士做定期维护更新的。


    1.网页端设置
    在Services/DNS-forwarder,勾选 Enable,设置端口:

    dns f

    dns f


    在Services/ChinaDNS,设置如下:

    chinadns

    chinadns

    其中5311 是 DNS-forwarder 配置项的 监听端口。202.101.172.35是你ISP服务商的dns服务器地址


    在Network/DHCP and DNS 中在「
    DNS forwardings」中填入:127.0.0.1#5353,5353 是 ChinaDNS 配置项的 本地端口;然后切到 Resolv and Hosts Files 选项卡,选中「Ignore resolve file」:
    dhcp and dns.png

    回到System\Software\ Configuration删除步骤二添加的源,点击提交,不然安装源有冲突:

    源.png

    后面操作都在ssh窗口,具体可以参考。

    执行:
    1. opkg update
    2. opkg install ip-full ipset iptables-mod-tproxy libev libpthread libpcre libmbedtls
    3. opkg install coreutils-base64 ca-certificates ca-bundle curl
    复制代码
    安装一些用到的依赖包。

    再执行:
    1. mkdir /etc/dnsmasq.d
    2. uci add_list dhcp.@dnsmasq[0].confdir=/etc/dnsmasq.d
    3. uci commit dhcp
    复制代码
    创建 dnsmasq配置文件夹。

    执行:
    1. opkg remove dnsmasq && opkg install dnsmasq-full
    复制代码
    更新 dnsmasq-full。

    执行:
    1. curl -L -o generate_dnsmasq_chinalist.sh https://github.com/cokebar/openwrt-scripts/raw/master/generate_dnsmasq_chinalist.sh
    2. chmod +x generate_dnsmasq_chinalist.sh
    3. sh generate_dnsmasq_chinalist.sh -d 202.101.172.35 -p 53 -s ss_spec_dst_bp -o /etc/dnsmasq.d/accelerated-domains.china.conf
    复制代码
    下载并执行自动生成规则文件的脚本,生成China-List,强制直连。
    PS: 其中202.101.172.35是你ISP服务商的dns服务器地址

    执行:
    1. curl -L -o gfwlist2dnsmasq.sh https://github.com/cokebar/gfwlist2dnsmasq/raw/master/gfwlist2dnsmasq.sh
    2. chmod +x gfwlist2dnsmasq.sh
    3. sh gfwlist2dnsmasq.sh -d 127.0.0.1 -p 5311 -s ss_spec_dst_fw -o /etc/dnsmasq.d/dnsmasq_gfwlist.conf
    复制代码
    下载自动生成规则文件的脚本并生成GFWList,强制走代理 。
    PS:其中127.0.0.1 -p 5311 DNS-forwarder的监听端口。

    重启dnsmasq:
    1. /etc/init.d/dnsmasq restart
    复制代码
    最后回到网页配置页面Services/Shadowsocks/AccessControl。在「Zone WAN」中「Bypassed IP List」选择 ChinaDNS CHNRoute:
    zonWAN.png

    大功告成!

    回复

    使用道具 举报

  • TA的每日心情
    开心
    2018-3-23 13:54
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2017-12-31 08:20:57 | 显示全部楼层
    好贴,占个沙发
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-3-1 10:27
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    发表于 2018-3-1 08:17:28 | 显示全部楼层
    l楼主你好,想问一下wan口和lan口的具体配置。我这边树莓派用网线连接到路由器上,配置完后不能上网,可否截图说明下?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2018-3-7 19:42
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

     楼主| 发表于 2018-3-7 20:15:56 | 显示全部楼层
    vintage211 发表于 2018-3-1 08:17
    l楼主你好,想问一下wan口和lan口的具体配置。我这边树莓派用网线连接到路由器上,配置完后不能上网,可否 ...

    因为我还要连接一级路由器,所以WLAN 地址选型静态。供参考。

    WLAN

    WLAN

    lan

    lan
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    发表于 2018-5-20 21:06:08 | 显示全部楼层
    ping 得通 源也换了,为什么更新 安装都是无法连接,就下得了一个中文
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则



    手机版|小黑屋|与非网

    GMT+8, 2024-4-23 14:36 , Processed in 0.187027 second(s), 25 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.