本帖最后由 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
3.WLAN设置。我这里直接接到公司网络上所以选择了静态IP,如果直接连接猫的话选择PPPoE并填账户密码就行。
增减wlan口
设置防火墙属性
4.应用并保存,重启树莓派,现在电脑选择连接LEDE无线网络,应该就能上网了,不能上网的话需要排查下前面设置的问题。例如网关,dns等设置问题都可能引起不能上网,也很容易排查。
二. 科(fan)学(qiang)上网环境搭建
原理:在树莓派上安装shadowsocks客户端实现。
1.安装插件,有两个插件是第三步要用到的,先一起安装(参考教程)。
ssh到树莓派并执行一下命令(安装源证书):- wget http://openwrt-dist.sourceforge.net/packages/openwrt-dist.pub
- opkg-key add openwrt-dist.pub
复制代码 并在网页System\Software\ Configuration添加两个源:
- src/gz openwrt_dist http://openwrt-dist.sourceforge.net/packages/LEDE/base/arm_cortex-a53_neon-vfpv4
- src/gz openwrt_dist_luci http://openwrt-dist.sourceforge.net/packages/LEDE/luci
复制代码
插件源
回到ssh并执行一下命令:
- opkg update
- opkg install ChinaDNS
- opkg install luci-app-chinadns
- opkg install dns-forwarder
- opkg install luci-app-dns-forwarder
- opkg install shadowsocks-libev
- opkg install luci-app-shadowsocks
复制代码 安装完成后重启树莓派 。重新登录网页能看到多出一个Services菜单,及安装的插件:
2.配置shadowsocks。
前提:有自己的vps且安装好shadowsocks服务端(当然也可以用网络上大家分享的账号),主要包括vps的IP地址,shadowsocks服务端口号,加密方式,密码等信息。服务器端推荐教程。
在网页Services/Shadowsocks/ServersManage 填写Shadowsocks服务器对应参数,保存提交:
ss配置
ss配置结果
在网页Services/Shadowsocks/AccessControl设置全局代理,其他选项默认:
全局代理
在网页Services/Shadowsocks/ General Settings 启动Shadowsocks服务:
启动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
在Services/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」:
回到System\Software\ Configuration删除步骤二添加的源,点击提交,不然安装源有冲突:
后面操作都在ssh窗口,具体可以参考。
执行:
- opkg update
- opkg install ip-full ipset iptables-mod-tproxy libev libpthread libpcre libmbedtls
- opkg install coreutils-base64 ca-certificates ca-bundle curl
复制代码 安装一些用到的依赖包。
再执行:
- mkdir /etc/dnsmasq.d
- uci add_list dhcp.@dnsmasq[0].confdir=/etc/dnsmasq.d
- uci commit dhcp
复制代码 创建 dnsmasq配置文件夹。
执行:
- opkg remove dnsmasq && opkg install dnsmasq-full
复制代码 更新 dnsmasq-full。
执行:
- curl -L -o generate_dnsmasq_chinalist.sh https://github.com/cokebar/openwrt-scripts/raw/master/generate_dnsmasq_chinalist.sh
- chmod +x generate_dnsmasq_chinalist.sh
- 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服务器地址。
执行:
- curl -L -o gfwlist2dnsmasq.sh https://github.com/cokebar/gfwlist2dnsmasq/raw/master/gfwlist2dnsmasq.sh
- chmod +x gfwlist2dnsmasq.sh
- 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:
- /etc/init.d/dnsmasq restart
复制代码 最后回到网页配置页面Services/Shadowsocks/AccessControl。在「Zone WAN」中「Bypassed IP List」选择 ChinaDNS CHNRoute:
大功告成!
|