目标是让您更轻松地将喜爱的 Linux 发行版配置为路由器。基于 Rust 和 eBPF 构建。
简体中文 | English | Documentation
Landscape separates traffic steering into two planes:
DNS plane (userspace). A flow is a policy group that devices join by IP or MAC. Each flow gets its own isolated Hickory DNS server with independent cache, upstream (UDP/DoH/DoT/DoQ), and rules. DNS answers populate per-flow eBPF maps in the kernel.
Data plane (kernel). XDP and TC hooks read these maps to steer packets at wire speed. Packets matching a flow are steered according to its policy. Everything else passes through directly — no userspace context switch.
DNS results → eBPF flow maps → TC/XDP in-kernel steering → interface routing
DNS plane decides. Kernel enforces.
Standard Linux, no lock-in. Debian, Arch, openSUSE. Your distro, your rules.
Upgrade without fear. Single directory. Drop in a new binary, config auto-migrates. Downgrade works too.
NAT that fits your LAN. Full-cone NAT for BT/PT where needed, strict NAT everywhere else — domain/IP-level control, no blanket rules.
One failure, one victim. Per-flow DNS and traffic policies. A container goes down? Only the traffic routed through it is affected.
root privileges; non-Linux kernels (FreeBSD, macOS) are not supportedmkdir -p /root/.landscape-router
static.ziplandscape-webserver binary for your architecture/root/.landscape-router/static (this is the default path, but it can be customized)Run as root:
./landscape-webserver
Defaults: config at /root/.landscape-router, HTTPS on port 6443, user/pass root / root.
Landscape can start directly without any pre-created configuration file. If you want to initialize it through landscape_init.toml, see the configuration guide on the documentation site.
You can check more options with ./landscape-webserver --help.
http://landscape.local:6300 automatically redirects to HTTPShttps://landscape.local:6443 opens the Web UIhttps://landscape.local:6443/api/docs opens the REST API docsAfter confirming that the service is running correctly, you can configure it as a systemd service:
[Unit]
Description=Landscape Router
[Service]
ExecStart=/root/landscape-webserver
Restart=always
User=root
LimitMEMLOCK=infinity
[Install]
WantedBy=multi-user.target
Replace ExecStart with the actual path to your binary.
Build guide: BUILD.md | BUILD.zh.md
landscape-ebpf: GNU General Public License v2.0If you have suggestions or run into a problem, please open an issue.
暂无开放 Issues,或尚未同步最近议题。