研究openwrt的时候,在b站发现了一个路由软件,拥有分流功能,或许可以实现比tun模式更好用的代理功能,就自己尝试了一下

部署

使用pve创建两台debian13虚拟机,一台部署Landscape,一台用于连接Landscape路由测试

  • 在root目录下下载可执行文件landscape-webserver-x86_64并重命名为landscape-webserver
  • /root/.landscape-router/目前下载static.zip网页资源并解压
  • 服务开机自启使用项目文档中的systemd 服务即可
  • 管理网页https://ip:6443 账号密码默认都是root

服务启动后目录结构如下

├── .landscape-router
│   ├── cert.pem
│   ├── geo_tmp
│   │   ├── ip
│   │   │   ├── 1.ip
│   │   │   ├── 2.ip
│   │   │   ├── 3.ip
│   │   │   └── 4.ip
│   │   └── site
│   │       ├── 1.site
│   │       ├── 2.site
│   │       ├── 3.site
│   │       └── 4.site
│   ├── key.pem
│   ├── landscape_api_token
│   ├── landscape_db.sqlite
│   ├── landscape_init.lock
│   ├── logs
│   │   └── landscape.log.2025-08-31
│   └── static
│       ├── assets
│       │   ├── FiraCode-Regular-CRwVj4V2.woff2
│       │   ├── index-BQxFffPY.js
│       │   ├── index-DKqIQjjZ.css
│       │   ├── LatoLatin-Regular-Dmlz1U0B.woff2
│       │   └── LatoLatin-Semibold-Dbk81p2D.woff2
│       └── index.html
├── landscape-webserver

两台虚拟机网卡设置

  • 全部使用虚拟网卡,路由机使用3个网卡,分别用于路由系统的wan,lan和本地网络的连接,防止失联
  • lan网口需要使用一个独立的vlan,和现有网络隔离
    Landscape
    Landscape-lan

设置完成后ip情况如下

  • 本地网络使用的是192.168.1.0/24网段
  • Landscape lan使用的是192.168.5.0/24网段
    Landscape

Landscape 网络拓扑配置如下
Landscape

测试机ip地址如下,dhcp自动获取到的

2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether xxxxxxxxxxx brd ff:ff:ff:ff:ff:ff
    altname enp0s18
    altname enxbc2411a99ab6
    inet 192.168.5.176/24 brd 192.168.5.255 scope global dynamic noprefixroute ens18
       valid_lft 38067sec preferred_lft 32667sec
    inet6 xxxxxxxxxxx/64 scope link
       valid_lft forever preferred_lft forever

部署完成后需要自己加一条DNS规则,否则访问不了外网

防火墙/端口转发测试

  • 设置完成,可以直接通过ssh moyin@192.168.1.39 -p 10080 连接到测试机的终端
    Landscape
    Landscape

分流功能测试

配置docker接应程序

Tip

可以加群交流哦 在官方文档里寻找

  • 配置来源于Landscape交流群友,有修改
  • 使用现有的接应程序docker ghcr.io/thisseanzhang/landscape-edge:amd64-16
  • 映射本地目录到容器目录/app/server
  • 目录中存放mihomo二进制文件和配置文件和run.sh文件,如下
#!/bin/bash
# mihomo二进制文件
#chmod +x /app/server/mihomo
# mihomo 配置文件
## chmod a+rw /app/server/config.yaml
# 设置资源限制(如果需要)
# ulimit -n 1000000
# ulimit -u 500

# 启动 mihomo 守护进程
while true; do
    echo "启动 mihomo..."
    /app/server/mihomo -d /app/server/config
    echo "mihomo 异常退出,等待1秒后重新重启..."
    sleep 1
    # 检查 mihomo 是否正常退出(可选,但推荐)
    if [[ $? -ne 0 ]]; then
        echo "mihomo 进程异常退出,检查日志..."
        # 在这里添加日志检查或其他错误处理
        sleep 5
    fi
done

下载geo文件并配置分流

我使用的geoip和geosite文件链接如下

geoip: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geoip.dat"
geosite: "https://testingcf.jsdelivr.net/gh/MetaCubeX/meta-rules-dat@release/geosite.dat"

使用dns劫持和fakeip模式,需要配置如下

  • 新建Flow,分流出口设置为docker
  • 默认FLow新建DNS规则,匹配规则使用geosite里的,自定义上游配置为mihomo docker的ip和DNS监听端口,重定向到Flow2
  • 默认FLow新建一条ip规则,198.18.0.0/15 重定向到Flow2