1Panel 中跑 CatWrt 旁路网关 Docker 版 OpenWrt

在 1Panel 中跑 CatWrt 旁路网关，这里用的 Debian 安装好了 1Panel，宿主机是 PVE 虚拟的 Debian，今天简单介绍一下 CatWrt-rootfs 的安装方法

昨天折腾了一下把 rootfs 的文件上传到 dockerhub 上了，大家以后就可以直接去拉取镜像，还是挺方便的。不需要去网盘或者 Github 上面下这个 rootfs 版本的 CatWrt 了，具体这个 rootfs 我只是给一个安装的方法。

建议还是用我们这个 docker-compose 进行配置 CatWrt，如果你没有 1Panel 也是可以用的，宝塔什么的甚至不需要面板也可以。

Copy
root@Debian:~# neofetch
_,met$$$$$gg. root@Debian
,g$$$$$$$$$$$$$$$P. -----------
,g$$P" """Y$$.". OS: Debian GNU/Linux 12 (bookworm) x86_64
,$$P' `$$$. Host: KVM/QEMU (Standard PC (i440FX + PIIX, 1996) pc-i440fx-9.0)
',$$P ,ggs. `$$b: Kernel: 6.1.0-9-amd64
`d$$' ,$P"' . $$$ Uptime: 42 mins
$$P d$' , $$P Packages: 711 (dpkg)
$$: $$. - ,d$$' Shell: bash 5.2.15
$$; Y$b._ _,d$P' Resolution: 1280x800
Y$$. `.`"Y$$$$P"' Terminal: /dev/pts/0
`$$b "-.__ CPU: AMD Ryzen 5 1600 (8) @ 3.199GHz
`Y$$ GPU: 00:02.0 Vendor 1234 Device 1111
`Y$$. Memory: 507MiB / 1482MiB
`$$b.
`Y$$b.
`"Y$b._
`"""

网卡混杂模式

首先需要开启 Debian 上的网卡混杂模式，这里我的网卡是 ens18

Copy
root@Debian:~# ip addr
2: ens18: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 92:64:15:a8:91:63 brd ff:ff:ff:ff:ff:ff
altname enp0s18
inet 10.0.0.1/24 brd 10.0.0.255 scope global ens18
valid_lft forever preferred_lft forever
inet6 fd61:e296:244b:0:9064:15ff:fea8:9163/64 scope global dynamic mngtmpaddr
valid_lft forever preferred_lft forever
inet6 2408:8256:c84:9a4c:XXXX:XXXX::1/64 scope global dynamic mngtmpaddr
valid_lft 189872sec preferred_lft 103472sec
inet6 fe80::9064:15ff:fea8:9163/64 scope link
valid_lft forever preferred_lft forever

将 ens18 网卡设为混杂模式，可以让容器直接到局域网的步骤

Copy
sudo ip link set ens18 promisc on

创建网卡

这里创建网卡 subnet=10.0.0.0/24 和 gateway=10.0.0.4 需要按照自己的网络环境配置

如果你的网段是 192.168.1.4 就是对应的 subnet=192.168.1.0/24 子网掩码

gateway=10.0.0.4 就是你的主路由器地址，设置为网关

Copy
docker network create -d macvlan --subnet=10.0.0.0/24 --gateway=10.0.0.4 -o parent=enp0s18 maclan

设置完查看一下 docker network ls 是不是配置好了

Copy
root@Debian:~# docker network ls
NETWORK ID NAME DRIVER SCOPE
d9dd5df71c88 1panel-network bridge local
70a316d0b976 host host local
779d06aebc6f maclan macvlan local

编排

在 1Panel 容器 - 编排 - 创建编排

文件夹填 CatWrt，将以下内容填入编辑器里面，随后点击确认

这里用的 CatWrt-rootfs 是最新的 v24.9 版本，并且开启了加载 tun 模块

Copy
version: '3.8'

services:
catwrt:
image: miaoer/catwrt:latest
container_name: CatWrt
restart: always
privileged: true
volumes:
- /lib/modules:/lib/modules:ro
- /dev:/dev
command: /sbin/init

cap_add:
- NET_ADMIN
- SYS_MODULE
devices:
- /dev/net/tun
networks:
- maclan

networks:
maclan:
external: true

博主这里忘记了有没有主动加载 tun 模块，如果没有加载 tun 请 sudo modprobe tun 并且查看 lsmod | grep tun 有没有被成功加载

Copy
root@Debian:~# sudo modprobe tun
root@Debian:~# lsmod | grep tun
tun 61440 4
root@Debian:~#

设置 CatWrt

首先在 Debian 上连接 CatWrt 终端

Copy
docker exec -it CatWrt /bin/bash

进入 CatWrt 选择使用 Cattools 帮助我们修改 IP 地址当然你也可以使用网络向导正确填写你的信息

Copy
cattools

1

注：这里 CatWrt 没联网指定网关所以这里，会重试多次获取最新版本的 Cattools 千万不要手贱中断！

Copy
root@Debian:~# docker exec -it CatWrt /bin/bash
bash-5.2# cattools
Please wait for the script to be updated.
Attempt 1 failed. Retrying...
Attempt 2 failed. Retrying...
Attempt 3 failed. Retrying...
Unable to download the latest version, continue to use the current offline version.

----------------------------------------------------------
CatTools
https://github.com/miaoermua/cattools
----------------------------------------------------------
1. SetIP - 设置 IP
2. Network_Wizard - 网络向导
3. Apply_repo - 软件源配置
4. Diagnostics - 网络诊断
5. Debug - 抓取日志
6. Catwrt_update - 检查更新
7. Sysupgrade - 系统更新
8. Restore - 恢复软件包
9. Utilities(more) - 实用工具
0. Exit - 退出
----------------------------------------------------------
请输入数字并回车(Please enter your choice): 1
Please enter the IP Addr and press Enter /// 请输入 IP (默认为 192.168.1.4): 10.0.0.233
默认 IP 已设置为 10.0.0.233

如果你要安装插件也可以使用 Cattools 里面的 软件源配置

结束

CatWrt-rootfs 还是有很多插件或者软件需要特殊设置或者无法使用，我也是第一次搞这个 rootfs 还没用上，有什么问题可以在评论区交流一下

参考：博客园：双网口主机通过 docker 安装 openwrt 实现软路由功能

此文由 Mix Space 同步更新至 xLog
原始链接为 https://www.miaoer.net/posts/network/1panel-deploy-catwrt-rootfs