Debian13部署基于ebpf的路由软件Landscape Router
研究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,和现有网络隔离
设置完成后ip情况如下
- 本地网络使用的是192.168.1.0/24网段
- Landscape lan使用的是192.168.5.0/24网段
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
连接到测试机的终端
分流功能测试
配置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
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Moyin!