Landscape - Linux Router Configuration Tool
Landscape Router is a tool developed using eBPF / Rust / Vue that helps you configure Linux as a router.
Overview

Core Features
- Traffic Shaping: Entry: (SIP-CIDR, MAC), Traffic target: (DIP, Domain, Geo matching rules)
- eBPF Routing
- Independent DNS configuration and caching for each Flow (avoid DNS pollution and leaks)
- Traffic routing to Docker containers
- Geo database management
Main Features
✅ Implemented and tested ⚠ Feasible but not tested ❌ Not implemented
- IP Configuration
- Static IP Configuration
- ✅ Specify IP
- ✅ Configure gateway with default route
- DHCP Client
- ✅ Specify host name
- ❌ Custom options
- PPPoE (PPPD version)
- ✅ Default route specification
- ⚠ Multi-WAN dial
- ✅ Network interface name specification
- PPPoE (eBPF version)
- ✅ Protocol implementation
- ❌ Packet size exceeding MTU due to NIC GRO/GSO (unresolved)
- DHCP Server
- ✅ Provides simple IP address allocation and renewal service
- ✅ Customizable gateway and network segment access configuration for allocated IPs
- ✅ MAC address and IP binding
- ✅ IP allocation display
- IPv6 Support
- ✅ Use DHCPv6-PD to request prefixes from upstream routers
- ✅ Use RA to advertise multiple prefixes to downstream devices
- Static IP Configuration
- Traffic Shaping Module
- ✅ Support for traffic differentiation using IP/MAC values
- ✅ Independent DNS configuration and caching for each flow
- ✅ Route marked traffic according to marking configuration (direct/discard/port reuse allowed/redirect to Docker container or network interface)
- ❌ Set tracking marks for specified data
- ✅ External IP behavior control based on marked rules, with support for using
geoip.datfor configuration - ✅ Conflict resolution between IP rules and DNS rules based on priority (lower values have higher priority)
- Geo Database Management
- ✅ Multi-source geo database management
- ✅ Automatic IP/Site updates
- DNS
- ✅ Support for DNS over HTTPS, DNS over TLS, and DNS over QUIC upstream requests
- ✅ Support for specifying specific upstream DNS for specific domains
- ✅ DNS hijacking (return A/AAAA resolution)
- ❌ DNS hijacking returning multiple records (e.g., TXT/CNAME or others)
- ✅ IP marking for specified DNS resolution results for processing by marking modules
- ✅ GeoSite file support
- ❌ Support for Docker container domain labels in DNS resolution
- ✅ Support for test domain queries
- NAT (eBPF) Implementation
- ✅ Basic NAT
- ✅ Static mapping / Open specified ports
- ✅ NAT defaults to blocking port reuse, dynamically allowing port reuse for opened IPs based on marking module configuration
- Metrics Module
- ✅ Periodic reporting every 5s of connection information (bytes/packet count)
- ✅ Display current connections (not yet combined with NAT connection information)
- ❌ Open metrics export API
- Docker
- ✅ Support for simple Docker container operation and management
- ⚠ Image pulling
- ✅ Route traffic to Docker containers running TProxy
- WiFi
- ✅ Use iw commands to switch wireless network interface status
- ✅ Use hostapd to create WiFi hotspots
- ❌ Connect to WiFi hotspots
- Storage
- ✅ Use database instead of current configuration storage
- ✅ Export all current configurations to
landscape_init.tomlfile - ❌ UI provides configuration upload and restore component
- ❌ Add configuration modification component
- ❌ Separate database address specification for metrics
- Miscellaneous
- ✅ Login interface
- ❌ Add English frontend pages
- ✅ Network interface XPS/RPS optimization, load balancing across cores to improve overall throughput, but interrupt binding is not well understood - suggestions welcome in issues
Other features are continuously being updated...