写了一个能将 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 的 网关 网段 访问 配置
  • <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 的话没啥问题

10
message-square
6
  • SeanOP
    4 days ago

    目前更新到 0.3.3 了

  • skycham
    2 months ago

    厉害了,先码再看。

  • lunksana
    2 months ago

    好厉害,支持哪些发行版了?我现在使用alpine手动配置的

    • SeanOP
      2 months ago

      目前开发和测试都是基于 debian 的, alpine 我到时候测测看看. 理论上应该是可以运行的

    • SeanOP
      28 days ago

      alpine 的库是 musl 试了差不多一天, libbpf-sys 编译老是报错

      看依赖的库的编译说明是可以编译的, 应该是我这方面还是不太熟 XD

      只能后续再看看了, 或者只能等等有没有其他热心大佬帮忙试试了 (●‘◡’●)

  • yanling
    1 month ago

    WiFi直接调用hostapd就行了