Landscape is a web-based tool that helps you easily configure your favorite Linux distribution as a router.
Built with Rust / eBPF / AF_PACKET.
✅ Implemented and tested ⚠ Functional but untested ❌ Not implemented
-
IP Configuration
-
Static IP Configuration
- ✅ Assign IP address
- ✅ Set default gateway route
-
DHCP Client
- ✅ Set hostname
- ❌ Custom options
-
PPPoE (PPPD version)
- ✅ Set as default route
- ⚠ Multi-NIC dialing
- ✅ Specify network interface
-
PPPoE (eBPF version)
- ✅ Protocol core implemented
- ❌ GRO/GSO causes packet size to exceed MTU (unsolved)
-
DHCP Server
- ✅ Basic IP lease and renewal
- ✅ Custom IP range/gateway/access configuration
- ✅ MAC-to-IP binding
- ✅ IP allocation display
-
IPv6 Support
- ✅ Request prefix via DHCPv6-PD
- ✅ Advertise prefix using RA to downstream devices
-
-
Traffic Control Module
- ✅ Identify flows using IP + QoS
- ✅ Each flow can have its own DNS and cache
- ✅ Forward marked traffic by policy (direct/drop/reuse port/redirect to Docker or NIC)
- ❌ Mark flows for tracking
- ✅ Control external IP behavior with GeoIP-based rules
- ✅ Choose whether to override DNS behavior for external IP rules
- ❌ Auto-update GeoIP file
-
DNS
- ✅ DNS over HTTPS and TLS to upstream
- ✅ Custom upstream DNS per domain
- ✅ DNS hijacking (A record response)
- ❌ DNS hijack returns multiple records (non-A)
- ✅ Mark IPs from specific DNS responses for further processing
- ✅ GeoSite file support
- ❌ Auto-update GeoSite file
- ❌ Add Docker image names to DNS cache
-
NAT (eBPF-based)
- ✅ Basic NAT
- ⚠ Static mapping / open ports (UI not finished)
- ✅ NAT disables port reuse by default, can be dynamically enabled via flow marking
-
Metrics Module
- ✅ Report connection stats (bytes/packets) every 5 seconds
- ✅ Display current connections (not yet integrated with NAT info)
- ❌ Export metrics via API
-
Docker
- ✅ Manage and run basic Docker containers
- ⚠ Image pulling
- ✅ Redirect traffic to TProxy-enabled Docker container
-
WiFi
- ✅ Switch wireless interface state via
iw
- ✅ Create WiFi hotspot via
hostapd
- ❌ Connect to WiFi hotspot
- ✅ Switch wireless interface state via
-
Storage
- ❌ Use database to replace current config storage
- ❌ Specify separate database for metrics
-
Miscellaneous
- ✅ Login page
- ❌ English version of front-end
- ❌ Optimize NIC XPS/RSP to distribute load across CPU cores
- Supported Linux Kernel:
6.1
or later - Install
iptables
(for MSS clamping in PPPD version),docker
-
Create config directory:
mkdir -p ~/.landscape-router
-
Download
static.zip
from Releases, and extract it to~/.landscape-router/static
. -
If you're using a desktop environment with a browser, you can skip this. Otherwise, create an initial config file
landscape_init.toml
based on Quick Start Guide. -
Download the appropriate binary from Releases, then run with root:
./landscape-webserver
Default port:
6300
, username:root
, password:root
. Use./landscape-webserver --help
for more options.
Refer to Quick Start
See Armbian Guide
Refer to the Build Guide or Cross Compilation
landscape-ebpf
: GNU General Public License v2.0- Other components: GNU General Public License v3.0
If you have any suggestions or issues, feel free to submit them via issues.