写了一个能将 Linux 配置成路由的软件. 目前是到了 0.3.3-beta. 项目地址
2025-02-27 更新:
部署了一个文档地址: https://landscape.whileaway.dev 目前还没完善, 但是 通过 docker compose 部署体验的方式说明了
目前功能有以下
✅ 已经实现并且已经测试
⚠ 可行但是未测试
❌ 未实现
- <u>IP 配置</u>
- 静态 IP 配置
- ✅ 指定 IP
- ✅ 配置网关指定默认路由
- DHCP Client
- ✅ 指定主机名称
- ❌ 自定义 Option
- PPPoE ( PPPD 版 )
- ✅ 默认路由指定
- ⚠ 多网卡拨号
- ✅ 网卡名称指定
- PPPoE ( eBPF 版 )
- ✅ 协议主体实现
- ❌ 网卡 GRO/GSO 导致的数据包大小超 MTU (未解决)
- DHCP Server
- ✅ 提供简单 IP 地址分配和续期服务
- ✅ 自定义分配 IP 的 网关 网段 访问 配置
- 静态 IP 配置
- <u>标记模块</u>
- ✅ 将被标记流量按照标记配置( 直连/丢弃/禁止打洞/重定向到 Docker 容器或者网卡 )进行转发
- ❌ 流量统计
- ❌ 流量跟踪标记
- ✅ 内网 IP 行为控制, 按照标记的规则控制内网 IP
- ✅ 外网 IP 行为控制, 按照标记的规则控制外网 IP, 并支持使用
geoip.dat
协助配置 - ❌ GeoIP 文件自动更新
- <u>DNS</u>
- ✅ 支持指定网址使用特定上游 DNS
- ✅ DNS 劫持 ( 返回 A 解析 )
- ❌ DNS 劫持返回多条记录 ( 除了 A 解析之外的)
- ✅ 对指定 DNS 解析结果进行 IP 标记, 配置标记模块进行处理
- ✅ GeoSite 文件支持
- ❌ 自动定时更新 GeoSite 文件
- ❌ 支持将 Docker 容器镜像名加入解析缓存
- <u>NAT (eBPF) 实现</u>
- ✅ 基础 NAT
- ⚠ 静态映射 / 开放指定端口 ( UI 界面未完善 )
- ✅ NAT 打洞禁止, 依据标记模块的标记对指定 IP 开启的端口禁止其他 IP 进行连接
- <u> Docker </u>
- ✅ 支持简单运行和管理 Docker 容器
- ⚠ 镜像拉取
- ✅ 将流量导入运行 TProxy 的 Docker 容器
- <u> WIFI </u>
- ❌ 创建 WIFI 热点
- ❌ 接入 WIFI 热点
- <u> 杂项 </u>
- ✅ 登录界面
- ❌ 添加英文版前端页面
- ❌ 规范化日志记录
- ❌ 网卡 XPS/RSP 优化, 将网卡压力负载到不同的核心, 提升整体吞吐
以下为旧帖内容
目前测试下来日常用没有问题, 刷到 RK3528 (armbian linux) 的主机上跑测试. 能够跑满千兆.
目前除了基础的功能, 主要实现了 DNS, NAT,和特殊标记流量转发, DNS 的配置规则中可以指定一组域名规则, 这组域名规则可以指定特定的上游 DNS.
并且可以对返回的 IP 进行设置标记, 当向被标记的 IP 发起请求时, 可以选择将被标记 IP 的数据包传递到设置了 ld_red_id label
的容器, DNS 标记中设置的是哪个就是哪个.
也可以进行数据包丢弃 或者 在经过内部实现的 NAT 时, 标记这个IP 开启的NAT 外部端口不允许其他主机 通过, 进行限制打洞
还有就是能够简单运行 docker 容器 ( 镜像管理还没做
想问问大家还有那些功能是比较常用. 对于我来说可能我只要 docker 就足够了.
程序目前的截图是这样的

外网内网都测了下. 不过对于 3528 要手动配置下 XPS (Transmit Packet Steering)
( 目前程序没有自动配置, 不过如果是 X86 的话没啥问题


6