type
status
slug
summary
tags
category
icon
password
new update day
Property
Nov 9, 2023 04:03 AM
created days
Last edited time
Nov 9, 2023 04:03 AM

0 查看要求

因为大鹅是基于 Linux ebpf 子系统,所以需要内核在 5.8 版本以上,并且支持 btf ,而默认的 Raspberry Pi OS 的内核虽然版本达到了要求,但是没有编译对应的 btf 内核特性,所以需要进行手动编译,并进行内核替换。

1 配置交叉编译环境

因为涉及到树莓派的内核编译,而树莓派的性能羸弱,如果直接在树莓派上进行内核编译,不知道猴年马月能够完成编译,所以准备使用交叉编译的方法进行内核编译。

1.1 安装 crosstool-ng

1.2 查看 crosstool-ng 预制配置文件

1.3 使用 crosstool-ng 配置交叉编译工具

1.4 下载 raspberrypi linux 源码

1.5 开始编译内核

1.6 复制内核与模块到树莓派

1.7 在树莓派上执行内核替换

首先切换目录:lib/modules/6.1.61-v8+/source/arch/arm64/boot/
执行以下命令:

1.8 安装内核模块

1.9 修改配置文件(可选)

树莓派默认是用32位内核启动,需要修改 boot 分区下的 config.txt 文件

1.10 重启

执行 reboot 启动后执行
可查看内核版本,是否成功更换内核。
 

2 安装大鹅

手动下载 dae 与 daed 进行配置安装,并编写 systemd 服务文件,其他省略(因为可以正常运行,并且官方文档写的挺仔细的)。

3 遇到的问题

3.1 非对称路由无法使用

💡
这里的旁路由定义为:1,被设为网关。2,对 TCP/UDP 进行 SNAT。3,LAN 接口和 WAN 接口属于同一个网段。
具体现象:关闭 dae 开始内核转发参数设备可以正常上网。
开启 dae 设备无法上网,可以 ping 通网关(192.168.1.150),以及主路由(192.168.1.1),但是无法上网,无法ping通公网ip(233.5.5.5)
解决方案:
  1. 安装 systemd-resolved 并启用 systemd-resolved
  1. 关闭 taiscale 的 dns 接受
后续测试正常。
树莓派寄存器物理基地址查询CS144-2023-Spring router.cc 功能部分实现讲解