本文最后更新于: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
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/


“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付

openwrt 软路由配置安装
https://www.zywvvd.com/notes/coding/internet/openwrt/openwrt/
作者
Yiwei Zhang
发布于
2025年7月20日
许可协议