树莓派 + OpenWrt 旁路由教程 2024-04-26 记录 暂无评论 853 次阅读 ### 树莓派 + OpenWrt 旁路由教程 利用家中闲置的树莓派 4B 设置旁路由,未配置路由网关分发,一方面是为避免影响家人的网络使用,另一方面是因为家中主路由是桥接模式,不支持网关设置。 旨在便利自己随时科学上网,无需在手机上安装各种科学软件。 #### 准备工具 - 树莓派 4B (Raspberry Pi 4 Model B Rev 1.1) - 一个读卡器 - 一张 TF 卡(16G) - 一根网线 #### 系统准备 下载并安装 OpenWrt 系统,[下载地址](https://openwrt.cc/releases/targets/bcm27xx/bcm2711/),我下载的是 [immortalwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz](https://openwrt.cc/releases/targets/bcm27xx/bcm2711/immortalwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz)。 然后准备烧录工具:Win32DiskImager。 使用 FAT32 格式化 TF 卡,然后烧录系统镜像。 #### 配置树莓派 由于我的树莓派 4B 自带 WiFi 热点,所以无需直接连接电脑。首先,树莓派上电后会创建一个名为 OpenWrt 的 WiFi 网络,先不要连接树莓派的网口,配置完成后再连接到主路由器。 连接到 OpenWrt 的 WiFi 后,打开浏览器输入 192.168.1.1 进入 OpenWrt 的 Web 管理界面。点击右侧的“网络”->“接口”,会看到两个接口 VPN0 和 LAN,忽略 VPN0,只需设置 LAN 接口。点击“修改”,修改 LAN 口的 IPv4 地址和 IPv4 网关,注意树莓派的 IPv4 地址是为主路由器的 LAN 口准备的,在同一局域网中不能有 IP 地址冲突。 ![image-20240426212922787](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/image-20240426212922787.png) 最后,忽略底部的基本设置,不需提供 DHCP 服务。保存并应用更改。页面可能会出现卡顿,若出现卡顿可能是因为树莓派的 Web 管理页面 IP 地址发生了变化,只需将树莓派连接到主路由器,然后重启树莓派,等待启动。 最后,连接电脑到主路由器,使用浏览器打开刚刚配置的树莓派地址,点击“网络”->“诊断”,测试网络是否正常。若能正常上网,表示树莓派配置成功,接下来只需设置 Web 管理界面的管理员密码和关闭一些 WiFi 配置。 #### 使用旁路由 要使用旁路由进行流量分发很简单,只需关闭电脑的 DHCP IP 分发,其他内容保持不变,只需将网关修改为树莓派刚刚配置的 IPv4 地址。可使用 OpenWrt 自带的 PassWall 或 OpenClash 来实现科学上网。 --- ### 2024年4月27日 #### dns 分流配置 OpenWrt 默认使用的是 Dnsmasq,如果需要自定义区分国内外 dns ,需要使用 SmartDNS。如果不能正确的配置 DNS 可能会出现一些国外服务器不能访问的问题,提示已拒绝连接。在配置 DNS 的过程中,遇到了许多 OpenWrt 的 Bug,这里记录一下。 首先需要确定系统->启动项中,Dnsmasq 和 SmartDNS 是启动的,然后对 SmartDNS进行配置,需要配置个内容,一个是国内 DNS 和国外 DNS。SmartDNS的第一个 DNS 配置如下: ![image-20240427120917813](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/image-20240427120917813.png) ![image-20240427120927876](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/image-20240427120927876.png) 第二个 DNS 配置如下: ![image-20240427121035866](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/image-20240427121035866.png) 然后是配置上游的 DNS 服务器,这里可以到 [DNS查询](https://naiyous.com/2318.html)这个网站进行查询需要的国内玩 DNS服务器。 ![image-20240427121641611](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/image-20240427121641611.png) 点击添加后,需要点击修改按钮进行分组,这个分组是用来区分国内外 DNS 服务解析。我这里是分了 home 和 office,home 是用来解析国内,office 用来解析国外。在第二个 DNS 服务器中配置 服务器组 为 office。 最后是在 PassWall 中配置 DNS。过滤模式是 TCP,DNS 的图标才会显示运行中。 ![image-20240427121903558](https://mufeng-blog.oss-cn-beijing.aliyuncs.com/typecho/image-20240427121903558.png) ---- ### 2024年7月1日 因为一个小问题引发的一场通宵达旦。 问题是在 nezha 看板中,看到了家里树莓派 OpenWrt 系统走了代理,agent 地址填的是 badguy.top 的域名。那我推断 PassWall 的代理规则有问题,大量国内或者是不应该走代理的域名都走了代理,这样会导致请求访问特别慢。 折腾了特别就,但还是没有解决,尝试过规则列表、DNS 分流、节点分流......还是没有解决,最后还是重新再走一遍安装的过程。再重新走一遍,会发现之前很多不懂的技术点慢慢的清晰起来。 #### 安装包 [immortalwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz](https://openwrt.cc/releases/targets/bcm27xx/bcm2711/immortalwrt-bcm27xx-bcm2711-rpi-4-ext4-factory.img.gz)。 我使用的系统 immortalwrt 是已经被整合过的 openwrt 系统。immortalwrt 进项中的 rpi-4 表示树莓派 4。推荐使用 ext4 文件系统格式,方便后边的扩容(烧入系统的空间是默认的,不足1G)。如果觉得自己能力还行,可以直接上原固件包,[下载地址](https://firmware-selector.openwrt.org/)。 #### 扩容 在软件安装的时候发现空间不足,我使用是 16 G 的 TF 卡,但是实际只使用了 1G 左右。有个 Youtube 的老哥说的很明白扩容的操作,我这里就说了,[地址在这](https://www.youtube.com/watch?v=g6fEcavnDCo)。 #### 日志阅读 ```shell 2024-07-01 02:07:44: + 过滤服务:ChinaDNS-NG(:15354):国内DNS:192.168.2.3,可信DNS:208.67.222.222 2024-07-01 02:07:44: - 节点列表中的域名(vpsiplist):192.168.2.3 2024-07-01 02:07:44: - 域名白名单(whitelist):192.168.2.3 2024-07-01 02:07:44: - 节点订阅域名(blacklist):192.168.2.3 2024-07-01 02:07:44: - 代理域名表(blacklist):208.67.222.222 2024-07-01 02:07:44: - 防火墙域名表(gfwlist):默认 2024-07-01 02:07:46: - 中国域名表(chnroute):默认 2024-07-01 02:07:47: - 以上所列以外及默认:127.0.0.1#15354 ``` 在按照原有的配置启动 passwall 后,部分日志打印,从日志中可以看出国内的 DNS 走的是 192.168.2.3,国外的服务器(走代理) DNS 是 208.67.222.222,除了以上的走 ChinaDNS-NG 的 15354。也就是三个 DNS。 ```shell 2024-07-01 02:07:47: 加入负载均衡的节点到ipset[vpsiplist]直连完成 2024-07-01 02:07:47: 加入所有节点到ipset[vpsiplist]直连完成 2024-07-01 02:07:48: 加载路由器自身 TCP 代理... 2024-07-01 02:07:48: - [0],屏蔽代理UDP 端口:80,443 2024-07-01 02:07:48: 加载路由器自身 UDP 代理... 2024-07-01 02:07:48: - [0]将上游 DNS 服务器 208.67.222.222:53 加入到路由器自身代理的 UDP 转发链 2024-07-01 02:07:48: TCP默认代理:使用TCP节点[8443-RN] [中国列表以外](REDIRECT:1041)代理所有端口 2024-07-01 02:07:48: UDP默认代理:使用UDP节点[8443-RN] [中国列表以外](TPROXY:1041)代理所有端口 ``` 这里提示 UDP 屏蔽了 80 和 443,HTTP/3。可能会出现代理问题,需要到高级设置,修改 UDP 转发屏蔽端口 为不使用。UDP 转发端口改为所有。 如果出现配置了网关后,旁路由无法生效,没法访问网站,可能是防火墙的问题,网络->防火墙,关闭`启用 SYN-flood 防御`,转发改为`接受`,lan 口勾选 ip动态伪装。 #### 分流 PassWall 代理模式默认使用的是中国列表除外,但我又不知道中国列表在哪里设置,所以改为 GFW列表进行代理。这样就解决了最开始提的莫名的域名被代理的问题。 打赏: 微信, 支付宝 标签: 树莓派, OpenWrt 本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。