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
,执行以下修改
- 关闭 DHCP
IPv4 网关
和DNS 服务器
都填写主路由地址- 在
物理设置
中,取消桥接接口
选项
防火墙设置
进入 网络 - 防火墙 - 自定义规则
,添加
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 应该就可以了