<?xml version="1.0"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/ DTD/wml_1.1.xml">

<wml>
<head>
<meta http-equiv="cache-control" content="max-age=180,private" />
</head>
<card title="Landscape - 以 eBPF 为基础的 Linux 路由平台">
<p>
作者:<a href="index.php?action=showuser&amp;userid=1&amp;hash=">admin</a><br />时间:2026-05-20 08:39<br />分类:<a href="index.php?action=list&amp;cid=3&amp;hash=">电脑技术</a><br />内容:
Landscape - 以 eBPF 为基础的 Linux 路由平台




Landscape 的目标是让你更轻松的将自己喜欢的 Linux 发行版配置成路由器


Landscape 是一个以 eBPF 为基础的 Linux 路由平台，提供网络服务管理、策略控制 和 API


基于 Rust / eBPF / AF_PACKET 开发。


Github：https://github.com/ThisSeanZhang/landscape


详细文档: https://landscape.whileaway.dev/


本地开发文档: BUILD.md | BUILD.zh.md


核心特性


eBPF 分流，直连流量性能不受影响，使用 (SIP-CIDR、MAC), 分流对象: (DIP、域名、Geo 匹配规则)


每个流 Flow 独立 DNS 配置以及缓存（避免 DNS 缓存冲突和数据泄露）


流量导入 Docker 容器，可在容器中运行支持 TProxy 的程序进行扩展


地理关系库管理， 支持 DAT/TXT 格式


默认 更严格的 NAT4, 但可让指定 IP/域名 使用 NAT1, 方便进行组网等操作, 详情见文档: NAT4? 不, 比 NAT4 更严格


提供 API, 可通过 API 操作所有在 UI 上可操作的内容


为什么编写 Landscape


最直接的原因，是希望继续使用自己熟悉的 Linux 发行版来做路由，而不是被限定在某一种系统上。除了 Debian 之外，Landscape 已经有 Arch、openSUSE 等发行版的实际使用反馈。


是可以通过组合 Linux 上现成的各种程序来搭建一套路由方案，而且确实能稳定运行；但这类方案通常配置分散、维护成本高，还要额外处理配置文件的存储与迁移。Landscape 将这些配置集中到一个目录中管理，新版本可直接替换运行，启动后会自动迁移配置；需要回退时，也支持降级。


此外，内网里常常会有 BT/PT 之类需要 NAT1 的程序，但并不希望其他 PCDN 程序偷跑流量。为此，Landscape 提供了更细粒度的 NAT 控制，可以按域名或 IP 决定不同流量采用怎样的 NAT 行为。


内网中的不同设备往往需要不同的分流策略，同时也希望在容器发生故障时，直连流量仍然能够继续工作，不会被一并拖垮。


注意事项


Linux 内核 6.9 或更高版本, 该项目高度依赖 Linux 内核提供的能力, 所以 FreeBSD / macOS 之类的类 Unix 内核无法使用


内核需启用 BTF/BPF 功能


需要 root 权限启动服务


如果要使用容器导流或容器管理能力，需要额外安装 Docker


发布包中的后端二进制和前端静态文件是分开提供的, 需要分别单独下载


默认情况下，如果没有额外配置静态 NAT 或暴露路径，管理界面无法从 WAN 侧直接访问


1. 创建配置目录


XML/HTML代码


    mkdir -p /root/.landscape-router





2. 下载发布资源


从 Releases 下载 static.zip ,下载对应架构的 landscape-webserver 二进制文件,解压到 /root/.landscape-router/static (可额外指定, 此为默认路径)


3. 启动 Landscape


使用 root 运行：


XML/HTML代码


    ./landscape-webserver





默认运行参数：


XML/HTML代码


    配置目录：/root/.landscape-router

    HTTP 跳转端口：6300

    HTTPS 端口：6443

    默认用户名：root

    默认密码：root





Landscape 可以在没有预置配置文件的情况下直接启动。如果你想通过 landscape_init.toml 进行初始化，请查看文档站中的配置说明。


更多参数可通过 ./landscape-webserver --help 查看。


4. 打开管理界面


http://landscape.local:6300 会自动跳转到 HTTPS


https://landscape.local:6443 打开 Web UI


https://landscape.local:6443/api/docs 打开 REST API 文档


开机启动


确认服务运行正常后，可以把它配置成 systemd 服务：


XML/HTML代码


    [Unit]

    Description=Landscape Router

     

    [Service]

    ExecStart=/root/landscape-webserver

    Restart=always

    User=root

    LimitMEMLOCK=infinity

     

    [Install]

    WantedBy=multi-user.target





请把 ExecStart 改成你实际的二进制路径。




Minimal x86 image builder for Landscape Router with CI-validated artifacts. / 面向 Landscape Router 的最小化 x86 镜像构建器，提供 CI 验证产物。


Github：https://github.com/Cloud370/landscape-mini




Landscape Router 的最小化 x86 镜像构建器，支持 Debian Trixie / Alpine Linux，可生成 img / vmdk / ova，支持 BIOS + UEFI。


最新镜像：https://github.com/Cloud370/landscape-mini/releases/latest


上游项目：Landscape Router




从这里开始 




XML/HTML代码


    你的目标                           直接去

    直接下载现成镜像                    Release 页面

    自定义网络 / 密码 / 版本 / 输出格式  Custom Build 使用说明

    在 PVE 中导入 / 安装                PVE 安装引导

    本地构建 / 测试 / 调试              中文主文档

    English docs                      docs/en/README.md









推荐路径


我只想装起来


下载 Release 镜像


如果在 PVE 中使用，继续看 PVE 安装引导


我想改网络、密码或版本


看 Custom Build 使用说明


构建完成后，如果要在 PVE 中导入，继续看 PVE 安装引导


我想改这个仓库


先看 中文主文档


再看 贡献流程


项目概览


基础系统：debian / alpine


镜像身份：base_system + include_docker + output_formats


输出格式：img、vmdk、ova


默认上游版本：build.env 中的 LANDSCAPE_VERSION


默认登录


场景           	用户  密码


SSH / 系统登录	root	landscape


SSH / 系统登录	ld	landscape


Web UI	        root	root


通过 Custom Build 可以覆盖 Linux / Web 管理凭据。更多本地构建、测试、CI / Release、构建参数说明，见 docs/zh/README.md。




imgflash-将任意 .img 镜像打包为可引导 ISO，启动后一键写入磁盘


Github：https://github.com/GuangYu-yu/imgflash


将任意 .img 镜像文件打包为支持 BIOS + UEFI混合启动的 ISO，使用 dd 写入目标磁盘。




架构


纯 initramfs-only，无 rootfs、无 overlayfs、无 init 切换：


amd64：UEFI + BIOS 双启动


UEFI 链（Secure Boot）：shim（Microsoft 签名）&rarr; GRUB（Debian 签名）&rarr; vmlinuz（Debian 签名）


UEFI 链（非 Secure Boot）：GRUB &rarr; vmlinuz


BIOS 链：syslinux &rarr; vmlinuz


arm64：UEFI 单启动


UEFI 链：同 amd64，按 Secure Boot 配置决定


运行时：


TUI 模式：disktui-lite（Rust）同时充当 init 和安装器


Shell 模式：init.sh &rarr; installer.sh（Bash）


安装器模式


XML/HTML代码


    TUI    模式（默认）                       Shell 模式

    实现   disktui-lite（Rust + Ratatui）    installer.sh（Bash）

    init   内建 init 逻辑（替代 init.sh）     init.sh

    界面   终端 TUI，键盘导航                 纯文本菜单，数字选择

    确认   方向键选择 Yes/No                  输入大写 YES

    进度条 实时进度条 + 速度 + ETA            文字进度 + 速度

    配置   USE_TUI=1                         USE_TUI=0





构建流程


XML/HTML代码


    阶段    说明

    Phase 1 mmdebstrap 创建最小 Debian 环境（含引导组件）

    Phase 2 提取内核 / shim（可选） / GRUB / BusyBox

    Phase 3 组装 initramfs（安装器 + 内核模块 + BusyBox）

    Phase 4 将镜像打包为 squashfs 容器（zstd 压缩）

    Phase 5 组装 ISO 文件系统结构（UEFI 引导 + 可选 BIOS 引导）

    Phase 6 xorriso 生成最终 ISO





使用方式


Docker 构建（推荐）


XML/HTML代码


    docker build -t imgflash .

     

    # 从本地镜像构建

    docker run --rm --privileged \

      -v &quot;$(pwd)/output:/build/output&quot; \

      imgflash -i /path/to/image.img

     

    # 从 URL 下载镜像并构建

    docker run --rm --privileged \

      -v &quot;$(pwd)/output:/build/output&quot; \

      imgflash -u https://example.com/image.img.gz

     

    # 使用自定义配置构建

    docker run --rm --privileged \

      -v &quot;$(pwd)/output:/build/output&quot; \

      -v &quot;$(pwd)/my.env:/build/build.env&quot; \

      imgflash -i /path/to/image.img





命令行参数


XML/HTML代码


    用法: build.sh [选项]

     

    选项:

      -i, --image   指定本地 .img 文件路径

      -u, --url     从 URL 下载镜像文件（支持 raw / gz / xz / bz2 / zip / 7z）

      -n, --name    输出 ISO 名称（默认从镜像文件名推导）

      -h, --help    显示帮助





构建配置


所有构建参数通过 build.env 配置，修改后重新构建即可生效。




XML/HTML代码


    变量            说明                     默认值

    ARCH            目标架构（amd64 / arm64） amd64

    DEBIAN_MIRROR   Debian 镜像源            https://ftp.debian.org/debian

    DEBIAN_SUITE    Debian 套件版本          trixie

    VOLUME_LABEL    ISO 卷标                 IMGFLASH

    MOD_*           各组内核模块定义          见 build.env

    INCLUDE_NVME    NVMe 模块开关            1

    INCLUDE_VIRT    虚拟化模块开关            1

    ENABLE_SECURE_BOOT  Secure Boot 支持     0

    USE_TUI 安装器模式（1=TUI / 0=Shell）     1

    BOOT_TIMEOUT    启动菜单超时（秒）        0

    KERNEL_PARAMS   内核启动参数             quiet

    SCAN_TIMEOUT    启动时扫描介质的超时秒数   10

    ZSTD_LEVEL      zstd 压缩级别            19







GitHub Actions CI


通过 workflow_dispatch 手动触发构建：


构建 ISO


进入仓库 Actions 页面


选择 &quot;构建 ImgFlash 安装器 ISO&quot; 工作流


填入参数：


下载地址：磁盘镜像 URL


目标架构：amd64 / arm64


ISO 名称：可选，默认从 URL 推导


Secure Boot：是否启用


TUI：是否使用 TUI 安装器


释放空间：CI 磁盘空间不足时启用


不使用缓存：强制重新构建


构建完成后从 Artifacts 下载 ISO


发布 ISO


&quot;发布 ISO&quot; 工作流额外支持：


自动压缩（gz / xz / bz2 / zip / 7z）


创建 GitHub Release 并上传


安装器运行时


TUI 模式




XML/HTML代码


    按键     功能

    &uarr; / k   上移

    &darr; / j   下移

    Enter   选择磁盘

    &larr; / &rarr; / Tab 切换确认按钮

    r       刷新磁盘列表

    s       进入 Shell

    ?       帮助

    q       退出

    Esc     中止写入







Shell 模式


自动枚举可写磁盘（显示大小和型号）


用户选择目标磁盘


二次确认（需输入大写 YES）


dd 写入并显示实时进度


写入完成后自动重启


选择 0 可进入 Shell 进行手动操作。




总结


Landscape可以让linux轻松变成Linux路由器，landscape-mini是定制的最小化的debian系统，支持各种平台的精简系统镜像，imgflash是将上面精简的系统做成一键写入硬盘的ISO镜像的程序。
</p><p>
<a href="index.php?action=login&amp;hash=">立即登陆发表评论</a><br />
</p>
<p><a href="index.php?action=list&amp;hash=">返回日志列表</a><br /><a href="index.php?action=index&amp;hash=">返回主页</a></p>
</card>
</wml>
