基于docker实现openwrt软路由与OMV(NAS)应用

📅 2026/7/23 17:54:15
基于docker实现openwrt软路由与OMV(NAS)应用
记录一下搭建过程一、安装debian111、下载debian11安装光盘iso建议下载DVD版本netinst版本安装时比较慢https://cdimage.debian.org/debian-cd/current/amd64/iso-dvd/debian-11.3.0-amd64-DVD-1.iso2、将ISO镜像写下到U盘或移动硬盘使用Win32_Disk_Imager工具加载下载的debian-11.3.0-amd64-DVD-1.iso并制作启动盘3、安装debian11U盘启动后进入安装画面选择install语言选择english区域选择other选择Asia选择China语言集选择 United States - en_US.UTF-8键盘选择American English​ 等待文件复制过程完毕输入主机名比如mynas输入域名(可不输入保持为空)输入root账户密码再次输入root账户密码建立初始用户输入初始建立的用户名称建立初始用户输入初始建立的用户账号建立初始用户输入密码建立初始用户再次输入密码磁盘分区小白用户直接选择 Guided - use entire disk磁盘分区选择需要分区的磁盘如果只有一个磁盘直接回车多个磁盘注意选择磁盘分区选择分区方案小白用户直接选择使用一个分区All files in one partition磁盘分区确认分区信息无误则选择Finish partitioning and write changes to disk分区信息是否写入磁盘确认选择 yes等待基础系统安装配置包管理扫描其他媒体选择 no配置包管理使用网络源选择 yes配置包管理选择china配置包管理选择源站点个人习惯选择中国科大 mirrors.ustc.edu.cn配置包管理输入HTTP代理服务器信息保持默认为空即可等待配置apt配置configuring popularity-contest选择no选择安装的软件只选择SSH server及standard system utilities星号表示已选择等待安装软件安装引导程序选择yes安装引导程序 选择 /dev/sda等待安装完成安装完成选择Continue拨出U盘等待系统重记完成4、启用ssh使用root账户登录debian输入以下命令启用sshnano /etc/ssh/sshd_config输入PermitRootLogin yes按Ctrlx存盘退出重启SSH服务service ssh restart去掉安装时的光盘源nano /etc/apt/sources.list注释掉deb cdrom行apt-get update apt-get install iptables iptables -L -n查看端口开放情况二、安装omv6执行cat EOF /etc/apt/sources.list.d/openmediavault.list deb http://packages.openmediavault.org/public shaitan main # deb http://downloads.sourceforge.net/project/openmediavault/packages shaitan main ## Uncomment the following line to add software from the proposed repository. # deb http://packages.openmediavault.org/public shaitan-proposed main # deb http://downloads.sourceforge.net/project/openmediavault/packages shaitan-proposed main ## This software is not part of OpenMediaVault, but is offered by third-party ## developers as a service to OpenMediaVault users. # deb http://packages.openmediavault.org/public shaitan partner # deb http://downloads.sourceforge.net/project/openmediavault/packages shaitan partner EOFexport LANGC.UTF-8 export DEBIAN_FRONTENDnoninteractive export APT_LISTCHANGES_FRONTENDnone apt-get install --yes gnupg wget -O /etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc https://packages.openmediavault.org/public/archive.key apt-key add /etc/apt/trusted.gpg.d/openmediavault-archive-keyring.asc apt-get update apt-get --yes --auto-remove --show-upgraded \ --allow-downgrades --allow-change-held-packages \ --no-install-recommends \ --option DPkg::Options::--force-confdef \ --option DPkg::Options::--force-confold \ install openmediavault-keyring openmediavault # Populate the database. omv-confdbadm populate # Display the login information. cat /etc/issue三、安装docker执行sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - sudo add-apt-repository \ deb [archamd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian \ $(lsb_release -cs) \ stable sudo apt-get update sudo apt-get install docker-ce四、安装openwrt-旁路模式1、开启网卡混杂模式2、建立容器3、改配置参数sudo ip link set ens33 promisc on ip route show docker network create -d macvlan --subnet192.168.83.0/24 --gateway192.168.83.2 -o parentens33 macnet docker network ls docker run -d --restart always --name openwrt --privileged --network macnet --ip192.168.83.10 sulinggg/openwrt:x86_64 /sbin/init docker exec -it openwrt bash nano /etc/config/network #修改配置 config interface lan option type bridge option ifname eth0 option proto static option netmask 255.255.255.0 option ip6assign 60 option ipaddr 192.168.83.10 option gateway 192.168.83.2 option dns 192.168.83.2 114.114.114.114 8.8.4.4 #只做旁路由 #删除wan配置 #删除vpn0配置 #存盘退出 /etc/init.d/network restart #重置openwrt密码 passwd浏览器进入openwrthttp://192.168.83.10进入 【网络】-【接口】-LAN(br-lan)-修改【物理设置】去掉【桥接接口】的勾选DHCP基本设置勾选【忽略此接口】点击【保存应用】五、安装openwrt-主路由模式参考https://www.zhihu.com/question/506798801、宿主机设置网卡混杂模式ip link set eno1 promisc on ip link set enp4s0 promisc on 修改网卡配置 nano /etc/network/interfaces allow-hotplug enp4s0 #iface enp4s0 inet dhcp iface enp4s0 inet static address 172.16.10.250 netmask 255.255.255.0 gateway 172.16.10.1 dns-nameservers 172.16.10.1 allow-hotplug eno1 iface eno1 inet dhcp2、宿主机加载pppoe模块echo pppoe /etc/modules modprobe pppoe3、配置docker# 为 docker 创建 macvlan 虚拟接口并链接到 host 网卡 # LAN 口 enp4s0 docker network create -d macvlan \ --subnet172.16.10.0/24 --gateway172.16.10.1 \ --ipv6 --subnetfe80::/16 --gatewayfe80::1 \ -o parentenp4s0 \ -o macvlan_modebridge \ macvLan # WAN 口 eno1 docker network create -d macvlan \ --subnet192.168.254.0/24 --gateway192.168.254.1 \ --ipv6 --subnetfe81::/16 --gatewayfe81::1 \ -o parenteno1 \ -o macvlan_modebridge \ macvWan #创建容器 docker run -d \ --restart always \ --network macvLan \ --privileged \ --name openwrt \ sulinggg/openwrt:x86_64 \ /sbin/init #将第二网卡的 macvlan 挂接到 openwrt docker network connect macvWan openwrt4、配置openwrt#进入容器 docker exec -it openwrt /bin/sh #编辑 nano /etc/config/network config interface lan option type bridge option ifname eth0 # 需要与 docker netwrok 中的虚拟接口匹配macvLan option proto static option ipaddr 172.16.10.1 option netmask 255.255.255.0 option ip6assign 60 config interface wan option ifname eth1 # 需要与 docker netwrok 中的虚拟接口匹配macvWan option proto dhcp option ip6assign 60 #重启 openwrt 网络 /etc/init.d/network restart #改密码 passwd5.宿主机出口由于docker网络采用macvlan的bridge模式即使宿主机与容器在同一网段相互之间也是无法通信的。 为了解决这个问题需利用多个macvlan接口之间是互通的原理在LAN口新建一个macvlan虚拟接口# 使用 ip 命令 ip link add link enp4s0 mac40 type macvlan mode bridge # 在 enp4s0 接口下添加一个 macvlan 虚拟接口 ip addr add 172.16.10.253/24 brd dev mac40 # 为 mac40 分配 ip 地址 ip link set mac40 up ip route del default #删除默认路由 ip route add default via 172.16.10.250 dev mac40 # 设置静态路由 echo nameserver 172.16.10.1 /etc/resolv.conf # 设置静态 dns 服务器 # 或者使用 nmcli nmcli connection add type macvlan dev enp4s0 mode bridge ifname mac40 autoconnect yes save yes或者若是在 debian 中可以编辑/etc/network/interface并加入auto mac40 iface mac40 inet manual pre-up ip link add link enp4s0 mac40 type macvlan mode bridge pre-up ip addr add 172.16.10.249/24 brd dev mac40 up ip link set mac40 up post-up ip route del default post-up ip route del 172.16.10.0/24 dev enp4s0 post-up ip route add default via 172.16.10.1 dev mac40 post-down ip link del dev mac40六、安装防火墙执行apt-get install ufw ufw default deny incoming ufw allow 22/tcp ufw allow 80/tcp ufw enable