基于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

相关新闻

【课程设计/毕业设计】基于Django的花艺文创产品电商交易平台设计与实现 鲜花资源展示与线上交易管理系统【附源码、数据库、万字文档】

【课程设计/毕业设计】基于Django的花艺文创产品电商交易平台设计与实现 鲜花资源展示与线上交易管理系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/10/12 22:16:52 阅读更多 →
企业AI开发落地:从模型可用到场景好用的实战指南

企业AI开发落地:从模型可用到场景好用的实战指南

1. 企业AI开发的现状与挑战当ChatGPT引爆全球AI热潮后,几乎所有企业都在问同一个问题:我们该如何用AI改造业务?但现实情况是,超过70%的AI项目止步于POC阶段。我见过太多企业花费重金采购或训练了"能用"的模型&#xff0…

2026/10/9 2:39:05 阅读更多 →
提质信创•协同发展——麒麟信安云+操作系统交流会顺利召开

提质信创•协同发展——麒麟信安云+操作系统交流会顺利召开

3月11日,由麒麟信安和神州数码共同举办的麒麟信安云操作系统交流会在杭州举行。本次交流会以“提质信创•协同发展”为主题,旨在探讨麒麟信安云操作系统信创产业稳定落地新模式,助力信息技术自主创新优质升级。麒麟信安高级副总裁任启、神州数…

2026/10/9 18:36:40 阅读更多 →

最新新闻

AI时代个人量化:从零开发专属交易策略全流程

AI时代个人量化:从零开发专属交易策略全流程

AI时代最大的红利:个人做量化,也能开发出一套适合你的策略这几年AI的热度不用我多说,但很多人一提AI就想到大模型聊天、画图、写代码,真正把AI转化成个人生产力的场景,反而被我周围的量化交易玩家给玩明白了。我自己从…

2026/10/14 11:03:10 阅读更多 →
执行沙箱隔离实战:从命名空间到seccomp的多层防御设计

执行沙箱隔离实战:从命名空间到seccomp的多层防御设计

1. 执行沙箱隔离到底在解决什么问题第一次接触“执行沙箱隔离”这个概念,是在做一个代码在线评测功能的时候。用户提交一段代码,服务端要跑起来验证结果,跑完把输出返回去。听起来很简单对吧?但真正上线之后才发现,噩梦…

2026/10/14 11:03:10 阅读更多 →
商品列表接口设计:分页、筛选、排序背后的工程权衡

商品列表接口设计:分页、筛选、排序背后的工程权衡

上一篇讲了商品详情接口——它的难点在「各平台字段不一样」。 列表接口是它的姊妹,但难点完全不同。详情接口是「点查」:给一个确定的 ID,取一条确定的记录;列表接口是「扫描」:在一堆数据里,按用户给的任…

2026/10/14 11:03:10 阅读更多 →
Python在AI与数据分析中的核心应用与实践

Python在AI与数据分析中的核心应用与实践

1. 为什么Python是AI入门的首选语言 作为一个从2012年开始接触Python的老程序员,我至今记得第一次用10行代码完成C语言需要100行才能实现的数据处理时的震撼。Python凭借其近乎伪代码的语法设计,成为了人工智能领域当之无愧的" lingua franca"…

2026/10/14 11:03:10 阅读更多 →
RAG不评测等于闭眼调参:从指标原理到落地实践

RAG不评测等于闭眼调参:从指标原理到落地实践

做 RAG 不评测,等于闭着眼睛调参:一份从原理到落地的完整测评指南我见过太多做 RAG(检索增强生成)的同学,上线前说得头头是道,一问到“怎么证明你的系统比上个版本好”,立刻支支吾吾。RAG 项目最…

2026/10/14 11:03:10 阅读更多 →
Python实现重复文档查找与清理工具

Python实现重复文档查找与清理工具

1. 重复文档查找工具的设计与实现在日常工作中,我们经常会遇到文档重复的问题,特别是从QQ、微信等平台接收的文件,经常会在不同文件夹中保存多份相同内容但不同名称的文件。这些重复文件不仅占用宝贵的存储空间,还会导致文件管理混…

2026/10/14 11:02:10 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →