Landscape is a Web UI-based tool that allows you to easily configure your favorite Linux distribution as a router.
Developed using Rust / eBPF / AF_PACKET.
✅ Implemented and tested
⚠ Feasible but untested
❌ Not implemented
- IP Configuration
- Static IP Configuration
- ✅ Specify IP
- ✅ Configure gateway and set default route
- DHCP Client
- ✅ Specify hostname
- ❌ Custom Options
- PPPoE (PPPD Version)
- ✅ Default route assignment
- ⚠ Multi-NIC dial-up
- ✅ Specify network interface
- PPPoE (eBPF Version)
- ✅ Protocol core implementation
- ❌ Packet size exceeding MTU due to NIC GRO/GSO (Unresolved)
- DHCP Server
- ✅ Provides simple IP allocation and renewal services
- ✅ Customizable gateway, subnet, and access rules for assigned IPs
- Static IP Configuration
- Traffic Tagging Module
- ✅ Forward tagged traffic based on tag settings (Direct/Drop/Block Hole Punching/Redirect to Docker container or network interface)
- ❌ Traffic statistics
- ❌ Connection tracking tagging
- ✅ Internal network IP behavior control based on tagging rules
- ✅ External network IP behavior control based on tagging rules, with support for
geoip.dat
- ❌ Automatic GeoIP file updates
- DNS
- ✅ Assign specific upstream DNS for designated domains
- ✅ DNS hijacking (Returning A records)
- ❌ DNS hijacking returning multiple records (other than A records)
- ✅ Tagging DNS resolution results and processing them using the tagging module
- ✅ GeoSite file support
- ❌ Automatic scheduled GeoSite file updates
- ❌ Cache Docker container image names in DNS resolution
- NAT (eBPF-based) Implementation
- ✅ Basic NAT
- ⚠ Static mapping / Port forwarding (UI incomplete)
- ✅ Hole punching prevention - restricts access to open ports based on tagged IP rules
- Docker
- ✅ Basic Docker container management
- ⚠ Image pulling
- ✅ Redirect traffic into a Docker container running TProxy
- WIFI
- ❌ Create a WIFI hotspot
- ❌ Connect to a WIFI hotspot
- Miscellaneous
- ✅ Login page
- ❌ English version of the frontend
- ❌ Standardized logging
- ❌ Network interface XPS/RPS optimization to distribute NIC load across different CPU cores for better throughput
- Supported Linux Kernel Version:
6.1
and above. - Requires
iptables (for PPPoE MSS clamping)
,docker
.
-
Create the configuration directory:
mkdir -p ~/.landscape-router
-
Create an initial configuration file
landscape_init.toml
, refer to Quick Start Configuration. -
Start the service:
Download the required version from Releases and run the following command to start the service (default port:6300
):./landscape-webserver
Refer to Quick Start.
Refer to Armbian Integration.
Refer to Compilation.
landscape-ebpf
: GNU General Public License v2.0- Other parts: GNU General Public License v3.0
If you have any suggestions or issues, feel free to submit feedback on the issues page.