以下内容来自QQ:1729746258

测试环境

硬件:赛扬 3865U 双千兆主板
系统:DSM 7.1
容器:Docker
网络配置:群晖 eth0 连接到上级路由自动获取 IP (192.168.0.23),eth1 断开

部署过程

  1. SSH 到群晖开启网口混杂模式

    sudo -i
    ip link set eth0 promisc on
    ip link set eth1 promisc on
  2. Docker 拉取 OpenWrt 镜像
    拉这个:piaoyizy/openwrt-x86
  3. Docker 创建虚拟网卡
    eth0 作为 OpenWrt 的 WAN 口

    docker network create -d macvlan -o parent=eth0 macvwan

    eth1 作为 OpenWrt 的 LAN 口

    docker network create -d macvlan -o parent=eth1 macvlan
  4. 启动 OpenWrt 容器 (连接到 macvlan)

    docker run -d --name=OpenWrt --restart always --privileged --network macvlan piaoyizy/openwrt-x86
  5. OpenWrt容器连接到 macvwan

    docker network connect macvwan openwrt
  6. 进入 OpenWrt 容器 Shell

    vi /etc/config/network

    配置如下:

    config interface 'lan'
    option ifname 'eth1'
    option proto 'static'
    option ipaddr '192.168.1.1'
    option netmask '255.255.255.0'
    
    config interface 'wan'
    option ifname 'eth0'
    option proto 'dhcp'

    保存退出

  7. 重启容器
  8. 进入 OpenWrt 容器 Shell 或上级路由器后台查看自动获取的 IP
    登录到 OpenWrt 后台,网络 -> 防火墙 -> 自定义规则, 添加一行:

    iptables -t nat -I POSTROUTING -s 192.168.1.0/24  -j MASQUERADE

    重启防火墙
    网络 -> 防火墙 -> 区域设置 -> 转发: 接受
    保存&应用

  9. 设置网口混杂模式开机自启
    登录到群晖,控制面板 -> 任务计划 -> 新增 -> 触发的任务 -> 用户自定义的脚本:
    用户账号:root
    脚本如下:

    ip link set eth0 promisc on
    ip link set eth1 promisc on

    保存