{"repo":"ThisSeanZhang/landscape","free":true,"listed":false,"github":"https://github.com/ThisSeanZhang/landscape","clone":"git clone https://github.com/ThisSeanZhang/landscape.git","description":"The goal is to make it easier to configure your favorite Linux distribution as a router. Built with Rust and eBPF.","language":"Rust","stars":1491,"topics":["dns-server","ebpf-tc","linux","network-programming","router","tproxy","networking-tools","rust","landscape-router","ebpf"],"license":"GPL-3.0","category":"networking-infra","readme_excerpt":"Landscape routes traffic by domain—not just IP. Each flow gets its own DNS server. DNS answers populate kernel eBPF maps. Packets are steered at XDP/TC. No userspace datapath. No iptables. Built with Rust / eBPF. 简体中文 English Documentation Screenshot Architecture 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. Core Features DNS-driven traffic steering via eBPF — DNS answers populate per-flow kernel maps Fine-grained NAT — a stricter-than-symmetric NAT policy by default, with per-domain/IP full-cone NAT exceptions (details) Per-flow DNS isolation — independent cache and upstream per flow, no cross-flow leaks Redirect packets matching a flow into Docker containers — extend with any TProxy-compatible program Geo database management — DAT and TXT format support Full REST API — everything in the UI is scriptable Why Landscape Standard Linux, no lock-in. Debian, Arch, openSUSE. Your distro, your rules. Upgr","default_branch":null,"files":null,"tree":[],"storefront":"/r/ThisSeanZhang","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/ThisSeanZhang/landscape/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}