Skip to content

Easily configure your favorite Linux distribution as a router using the web UI

License

Notifications You must be signed in to change notification settings

ThisSeanZhang/landscape

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Landscape - Linux Router Configuration Tool

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.

中文文档 | English

Screenshots


Features

✅ 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
  • 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

Startup and Limitations

System Requirements

  • Supported Linux Kernel Version: 6.1 and above.
  • Requires iptables (for PPPoE MSS clamping), docker.

Standard Startup Steps

  1. Create the configuration directory:

    mkdir -p ~/.landscape-router
  2. Create an initial configuration file landscape_init.toml, refer to Quick Start Configuration.

  3. Start the service:
    Download the required version from Releases and run the following command to start the service (default port: 6300):

    ./landscape-webserver

Docker Compose Quick Start

Refer to Quick Start.

Armbian Integration

Refer to Armbian Integration.


Compilation

Refer to Compilation.

LICENSE


If you have any suggestions or issues, feel free to submit feedback on the issues page.