本篇文章记录树莓派3(Paspberry Pi 3)刷写Lean OpenWrt固件,并且用作软路由后所遇到的一些障碍和解决方法,比方说旁路由防火墙自定义规则的设置,局域网接口桥接的设置,旁路由于主路由网关互指的配置,主路由关于DHCP/DNS默认网关的配置,ADGuard用作DNS服务器拦截广告及自定义DNS服务器地址及端口的设置,光猫超级管理员密码的获取等等。本文上述内容的关键步骤进行记录,同时贴出所需的相关软件资源备份,以备日后不时之需,方便查阅。
旁路由固件 首选给出适配树莓派3的(CPU芯片为博通2710)的OpenWrt安装包 ,编译者为SuLingGG ,刷入固件后进入名为:OpenWrt的开放wifi,初始管理地址为:192.168.1.1,账户名:root,密码:password。
重新设置管理后台IP:
1 2 3 uci set network.lan.ipaddr=192.168.123.100 uci commit network /etc/init.d/network restart
设置完成后,LAN接口选择静态地址,IPv4地址即为刚刚设置的管理后台地址,IPv4网关为主路由IP,广播为该网段255广播地址,自定义DNS服务器也为主路由IP。
防火墙规则 设置完成后,倘若出现出现无法上网、访问国内网站缓慢等症状,可在完成上文全部步骤的基础上,在“网络 - 防火墙 - 自定义规则”中新增一行 iptables 规则并重启防火墙再试:
1 2 3 4 iptables -t nat -I POSTROUTING -j MASQUERADE # 若仍未解决,可以尝试删除原有两条规则并重启防火墙再试: iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
下面给出本人正在使用的自定义防火墙iptables规则(注5300端口为ADGuard监听端口):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 # This file is interpreted as shell script. # Put your custom iptables rules here, they will # be executed with each firewall (re-)start. # Internal uci firewall chains are flushed and recreated on reload, so # put custom rules into the root chains e.g. INPUT or FORWARD or into the # special user chains, e.g. input_wan_rule or postrouting_lan_rule. # iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53 # iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5300 iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5300 iptables -t nat -I POSTROUTING -j MASQUERADE
取消桥接 如果以上两个方法未能解决,请尝试在 Lan 口的“物理设置”中取消“桥接接口”的打勾,并在下方的“接口”中选择“eth0”,保存并应用再试。但请注意,此时树莓派的板载无线网卡将无法使用 (有信号但无法上网)。
详细步骤:网络-接口-LAN(br-lan)-修改-物理设置-取消勾选✔桥接接口-接口仅选择以太网适配器 eth0(lan)这一项 不勾选起初✔打勾的无线网络:Master OpenWrt 初始状态可能是 br-lan(lan),设置完成后才会变成eth0。并且在该接口设置 忽略此接口/不在此接口提供DHCP服务。
本篇文章所述设置方法可能对某些型号的华为路由器无效,建议更换其他路由器再试。
AdGuardHome AdGuardHome面板设置端口为:3000,监听端口为:5300。(可根据实际修改)
修改防火墙,53 端口重定向到 AdGuardHome 监听端口5300(与前面配置一致):
1 2 iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 5300 iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 5300
在AdGuardHome设置中设置5300重定向至 作为dnsmasq的上游服务器。关闭Turbo ACC中的DNS加速,DNS解析全部经过AdGuardHome。修改 网络 - DHCP/DNS 转发到 AdGuardHome,注意此处端口5300需与前面 AdGuardHome 配置监听端口一致,DNS转发:127.0.0.1#5300。科学的插件中也需要设置“访问国外域名DNS服务器:127.0.0.1:5300”。
下面给出一些AdGuardHome的一些拦截规则:
1 2 3 4 5 6 7 8 9 10 11 # 自带规则:AdGuard DNS filter - https://adguardteam.github.io/AdGuardSDNSFilter/Filters/filter.txt # 自带规则:MalwareDomainList.com Hosts List - https://www.malwaredomainlist.com/hostslist/hosts.txt # 自带规则:AdAway - https://adaway.org/hosts.txt # anti-AD - https://anti-ad.net/easylist.txt 官宣:anti-AD 是目前中文区命中率最高广告过滤列表,实现了精确广告屏蔽和隐私保护。 # neoHosts Full 127.0.0.1 - https://hosts.nfz.moe/127.0.0.1/full/hosts 官宣:neoHosts 自由、负责、克制 的去广告 Hosts # Easylist 官方规则 - https://easylist.to/easylist/easylist.txt # EasylistChina+EasylistLite+CJX’sAnnoyance - https://raw.githubusercontent.com/o0HalfLife0o/list/master/ad.txt 简介:由 halflife 维护,合并了 EasylistChina、EasylistLite、CJX’sAnnoyance,以及一些补充规则,每日更新。 # EasyPrivacy 隐私保护 - https://easylist-downloads.adblockplus.org/easyprivacy.txt # CJX's Annoyance List - https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjx-annoyance.txt # EasyList China 中文补充规则 - https://easylist-downloads.adblockplus.org/easylistchina.txt # EasyList Lite 中文精简规则 - https://raw.githubusercontent.com/cjx82630/cjxlist/master/cjxlist.txt
最后,感谢沙唐桔 关于AdGuardHome DNS设置相关提供的思路和内容。
SD卡扩展分区 本项目OpenWrt固件刷入SD卡后SD卡内boot分区所占空间为64M,root分区所占空间为960M,所以:SD卡总容量 - (64+960)M ≈ 空闲分区容量。
ext4 固件由于未知原因,ext4 固件暂时无法在 Windows 下使用 Diskgenius、PartitionGuru 等磁盘管理工具扩容,所以我们需要在 Linux 环境下对 SD 卡进行扩容操作。 ①如果你有现成的 Linux 环境,则可以将 SD 卡插入电脑,使用 GParted 工具对 SD 卡的 Root 分区进行扩容; ②如果你有空闲的 U 盘,则可以将 Linux 发行版的 Live CD 写入 U 盘,重启至 U 盘中的 Live 环境使用 GParted 工具对 SD 卡进行扩容; ③如果以上条件都不满足,则可使用虚拟机软件虚拟 Gparted 的 Live CD,在虚拟机中完成 SD 卡的扩容。
下面介绍第三种方法,需要用到VirtualBox ,下载VirtualBox-6.1.18-142142-Win.exe和Oracle_VM_VirtualBox_Extension_Pack-6.1.18.vbox-extpack,所有需要的软件资源均可从Google Drive 中自取,操作过程在此不再赘述,具体可参考SuLingGG 。
DHCP默认网关 在主路由上选择“网络”-“接口”-“LAN”-“修改”-“DHCP服务器”-“高级设置”- [可选/勾选“强制”] -“DHCP选项”中填写如下信息即可。(当然倘若选择了勾选✔忽略此接口提供DHCP,自然看不到DHCP的“高级设置”选项卡)
1 2 3 3,192.168.10.15 6,192.168.10.15 # 注意为英文逗号, ,其中3,192.168.2.4表示DHCP网关指向N1,其中6,192.168.2.4表示DNS指向OP。
其中该选项下方有提示:设置 DHCP 的附加选项,例如设定 "6,192.168.2.1,192.168.2.2" 表示通告不同的 DNS 服务器给客户端。
联通光猫设置 型号为HG261G的联通烽火光猫开启IPv6以及获取超级管理员密码的设置如下:
1 2 3 4 5 # 登录 http://192.168.1.1/logoffaccount.html,将隐藏用户选项改为启用,该选项改过后过一段时间会自动变回禁用; # 登录 http://192.168.1.1/ 用户名:fiberhomehg2x0 密码:hg2x0,进入服务设置->应用服务,勾选 启用telnet 服务,telnet默认的用户名密码均为 admin, # 可使用Putty进行 telnet 连接 192.168.1.1,命令为:telnet 192.168.1.1 # 依次输入该用户名和密码,然后依次输入get telname和get telpwd 来获得特权用户的用户名和密码; # 登录 http://192.168.1.1/cu.html,输入刚才获得的特权用户名和密码,点击管理->网络,Internet 连接,将协议模式由 IPv4 更换为 IPv4&IPv6,然后保存/应用,此时光猫的 IPv6 模式已经开启,只需在下级拨号路由器或其他设备中中设置 IPv6 相关功能即可。