此项目提供快捷脚本,用于在类Armbian系统中创建Docker macvlan网络,并配置宿主机与容器之间的macvlan bridge互通。
核心容器是mosdns和adguardhome, mosdns提供域名分流(分流后的外部域名采用FakeIP方案),adguardhome提供域名缓存。
本代码已在群晖7.3+(可能需要补全欠缺的命令),飞牛1.0+,armbian(linux6.1+) 上测试通过。
- 交互式选择网卡并确认 IP / 网关 / 子网配置
- 创建 Docker macvlan 网络
- 创建宿主机
macvlan-bridge接口用于互通 - 写入并启用 Systemd 服务,确保开机自启
- 预定义多个容器 IP:librespeed(.111) AdGuardhome(.114)、MosDNS(.119)、Mihomo(.120)
- 此代码多数由openai和gemimi生成
| 序号 | 功能描述 |
|---|---|
| 0 | 显示菜单 |
| 1 | 显示操作系统信息 |
| 2 | 显示网卡信息 |
| 3 | 显示磁盘信息 |
| 4 | 显示 Docker 信息 |
| 5 | 格式化磁盘并挂载 |
| 7 | 安装 Docker |
| 8 | 创建macvlan(包括ipv4+ipv6) |
| 9 | 清理 macvlan |
| 10 | 安装 Portainer |
| 11 | 安装 LibreSpeed |
| 14 | 安装 AdGuardHome |
| 19 | 安装 mosdns |
| 20 | 安装 mihomo |
| 21 | 安装 ddnsgo【依赖mihomo】 |
| 22 | 安装 ddnsgo【依赖mihomo】 |
| 23 | 安装 gost + gost-ui【依赖mihomo】 |
| 45 | 安装 samba |
| 70 | 迁移docker目录 |
| 71 | 优化docker日志 |
| 90 | 创建macvlan bridge |
| 91 | 清理macvlan bridge |
| 97 | 安装watchtower 自动更新 |
| 98 | 强制使用watchtower更新一次镜像 |
| 99 | 退出脚本 |
bash <(curl -fsSL https://raw.githubusercontent.com/perryyeh/armbian/main/install.sh)git clone https://github.com/perryyeh/armbian.git
cd armbian
chmod +x install.sh
./install.sh- 确立docker容器安装目录,硬盘没有格式化&加载的先格式化&加载
- 没docker的先安装docker(群晖和飞牛已有,直接跳过)
- 群晖和飞牛的网卡建议先开open vSwitch
- 确立专有ip段给macvlan使用,ipv4建议给一个新的/24段(或现有ipv4的开头/结尾),ipv6 ula建议给/64段,在路由器上设置dhcp时候避开这段不分配
- 选择网卡(群晖和飞牛建议选ovs开头网卡)创建macvlan
- 没有surge/openwrt当代理的,可安装mihomo替代,mihomo需开tun模式并配置好上游代理。
- 路由器里配置静态路由,198.18.0.0/15下一跳到surge/mihomo的ip。
- 安装mosdns,选surge当上游时dns写198.18.0.2;选mihomo当上游时,dns写mihomo的ip。
- 安装adguardhome,用mosdns当上游,dns写mosdns的ip。
- 最后创建macvlan bridge,解决宿主机和容器之间的互通。
| 场景 | 公网ipv4 | 公网ipv6 | 容器可得ipv6 | 入站方式 |
|---|---|---|---|---|
| 1 | ✅ | ✅ | ✅ | 输入21,安装和mihomo共用ip【局域网ipv4+公网ipv6】的ddnsgo来更新ipv4+ipv6。ipv4在路由器上端口转发到mihomo,ipv6在路由器上开放ipv6端口入站 |
| 2 | ❌ | ✅ | ✅ | 输入21,安装和mihomo共用ip【局域网ipv6】的ddnsgo来更新ipv6。 IPv4考虑relay(比如lucky), ipv6在路由器上开放ipv6端口入站 |
| 3 | ✅ | ❌ | ❌ | 随意ddns后,路由器加端口转发,仅IPv4。 |
| 4 | ❌ | ✅ | ❌ | IPv6入站可做但不推荐,视作行5考虑 |
| 5 | ❌ | ❌ | ❌ | 选relay/tunnel方案,比如cloudflare tunnel,frp,tailscale什么的 |
- 默认使用ipv4计算容器的mac地址,mac地址格式类似02:*:86
- 默认使用ipv4计算ipv6 ula地址(
⚠️ 这不符合RFC4193,想合规可手工输入合规的ipv6 ula),生成fd10::/64(对应10.0.0.0/8)、fd17::/64(对应172.16.0.0/12)、fd19::/64(对应192.168.0.0/16)作为 IPv6 网段,如不默认则一定要手工输入ipv6 ula - 安装macvlan bridge错误请回滚操作,以免流量死循环导致无法进入而重新刷机
- 脚本会自动安装依赖的命令: ipcalc curl jq
- https://github.com/perryyeh/mosdns
- https://github.com/perryyeh/adguardhome
MIT License © 2026