惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
Google DeepMind News
Google DeepMind News
G
Google Developers Blog
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
月光博客
月光博客
Jina AI
Jina AI
宝玉的分享
宝玉的分享
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
V
V2EX
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
Last Week in AI
Last Week in AI
B
Blog
博客园 - 叶小钗
小众软件
小众软件
Stack Overflow Blog
Stack Overflow Blog
P
Proofpoint News Feed
A
About on SuperTechFans
J
Java Code Geeks
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Y
Y Combinator Blog
Microsoft Security Blog
Microsoft Security Blog

又见苍岚

COLMAP PatchMatch Stereo 算法详解 事件驱动的状态机框架:从理论到工程实践 Git 在国内网络环境下无法 Push 的排查与修复 —— 配置 Clash 代理 分段五次多项式插值原理详解 路径插值方法深度对比研究 Claude Code 使用指南 OpenClaw 记忆管理与技能创建指南 CBS(Conflict-Based Search)算法详解 A* 算法及其变种详解 OpenClaw 配置多 Agents Windows Powershell 无法加载文件,因为在此系统上禁止运行脚本问题的解决方案 MaxClaw 安装流程 大模型 AI 名词介绍 AList 网盘聚合工具简介 Protobuf 简介与测试 Claude Code 简介以及 GLM 4.7 模型接入 Github 歌词下载工具 163MusicLyrics Python __getattr__ 懒加载 Python TypedDict 机器人仿真平台 Gazebo 安装记录 机器人仿真平台 Gazebo 简介 多机器人路径规划问题(Multi-Agent Path Finding, MAPF)简介 Python exifread 读取修改过的 jpeg 信息错误问题修复 3D 坐标系变换的理解 3D 旋转矩阵基本概念 MongoDB Compass 介绍 Python 环境管理工具 uv Flutter 开发指南 Snipaste 安装下载与黑屏问题解决方案 全局路径规划算法记录
openwrt 软路由配置安装
Yiwei Zhang · 2025-07-20 · via 又见苍岚

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
ifconfig

1
ip a
  • 网卡命名规则
  1. 传统命名方式
    • eth0/eth1:基于设备加载顺序的简单编号,易因硬件变动导致混乱‌12
    • wlan0:无线网卡传统命名‌3‌
  2. ‌前缀标识
    • en:以太网(有线)
    • wl:无线局域网
    • ww:无线广域网‌

因此如果为了软路由, 一般可以使用 en 开头的网卡.

这里以 enp1s0 网卡为例

开启网卡混杂模式

打开网卡混杂模式,其中eth0根据ifconfig命令找到自己的本地网卡名称替换

1
sudo ip link set enp1s0 promisc on
  • 混杂模式(Promiscuous Mode)

    是一种特殊的网络接口工作模式,其核心作用是突破网卡默认的过滤规则,接收所有流经网卡的数据包

  1. 正常模式(非混杂模式):
    • 网卡只接收以下数据包:
      • 目标MAC地址匹配自身MAC的数据包
      • 广播包(目标MAC为 FF:FF:FF:FF:FF:FF
      • 多播包(如果已订阅对应多播组)
    • 过滤机制:通过网卡硬件实现高效过滤
  2. 混杂模式
    • 关闭硬件过滤功能
    • 将所有流经物理链路的数据包无条件上传给操作系统
    • 无论目标MAC是否匹配、是否为广播/多播
  • 查看是否开启成功

    在 ifconfig 中查看对应网卡的 Status, 如果增加了 PROMISC 即为成功

    1
    2
    3
    4
    5
    6
    enx68da73ad5e2d: 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

拉取镜像:

1
docker pull registry.cn-hangzhou.aliyuncs.com/zzsrv/openwrt:x86_64
  • 创建 docker-compose.yml 文件

macvlan 模式: 为每个物理网卡生成的macvlan网卡将其直接连接到宿主机的物理网络,间接管理物理网络

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
services:
openwrt:
image: registry.cn-hangzhou.aliyuncs.com/zzsrv/openwrt:x86_64
container_name: openwrt
restart: always
privileged: true
command: ["/sbin/init"]
networks:
netLan:
networks:
netLan:
driver: macvlan
driver_opts:
parent: enx68da73ad5e2d # 替换为你的宿主机网络接口
  • 创建容器
1
docker-compose up -d
  • 进入容器内部环境
1
docker exec -it openwrt bash
  • 根据自己实际情况修改网络配置,修改完成后保存配置
1
vim /etc/config/network

我们需要修改的是这一段:

1
2
3
4
5
6
7
8
config interface 'lan'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '192.168.0.8'
option gateway '192.168.0.1'
option dns '192.168.0.1'
option device 'br-lan'

将其改成我的场景需要的配置:

1
2
3
4
5
6
7
8
config interface 'lan'
option proto 'static'
option netmask '255.255.255.0'
option ip6assign '60'
option ipaddr '2.2.2.2'
option gateway '2.2.2.1'
option dns '2.2.2.1'
option device 'br-lan'

注意: macvlant模式下,macvlan网卡ip事实上可以和网关(2.2.2.1) 相同,这里为了稳妥还是使用了其他 IP (2.2.2.2),但是该IP请勿和物理网卡ip(2.2.2.100)冲突,这两个是局域网中的两个不同设备

  • 重启 network
1
/etc/init.d/network restart
  • 修改 root 密码, 同时也为 openwrt 管理密码
1
passwd

测试 openwrt

宿主机无法直接透过 ip 访问 macvlan 底下的 openwrt, 需要其他设备接入进行测试

DHCP 服务

其他网卡设备接入当前局域网, 网络 IP 配置为 DHCP 获取

正常情况下应该会获取到 2.2.2.X 的 IP

访问 openwrt

可以从其他入网主机访问 2.2.2.2 进行路由配置

  • 登录用户名 root 密码是我们容器内刚刚设置的 root 密码

  • 进入配置页面

配置 wan 口

参考资料

文章链接:
https://www.zywvvd.com/notes/coding/internet/openwrt/openwrt/