Brook OpenWRT: 完美支持 IPv4/IPv6/TCP/UDP
Updated at: 2025-02-19

准备 OpenWrt 设备
自行组装 OpenWrt,可以使用旧电脑,一般需要 2 个或多个网口,最好带无线网卡。
向 OpenWRT 硬盘写入系统
在电脑上根据自己设备情况下载
23.05.2版本的 OpenWRT,比如我用的 macOS不同 OpenWRT 版本可能变化很大
curl -o openwrt.img.gz https://downloads.openwrt.org/releases/23.05.2/targets/x86/64/openwrt-23.05.2-x86-64-generic-ext4-combined-efi.img.gz先制作一个 Ubuntu 启动 U 盘,插入 OpenWRT 设备,从 U 盘启动(比如 F11 或 Delete 或 F1-F12)
把电脑和路由用网线连接起来,并且 IP 改成相同的网段,然后把 openwrt.img.gz 从电脑复制到路由里
scp xxx@xxx:/path/to/openwrt.img.gz ./查看一下路由的硬盘
lsblk用 root 写入硬盘
gunzip -c openwrt.img.gz | dd of=/dev/sda bs=4M关机,拔掉连接电脑的网线,拔掉 U 盘,开机
修改路由地址
uci set network.lan.ipaddr=192.168.2.1
uci commit
如果有,顺便移除 Serial console
vim /boot/grub/grub.cfg
移除这个,不然开机会慢
console=ttyS0,115200n8
重启或断电重启
用网线连接电脑
把电脑的 IP 改成路由同网段,然后访问 http://192.168.2.1 如果路由有多个网口,挨个尝试,直到某个能访问。
移除 ULA
- Network - Interfaces - Global network options - IPv6 ULA-Prefix - Save & Apply
配置 WAN
- 将调制解调器与路由的另外一个口连接,如果不知道是哪个口,挨个试,在路由管理页面看看 wan 有没有数据流动。
- Network - Interfaces - wan - Edit - General Settings - Protocol: PPPoE - Switch protocol - username/password - Save - Save & Apply
- 如果此时自动创建出了一个 wan_6,就把之前的 wan6 删掉。Save & Apply
如果这里没有获取到 IPv6 PD。如果你的调制解调器也有路由的功能,那么需要其支持下发 PD,否则就让 OpenWRT 拨号来获取 PD。否则请联系运营商,对于所有 Relay,NAT6 等非 Native 方案说不。
配置 LAN
- Network - Interfaces - lan - Edit - Advanced Settings - IPv6 assignment length: 64
- Network - Interfaces - lan - Edit - Advanced Settings - DHCP Server - IPv6 RA Settings - RA Flags: None - Save - Save & Apply
在电脑上测试下网络
在电脑安装 brook CLI
此时把电脑重新插拔一下网线,自动获取 IP,应该可以获取到 GUA,DNS 应该也是 GUA。如果此时仍获取到一个 ULA,应该会在下次路由重启后消失
brook dnsclient -d txthinking.com -t A -s 192.168.2.1:53
brook dnsclient -d txthinking.com -t AAAA -s 192.168.2.1:53
brook dnsclient -d txthinking.com -t A -s [xxx]:53
brook dnsclient -d txthinking.com -t AAAA -s [xxx]:53
xxx 是你电脑获取到的 IPv6 GUA DNS
brook echoclient -s 137.184.237.95:7777
brook echoclient -s [2604:a880:4:1d0::4cf:b000]:7777
扩容
opkg update
opkg install parted losetup resize2fs
wget -U "" -O expand-root.sh "https://openwrt.org/_export/code/docs/guide-user/advanced/expand_root?codeblock=0"
. ./expand-root.sh
重启
在 OpenWrt 里测试下网络
下载 brook CLI 重命名为
brook并复制到 OpenWrt
brook dnsclient -d txthinking.com -t A -s 127.0.0.1:53
brook dnsclient -d txthinking.com -t AAAA -s 127.0.0.1:53
brook dnsclient -d txthinking.com -t A -s [::1]:53
brook dnsclient -d txthinking.com -t AAAA -s [::1]:53
brook echoclient -s 137.184.237.95:7777
brook echoclient -s [2604:a880:4:1d0::4cf:b000]:7777
也可以测试一下你的 Brook Server
brook testbrook --link 'brook://...'
安装依赖
opkg update
opkg install ca-bundle kmod-nf-socket kmod-nft-socket kmod-nf-tproxy kmod-nft-tproxy procps-ng-ps
运行 brook.openwrt
下载 brook.openwrt CLI 重命名为
brook.openwrt并复制到 OpenWrt
brook.openwrt --link 'brook://...'
在电脑上测试下网络
看看你的电脑上分配的两个 DNS,一个 IPv4, 一个 IPv6
brook dnsclient -d txthinking.com -t A -s 192.168.2.1:53
brook dnsclient -d txthinking.com -t AAAA -s 192.168.2.1:53
brook dnsclient -d txthinking.com -t A -s [xxx]:53
brook dnsclient -d txthinking.com -t AAAA -s [xxx]:53
xxx 是你电脑获取到的 IPv6 GUA DNS
测试 IPv4 和 IPv6,TCP 和 UDP,当然你的 Brook Server 应该支持双栈
brook echoclient -s 137.184.237.95:7777
brook echoclient -s [2604:a880:4:1d0::4cf:b000]:7777