4回答

2收藏

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

Raspberry Pi Raspberry Pi 14250 人阅读 | 4 人回复 | 2017-12-28

本帖最后由 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接口:


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


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菜单,及安装的插件:


2.配置shadowsocks。


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

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



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


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


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



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


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


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


在Services/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」:


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



后面操作都在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:


大功告成!

关注下面的标签,发现更多相似文章
分享到:
回复

使用道具 举报

回答|共 4 个

倒序浏览

沙发

anywill

发表于 2017-12-31 08:20:57 | 只看该作者

好贴,占个沙发
板凳

vintage211

发表于 2018-3-1 08:17:28 | 只看该作者

l楼主你好,想问一下wan口和lan口的具体配置。我这边树莓派用网线连接到路由器上,配置完后不能上网,可否截图说明下?
地板

acmilann

发表于 2018-3-7 20:15:56 | 只看该作者

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

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

QQ截图20180307200858.jpg (160.65 KB, 下载次数: 100)

WLAN

WLAN

QQ截图20180307201011.jpg (171.57 KB, 下载次数: 96)

lan

lan
5#

bomiianmian

发表于 2018-5-20 21:06:08 | 只看该作者

ping 得通 源也换了,为什么更新 安装都是无法连接,就下得了一个中文
您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条