Thanks to visit codestin.com
Credit goes to github.com

Skip to content

The goal is to easily configure your favorite Linux distribution as a router using the web UI

License

Notifications You must be signed in to change notification settings

isgasho/landscape0

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Landscape - Linux Router Configuration Tool

License: GPL v3 DeepWiki

Landscape is a web-based tool that helps you easily configure your favorite Linux distribution as a router.

Built with Rust / eBPF / AF_PACKET.

简体中文 | English

Screenshot


Features

✅ Implemented and tested ⚠ Functional but untested ❌ Not implemented

  • IP Configuration

    • Static IP

      • ✅ Set IP address
      • ✅ Configure default route via gateway
    • DHCP Client

      • ✅ Specify hostname
      • ❌ Custom DHCP options
    • PPPoE (PPPD version)

      • ✅ Set as default route
      • ⚠ Multi-interface dialing
      • ✅ Specify interface name
    • PPPoE (eBPF version)

      • ✅ Protocol core implemented
      • ❌ GRO/GSO causing oversized packets (unsolved)
    • DHCP Server

      • ✅ Provide basic IP assignment and renewal
      • ✅ Custom gateway/subnet/access rules
      • ✅ IP-MAC binding
      • ✅ IP lease display
    • IPv6 Support

      • ✅ Use DHCPv6-PD to request prefix from upstream
      • ✅ Use RA to advertise prefix to downstream
  • Traffic Control Module

    • ✅ Tag flows using IP + QoS
    • ✅ Each flow can have its own DNS settings and cache
    • ✅ Route marked traffic based on rules (direct/drop/reuse port/redirect to Docker or NIC)
    • ❌ Assign tracking marks to specified packets
    • ✅ External IP behavior control via tagging and geoip.dat support
    • ✅ Optionally override DNS for external IP rules
  • Geo Management

    • ✅ Manage multiple Geo sources
    • ✅ Auto-update Geo IP/Site data
  • DNS

    • ✅ Support DNS over HTTPS and DNS over TLS for upstream
    • ✅ Assign specific upstream DNS by domain
    • ✅ DNS Hijacking (return A records)
    • ❌ Hijack to return multiple records (other than A)
    • ✅ Tag resolved IPs and handle with traffic control
    • ✅ Support GeoSite files
    • ❌ Parse Docker container domain labels into DNS records
    • ✅ Test domain resolution
  • NAT (eBPF)

    • ✅ Basic NAT support
    • ⚠ Static mapping / Port forwarding (UI incomplete)
    • ✅ NAT disables port reuse by default; reuse allowed via tagging rules
  • Metrics

    • ✅ Report connection stats (bytes/packets) every 5 seconds
    • ✅ Display active connections (not yet combined with NAT)
    • ❌ Open export API for metrics
  • Docker

    • ✅ Basic Docker container management and runtime
    • ⚠ Pull images
    • ✅ Route traffic into TProxy-enabled containers
  • Wi-Fi

    • ✅ Enable/disable Wi-Fi using iw
    • ✅ Create AP with hostapd
    • ❌ Connect to existing Wi-Fi hotspot
  • Storage

    • ✅ Use database instead of file-based config
    • ✅ Export all current configs as landscape_init.toml
    • ❌ UI component to upload/restore config
    • ❌ Config editor via UI
    • ❌ Separate DB path for metrics
  • Miscellaneous

    • ✅ Login screen
    • ❌ English UI frontend
    • ❌ NIC XPS/RPS optimization to distribute load across CPU cores

How to Start & Limitations

System Requirements

  • Supported Linux Kernel: 6.1 or later
  • (Optional) docker

Manual Startup

  1. Create config directory:

    mkdir -p ~/.landscape-router
  2. Download static.zip from release and extract to ~/.landscape-router/static

  3. If you have a desktop environment and browser, you can skip this step. Otherwise, refer to Quick Start Guide to create landscape_init.toml

  4. Start the service by downloading a release binary from Releases Then run (as root):

    ./landscape-webserver

    Default port: 6300 Default username: root Default password: root Use ./landscape-webserver --help for other options.

Docker Compose

See Quick Start Guide

Armbian Integration

See Armbian Integration Guide


Build Instructions

See Build Documentation or Cross-compilation Guide


LICENSE


If you have any suggestions or issues, feel free to submit them via issues.

About

The goal is to easily configure your favorite Linux distribution as a router using the web UI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 62.6%
  • Vue 16.1%
  • C 11.9%
  • TypeScript 8.3%
  • Shell 1.0%
  • Dockerfile 0.1%