本文最后更新于:2025年7月21日 晚上
OpenWrt是一款基于Linux的开源路由器操作系统,专为嵌入式设备设计,具有高度模块化和可定制性,广泛应用于软路由、智能家居及网络优化场景. 本文介绍安装配置方法。
OpenWrt
OpenWrt 是一款基于 Linux 的开源路由器操作系统,以其高度可定制性和模块化设计著称。它支持广泛的硬件平台(如x86、ARM、MIPS),提供超过3000个软件包,用户可灵活部署广告拦截、VPN、NAS等功能。OpenWrt 广泛应用于家庭网络优化(如多拨、QoS)、企业网关搭建及开发者学习,兼具轻量级与高性能特点,是技术爱好者和专业用户的理想选择。
Openwrt 安装及配置
- 路由网段: 2.2.2.0/24
- 当前网卡 IP: 2.2.2.100
- 网关 IP: 2.2.2.1
- 安装方式: Docker
查询物理网卡
使用命令查询当前主机的网卡配置
1 |
|
或
1 |
|
- 网卡命名规则
- 传统命名方式
eth0
/eth1
:基于设备加载顺序的简单编号,易因硬件变动导致混乱12wlan0
:无线网卡传统命名3
- 前缀标识
en
:以太网(有线)wl
:无线局域网ww
:无线广域网
因此如果为了软路由, 一般可以使用 en 开头的网卡.
这里以 enp1s0 网卡为例
开启网卡混杂模式
打开网卡混杂模式,其中eth0根据ifconfig命令找到自己的本地网卡名称替换
1 |
|
-
混杂模式(Promiscuous Mode)
是一种特殊的网络接口工作模式,其核心作用是突破网卡默认的过滤规则,接收所有流经网卡的数据包。
- 正常模式(非混杂模式):
- 网卡只接收以下数据包:
- 目标MAC地址匹配自身MAC的数据包
- 广播包(目标MAC为
FF:FF:FF:FF:FF:FF
) - 多播包(如果已订阅对应多播组)
- 过滤机制:通过网卡硬件实现高效过滤
- 网卡只接收以下数据包:
- 混杂模式:
- 关闭硬件过滤功能
- 将所有流经物理链路的数据包无条件上传给操作系统
- 无论目标MAC是否匹配、是否为广播/多播
-
查看是否开启成功
在 ifconfig 中查看对应网卡的 Status, 如果增加了
PROMISC
即为成功1
2
3
4
5
6enx68da73ad5e2d: flags=4355<UP,BROADCAST,PROMISC,MULTICAST> mtu 1500
ether 68:da:73:ad:5e:2d txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
系统网络配置
为了方便配置使用以及后续登录openwrt后台管理系统,你需要配置网卡信息
配置当前主机网卡 enx68da73ad5e2d
- IP: 2.2.2.100
- 网关(Gateway): 2.2.2.1
- DNS: 2.2.2.1
安装 Docker zzsrv/openwrt
-
用于 linux/x86_64
-
项目基于 ImmortalWrt OpenWrt-24.10,每日上午 8 点编译 OpenWrt 镜像,镜像构建完成后将同时推送到 DockerHub 和 阿里云镜像仓库 (杭州) 。
-
DockerHub: https://hub.docker.com/r/zzsrv/openwrt
拉取镜像:
1 |
|
- 创建
docker-compose.yml
文件
macvlan 模式: 为每个物理网卡生成的macvlan网卡将其直接连接到宿主机的物理网络,间接管理物理网络
1 |
|
- 创建容器
1 |
|
- 进入容器内部环境
1 |
|
- 根据自己实际情况修改网络配置,修改完成后保存配置
1 |
|
我们需要修改的是这一段:
1 |
|
将其改成我的场景需要的配置:
1 |
|
注意: macvlant模式下,macvlan网卡ip事实上可以和网关(2.2.2.1) 相同,这里为了稳妥还是使用了其他 IP (2.2.2.2),但是该IP请勿和物理网卡ip(2.2.2.100)冲突,这两个是局域网中的两个不同设备
- 重启 network
1 |
|
- 修改 root 密码, 同时也为 openwrt 管理密码
1 |
|
测试 openwrt
宿主机无法直接透过 ip 访问 macvlan 底下的 openwrt, 需要其他设备接入进行测试
DHCP 服务
其他网卡设备接入当前局域网, 网络 IP 配置为 DHCP 获取
正常情况下应该会获取到 2.2.2.X 的 IP
访问 openwrt
可以从其他入网主机访问 2.2.2.2 进行路由配置
- 登录用户名 root 密码是我们容器内刚刚设置的 root 密码
- 进入配置页面
配置 wan 口
参考资料
- https://github.com/zzsrv/OpenWrt-Docker
- https://hub.docker.com/r/zzsrv/openwrt
- https://hub.docker.com/r/unifreq/openwrt-aarch64
- https://blog.csdn.net/qq_44625774/article/details/139537947
- https://blog.tigernaxo.com/posts/other/openwrt-docker/
- https://www.cnblogs.com/luoshuifushen/p/16989469.html
文章链接:
https://www.zywvvd.com/notes/coding/internet/openwrt/openwrt/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信支付

支付宝支付