Brook OpenWRT: 完美支持 IPv4/IPv6/TCP/UDP

Updated at: 2024-02-07

img

向 OpenWRT 硬盘写入系统

  1. 在电脑上根据自己设备情况下载 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
    
  2. 先制作一个 Ubuntu 启动 U 盘,插入 OpenWRT 设备,从 U 盘启动(比如 F11 或 Delete 或 F1-F12)

  3. 把电脑和路由用网线连接起来,并且 IP 改成相同的网段,然后把 openwrt.img.gz 从电脑复制到路由里

    scp xxx@xxx:/path/to/openwrt.img.gz ./
    
  4. 查看一下路由的硬盘

    lsblk
    
  5. 用 root 写入硬盘

    gunzip -c openwrt.img.gz | dd of=/dev/sda bs=4M
    
  6. 关机,拔掉连接电脑的网线,拔掉 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

  1. Network - Interfaces - Global network options - IPv6 ULA-Prefix - Save & Apply

配置 WAN

  1. 将调制解调器与路由的另外一个口连接,如果不知道是哪个口,挨个试,在路由管理页面看看 wan 有没有数据流动。
  2. Network - Interfaces - wan - Edit - General Settings - Protocol: PPPoE - Switch protocol - username/password - Save - Save & Apply
  3. 如果此时自动创建出了一个 wan_6,就把之前的 wan6 删掉。Save & Apply

如果这里没有获取到 IPv6 PD。如果你的调制解调器也有路由的功能,那么需要其支持下发 PD,否则就让 OpenWRT 拨号来获取 PD。否则请联系运营商,对于所有 Relay,NAT6 等非 Native 方案说不。

配置 LAN

  1. Network - Interfaces - lan - Edit - Advanced Settings - IPv6 assignment length: 64
  2. Network - Interfaces - lan - Edit - Advanced Settings - DHCP Server - IPv6 RA Settings - RA Flags: None - Save - Save & Apply

在电脑上测试下网络

此时把电脑重新插拔一下网线,自动获取 IP,应该可以获取到 GUA,DNS 应该也是 GUA。如果此时仍获取到一个 ULA,应该会在下次路由重启后消失

brook dnsclient -d http3.ooo -t A -s 192.168.2.1:53
brook dnsclient -d http3.ooo -t AAAA -s 192.168.2.1:53
brook dnsclient -d http3.ooo -t A -s [xxx]:53
brook dnsclient -d http3.ooo -t AAAA -s [xxx]:53
brook echoclient -s 137.184.237.95:7777
brook echoclient -s [2604:a880:4:1d0::4cf:b000]:7777

修改源

sed -i 's/https\:\/\/downloads.openwrt.org\//https\:\/\/mirrors.cloud.tencent.com\/openwrt\//g' /etc/opkg/distfeeds.conf

扩容

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 dnsclient -d http3.ooo -t A -s 127.0.0.1:53
brook dnsclient -d http3.ooo -t AAAA -s 127.0.0.1:53
brook dnsclient -d http3.ooo -t A -s [::1]:53
brook dnsclient -d http3.ooo -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://...'

安装 Brook.ipk

Brook.ipk 会占用 :9999, 127.0.0.1:8888, [::1]:8888, 127.0.0.1:5353 端口

  1. System - Software - Update lists...
  2. System - Software - Upload Package... - Brook.ipk

然后访问 http://192.168.2.1:9999 控制台

在电脑上测试下网络

看看你的电脑上分配的两个 DNS,一个 IPv4, 一个 IPv6

brook dnsclient -d http3.ooo -t A -s 192.168.2.1:53
brook dnsclient -d http3.ooo -t AAAA -s 192.168.2.1:53
brook dnsclient -d http3.ooo -t A -s [xxx]:53
brook dnsclient -d http3.ooo -t AAAA -s [xxx]:53

测试 IPv4 和 IPv6,TCP 和 UDP,当然你的 Brook Server 应该支持双栈

brook echoclient -s 137.184.237.95:7777
brook echoclient -s [2604:a880:4:1d0::4cf:b000]:7777

讨论