# ThisSeanZhang/landscape

The goal is to make it easier to configure your favorite Linux distribution as a router. Built with Rust and eBPF.

Repository: https://github.com/ThisSeanZhang/landscape
Canonical: https://ross.abutalabs.com/products/thisseanzhang-landscape
Homepage: https://landscape.whileaway.dev
Language: Rust
License: GPL-3.0
License Family: copyleft
Topics: dns-server, ebpf-tc, linux, network-programming, router, tproxy, networking-tools, rust, landscape-router, ebpf, ebpf-rust
Last push: 2026-08-24T13:25:03+00:00

## Health v2 (maintenance only)
Score: 88/100 (v2, computed 2026-09-02T17:46:02.011165+00:00)
- activity 99, release rhythm 98, longevity 44
- inputs: {"age_days": 621, "days_push": 9, "days_rel": 17, "gap_med": 10.0, "n_releases_24m": 43}
- flags: none
- formula: round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)

## Adoption (not part of the score)
Stars 1526, forks 112 (observed 2026-08-28T04:04:58.356796+00:00)

## What it is
Landscape is a Linux router application built in Rust with eBPF that routes traffic by domain rather than just IP. It uses a userspace DNS plane with per-flow isolated DNS servers whose answers populate kernel eBPF maps, while XDP/TC hooks steer packets in-kernel without iptables or a userspace datapath.

## Use cases
- turn a Linux machine into a home router
- route traffic by domain instead of IP lists
- give each device or flow its own DNS server and upstream
- send selected traffic through a Docker container proxy
- configure full-cone NAT for BT/PT while keeping strict NAT elsewhere
- avoid iptables and userspace packet forwarding overhead
- manage router settings through a web UI and REST API

## When to choose
- you want a software router on a standard Linux distro like Debian, Arch, or openSUSE
- you need domain-based traffic steering with per-flow DNS isolation
- you want kernel-speed packet handling via eBPF XDP/TC
- you need fine-grained NAT control per domain or IP
- you want everything scriptable through a REST API

## When to avoid
- you run FreeBSD, macOS, or Alpine Linux
- your kernel is older than 6.9 or lacks BTF/BPF support
- you need an OpenWrt-style turnkey router image
- you are memory-constrained below ~1.5 GiB
- you prefer traditional iptables/nftables-based routing

## Facets
- artifact type: application
- maturity: active
- function: networking, routing, security, self-hosted, web-framework
- domain: networking, self-hosted, infrastructure-as-code, developer-tools
- platform: rust
- tags: ebpf, xdp, tc, tproxy, router, dns, nat, traffic-steering, linux-router, domain-based-routing, dns-server, linux, web-server, docker

## Member repositories
- ThisSeanZhang/landscape (main) score 88

## Provenance
- Observed fields: from GitHub, fetched 2026-08-28T04:04:58.356796+00:00.
- Health v2: computed from the inputs above; adoption is never an input.
- Inferred fields (summary, facets, guidance): AI-extracted, prompt v1, taxonomy v1, on 2026-08-30T04:31:35.900588+00:00, confidence not recorded.
  - readme: https://github.com/ThisSeanZhang/landscape (fetched 2026-08-28T04:04:58.356796+00:00, sha 4f2394c94c72)
  - homepage: https://landscape.whileaway.dev (fetched 2026-08-29T11:34:10.160080+00:00, sha 97e8148d94ab)
  - site_page: https://landscape.whileaway.dev/getting-started/basic-network-setup.html (fetched 2026-08-29T11:34:10.191663+00:00, sha 1d6ac6e05fea)
  - site_page: https://landscape.whileaway.dev/intro/requirements.html (fetched 2026-08-29T11:34:10.172846+00:00, sha e667a571bbfe)
- Data as of 2026-08-30T08:39:29.467469+00:00.
