OpenWrt Docker软路由

半年前用 N1 配合 OpenWrt 搭建了软路由,也稳定运行了半年。这周心血来潮想折腾其他的上网方式,把 OpenWrt 软路由升级了下,中间的步骤也不少,正好记录下。

Docker 准备

首先是 docker 环境准备,这个现在一般 NAS 啥的都自带,我用的 Armbian 也是,除了修改下镜像加速也没啥改动。

daemon.json 增加 registry-mirrors

  "registry-mirrors": [
    "https://dockerproxy.com"
  ]

网络准备

打开网卡混杂模式

sudo ip link set eth0 promisc on

创建 macvlan 虚拟网卡

docker network create -d macvlan --subnet=192.168.xxx.0/24 --gateway=192.168.xxx.yyy -o parent=eth0 macnet

OpenWrt 镜像准备

这里推荐两个:

如果要清爽干净可是使用第一个,如果有魔法上网需求选择第二个,使用上都没有区别

启动 OpenWrt 并配置网络

首先启动容器

docker run -d --name=openwrt --network macnet --privileged --restart always ophub/openwrt-aarch64:latest

进入 OpenWrt

docker exec -it openwrt bash

修改 IP、网关、DNS 等

vi /etc/config/network

修改完重启 OpenWrt 网络

/etc/init.d/network restart

软路由设置

上面执行完成后就可以通过 ip 登陆软路由,输入密码后进行相关的设置。

LAN 接口设置

进入 网络 - 接口 - LAN,执行以下修改

  1. 关闭 DHCP
  2. IPv4 网关DNS 服务器都填写主路由地址
  3. 物理设置中,取消桥接接口选项

防火墙设置

进入 网络 - 防火墙 - 自定义规则,添加

iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

修改后重启防火墙

Armbian 设置 (可选)

对于使用 Armbian,实现和 OpenWrt 互相访问 修改 /etc/network/interfaces,增加

auto macvlan
iface macvlan inet dhcp
        pre-up ip link add macvlan link eth0 type macvlan mode bridge
        post-down ip link del macvlan link eth0 type macvlan mode bridge

OpenClash 设置

对于需要 OpenClash 魔法上网的,首次添加订阅大概率无法启动。查看日志会发现是因为 clash 内核无法下载,所以需要先下载内核。

进入 OpenClash - 插件设置 - 版本更新,在 Dev 内核中点击下载,可以把内核先下载到本地。

ssh 登陆 OpenClash 并上传 clash 内核到 /etc/openclash/core,可能会没有文件夹记得创建,然后修改文件权限

chmod 0700 clash  
chown nobody:nogroup clash

修改后重启 OpenClash 应该就可以了

/路由/ /openwrt/