为树莓派4B刷OpenWRT固件,打造旁路由科学获取网络信息
为了避开敏感词,文中涉及的请按提示替换阅读:
下文中涉及的V2Yay,Y是R
路径和配置文件中用到的V2Yay请手动更改为小写。
树莓派固件下载:
google drive 或者openwrt:
https://drive.google.com/drive/folders/1_P2RoPbguY99qJxmCU4SKUgP8Kg0Xr03
https://openwrt.cc/releases/targets/bcm27xx/bcm2711/
根据对应的型号下载
我树莓派4B:
openwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz 或者 immortalwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz
建议下载factory版本。
使用balenaEtcher将固件烧写进SD卡。
插入SD卡开机。
下面讲解旁路由设置:
树莓派开机之后,用网线将树莓派与PC连接。
树莓派默认网址是192.168.1.1,请手动设置PC的IP和树莓派同一网段。
密码是password。
通过浏览器登录树莓派系统。
每设置一步点击一次保存,先不要点击“保存&应用”。
下面开始设置防火墙
到这里了,点击保存&应用,不要着急关闭页面。
等待的同时在浏览器中新建一个标签页输入192.168.1.10看看能否进入树莓派系统。
如果能进入,则证明已经设置成功,否则请返回前一个标签页,在 ”网络->接口“ 页面点击”保存&应用“。
成功进入树莓派openwrt之后请重新检查一遍设定,有时候保存会失败,所以需要做double check。
稍等个10秒重复过程看看能否进入192.168.1.10。
成功之后,将PC网线插入到家用路由器,登录家用路由器,将网关更改为192.168.1.5。
树莓派关机,使用网线将树莓派连接到家用路由器,开机。
树莓派开机完成之后,在PC端浏览器输入192.168.1.10重新登录到树莓派管理系统。
在”服务->passwall“右侧的页面点击 ”百度连接“,测试树莓派是否已经联网。
将PC电脑的网关和DNS地址设置为树莓派地址192.168.1.10。
此时,PC可以通过树莓派上国内网站了。
我们可以在 ”passwall->节点列表“ 中添加辅助访问外网的节点。
下面讲解如何构建自己的梯子。
梯子需要VPS,请自行购买国外的服务器服务,笔者使用的是搬(删掉)瓦(删掉)工的VPS。
速度可以,性能稳定,这里不做广告了,感兴趣的自行购买。
国内的VPS无法访问外网。
1. 安装v2yay
使用xshell通过ssh登录VPS,VPS记得关闭密码认证,只使用Key认证。
防止恶意试探攻击。
1.1) // 安装执行程序和 .dat 资料文件
# bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2yay/master/install-release.sh)
1.2) 需要卸载程序时,可以使用移除 v2yay命令
# bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2yay/master/install-release.sh) --remove
1.3) v2yay的文件安装列表
installed: /usr/local/bin/v2yay
installed: /usr/local/bin/v2ctl
installed: /usr/local/share/v2yay/geoip.dat
installed: /usr/local/share/v2yay/geosite.dat
installed: /usr/local/etc/v2yay/config.json
installed: /var/log/v2yay/
installed: /var/log/v2yay/access.log
installed: /var/log/v2yay/error.log
installed: /etc/systemd/system/v2yay.service
installed: /etc/systemd/system/v2yay@.service
2. 安装TLS 分流器
bash <(curl -L -s https://raw.githubusercontent.com/liberal-boy/tls-shunt-proxy/master/dist/install.sh)
由于目前单纯的VMESS加密已经不太保险,所以使用TLS分流器封装数据传输,这需要一个能够访问的域名。
目前4.44以后版本v2yay服务已经开始拒绝单纯的VMESS加密数据请求,所以没有域名的伙计需要找到4.34以下的版本来使用。
老版本搭建和配置方法笔者不赘述了,使用老版本需要承担很大的被拦截封禁的风险。
3. 购买域名
笔者购买的是www.name.com的域名,也有免费的域名,需要自行决定。
Name.com域名激活设置:
Domain Details 中
NAMESERVERS点击Use Default Nameservers选择默认值,点击Update Save保存结果
Manage DNS Records 添加DNS记录
第一条HOST留空,ANSWER输入VPS的IP地址,点击ADD添加
第二条HOST输入www,ANSWER输入VPS的IP地址,点击ADD添加
第三条HOST输入*,ANSWER输入VPS的IP地址,点击ADD添加
大功告成,现在域名已经可以指向VPS的IP了。
4. 修改TLS配置文件
配置文件路径:/etc/tls-shunt-proxy/config.yaml
相比TCP,Domain Socket(简称DS)更为高效。
所以这里TLS分流器与服务端v2yay的通信使用DS。
客户端v2yay(手机平板PC)与服务器分流器的通信使用TLS(数据类流似HTTPS)。
TLS over TCP DS
客户端 v2yay --------------------- TLS 分流器 ----------- 服务端 v2yay
配置文件内容如下:
1 # listen: 监听地址 2 listen: 0.0.0.0:443 3 4 # vhosts: 按照按照 tls sni 扩展划分为多个虚拟 host 5 vhosts: 6 7 # name 对应 tls sni 扩展的 server name 8 - name: example.com 9 10 # tlsoffloading: 解开 tls,true 为解开,解开后可以识别 http 流量,适用于 vmess over tls 和 http over tls (https) 分流等 11 tlsoffloading: true 12 13 # managedcert: 管理证书,开启后将自动从 LetsEncrypt 获取证书,根据 LetsEncrypt 的要求,必须监听 443 端口才能签发 14 # 开启时 cert 和 key 设置的证书无效,关闭时将使用 cert 和 key 设置的证书 15 managedcert: true 16 17 18 # alpn: ALPN, 多个 next protocol 之间用 "," 分隔 19 alpn: h2,http/1.1 20 21 # protocols: 指定 tls 协议版本,格式为 min,max , 可用值 tls12(默认最小), tls13(默认最大) 22 # 如果最小值和最大值相同,那么你只需要写一次 23 # tls12 仅支持 FS 且 AEAD 的加密套件 24 protocols: tls12,tls13 25 26 # http: 识别出的 http 流量的处理方式 27 http: 28 29 # fileServer 支持 h2c, 如果使用 fileServer 处理 http, 且未设置 paths, alpn 可以开启 h2 30 handler: fileServer 31 32 # args: 静态网站的文件路径 33 args: /var/www/html 34 35 # default: 其他流量处理方式 36 default: 37 38 # handler: proxyPass 将流量转发至另一个地址 39 handler: proxyPass 40 41 # args: 转发的目标地址 42 # args: 127.0.0.1:40001 43 args: unix:@v2yay.sock
4. 修改VPS服务器 v2yay 配置文件
v2yay的配置文件路径:/usr/local/etc/v2yay/config.json
请使用uuid命令生成自己的id,并进行替换。
1 { 2 "log": { 3 "loglevel": "warning", 4 "access": "/var/log/v2yay/access.log", 5 "error": "/var/log/v2yay/error.log" 6 }, 7 "inbounds": [ 8 { 9 "protocol": "vmess", 10 "listen": "127.0.0.1", 11 "port": 40001, 12 "settings": { 13 "clients": [ 14 { 15 "id": "f2435e5c-9ad9-4367-836a-8341117d0a5f" 16 } 17 ] 18 }, 19 "streamSettings": { 20 "network": "ds", 21 "dsSettings":{ 22 "path":"@v2yay.sock", 23 "abstract":true 24 } 25 } 26 } 27 ], 28 "outbounds": [ 29 { 30 "protocol": "freedom" 31 } 32 ] 33 }
5. 重启服务
systemctl daemon-reload
systemctl restart v2yay
systemctl restart tls-shunt-proxy
6. 查看服务运行状态
systemctl status v2yay
systemctl status tls-shunt-proxy
7. 本地配置
旁路由openwrt的passwall设置:
地址填写之前购买的域名地址。
端口填写443。
协议选择VMESS。
AlterID需要设置为0。
勾选tls,其它选项填写与tls配置文件对应的数值。
点击保存&应用,等待完成之后点击 “节点检测” 测试和VPS的连通性。
连通之后点击 “谷歌连接” 测试数据传输的连通性。
在规则管理中点击手动更新,将梯子策略首先更新一次。
此时无论电脑,手机还是平板,手动将网关和DNS设置树莓派地址192.168.1.10。
都可以无缝科学获取网路信息了。
这个旁路由会自动区分国内和国外的IP,国内走直连,国外走VPS。
如果没有树莓派或者不想改网关和DNS的话,
需要在手机平板和电脑PC安装v2yay客户端并单独配置。
这就是鸡和蛋的问题,没有客户端,就用不了梯子。
下载客户端先要有梯子,所以不太建议客户端安装v2yay程序的方式。
当然如果外出不在家也想用梯子,
那么就需要使用家里的旁路由梯子,下载安装客户端v2yay梯子。
这样外出时,手机平板也可以用自己的梯子科学获取网络信息。
客户端配置如下,记得address替换为服务器配置的域名,id替换为服务器匹配的值:
1 { 2 "inbounds": [ 3 { 4 "port": 1080, 5 "listen": "127.0.0.1", 6 "protocol": "socks" 7 } 8 ], 9 "outbounds": [ 10 { 11 "protocol": "vmess", 12 "settings": { 13 "vnext": [ 14 { 15 "address": "example.com", 16 "port": 443, 17 "users": [ 18 { 19 "id": "f2435e5c-9ad9-4367-836a-8341117d0a5f", 20 "security": "none" 21 } 22 ] 23 } 24 ] 25 }, 26 "streamSettings": { 27 "network": "tcp", 28 "security": "tls" 29 } 30 } 31 ] 32 }