Docker版OpenWrt旁路由安装设置教程


本教程所使用环境 (debian 11 x86_64, root管理员, lan为eth0, ip段 10.0.0.x, 用于拨号的主路由IP:10.0.0.1 ,不要照抄命令,根据自己的实际情况做相应的调整)
打开网卡混杂模式
ip link set eth0 promisc on
创建网络
 
docker network create -d macvlan –subnet=10.0.0.0/24 –gateway=10.0.0.1 -o parent=eth0 openwrt
下载OPENWRT固件文件
下载 xxx-rootfs.tar.gz 格式的OPENWRT固件文件
 以X86 为例子: 下载地址 https://openwrt.ai/?target=x86%2F64&id=generic
加载镜像,创建并启动容器
docker import openwrt-x86-64-generic-rootfs.tar.gz kiddin9_openwrt
docker run –restart always –name openwrt kiddin9_openwrt -d –network openwrt –privileged /sbin/init
进入容器
 
docker exec -it openwrt sh
修改openwrt后台登录IP
 
本固件默认后台10.0.0.1, 假如我要修改为10.0.0.5
sed -i ‘s/10.0.0.1/10.0.0.5/’ /etc/config/network && /etc/init.d/network restart
用刚修改为的ip登录后台 密码 root
设置为旁路由模式

《“Docker版OpenWrt旁路由安装设置教程”》 有 50 条评论

  1. (win11 x86)为啥在创建容器的时候提示
    Failed to run image.Error invoking remote method ‘docker-run-container’:Error:(HTTP code 400)unexpected No command specified
    纯命令行的时候输入docker run –restart always –name openwrt kiddin9_openwrt -d –network openwrt –privileged /sbin/init 提示命令有问题

  2. 试了好几次,都失败在创建容器的时候了 ,折腾好久容器创建完成了,但是还是不显示openwrt后台登录IP,救救孩子吧!!

  3. 已经在raspberry 3b上进行了docker部署,旁路由替换了之前一直使用的sulinggg/openwrt:latest。

  4. docker exec -it openwrt bash
    进入容器后台
    修改网络
    vim /etc/config/network
    修改“lan”部分配置,需要结合你的网络ip设置
    config interface ‘lan’
    option proto ‘static’
    option ipaddr ‘192.168.123.100’
    option netmask ‘255.255.255.0’
    option ip6assign ’60’
    option gateway ‘192.168.123.1’
    option broadcast ‘192.168.123.255’
    option dns ‘192.168.123.1’

  5. 是不是缺少一步了,下载固件后怎么就加载了,存哪里啊?或者怎么导入dacker啊

  6. docker import openwrt-x86-64-generic-rootfs.tar.gz kiddin9_openwrt
    docker run –restart always –name openwrt -d –network myvlan –privileged 022a387e984a43922a7f596dd5ee63d24cf453e62e1e918bf8d2ae8a351c0eb5 /sbin/init
    docker exec -it openwrt bash

  7. docker run -d –restart always –name openwrt_77 –ip=192.168.31.77 –network br0 –privileged openwrt_77 /sbin/init

  8. 启动镜像那出错
    # docker run –restart always –name openwrt kiddin9_openwrt -d –network openwrt –privileged /sbin/init
    docker: invalid reference format.
    See ‘docker run –help’.

  9. 已经正常安装好openwrt了,但是有个问题,在docker内的openwrt开了bypass等梯子应用会没效果.

  10. 这教程的命令,经过验证么?
    root@Docker:/# docker run –restart always –name openwrt chyinzi_openwrt -d –network openwrt –privileged /sbin/init
    docker: invalid reference format.
    See ‘docker run –help’.

  11. 有人在RouterOS容器里旁路由使用吗?之前在7.4版本还能用,升级到7.8以后就不能用了,哪位大神指导一下
    之前是这么用的:
    1. 导入本地docker环境 cat openwrt.tar.gz | docker import – openwrt:latest
    2. 保存镜像 docker save -o /…/openwrt.tar openwrt
    3.上传openwrt.tar 镜像文件拖拽到RouterOS > File List
    4. 添加镜像到容器
    /container/add file=openwrt.tar interface=veth1 hostname=OpenWrt cmd=/sbin/init root-dir=container/openwrt

  12. WSL2下直接运行openwrt方法记录:https://zhuanlan.zhihu.com/p/499799037

    能不能出一个wsl2版本的镜像,试验了一下,openwrt-x86-64-generic-rootfs.tar.gz可以被运行
    但是不能启动web,貌似有很多配置文件需要修改,实在不太清楚这个封装版本的设计逻辑。

    • 使用rootfs.tar.gz即可,具体步骤看这里https://zhuanlan.zhihu.com/p/652370893。有各种错误是因为wsl2有自己的Init流程,而OpenWrt需要从/sbin/init开始,然后启动procd (pid 1)。

  13. armbian用这个命令启动成功:
    docker run -d –restart=always –name=openwrt –network=openwrt –privileged=true kiddin9_openwrt /sbin/init

  14. 树莓派4B上导入docker,容器无法正常分配到ip,改配置也没有效果,不知道什么原因。用sulinggg/openwrt:rpi4镜像就没问题。

      • ulinggg/openwrt:rpi4是基于Openwrt 19.x, 这里的是23.x, 我用时候发现/etc/config/network配置有点小小不同,用下面的这个试下:
        config interface ‘loopback’
        option device ‘lo’
        option proto ‘static’
        option ipaddr ‘127.0.0.1’
        option netmask ‘255.0.0.0’

        config globals ‘globals’

        config device
        option name ‘br-lan’
        option type ‘bridge’
        list ports ‘eth0’

        config interface ‘lan’
        option device ‘eth0’
        option proto ‘static’
        option ipaddr ‘192.168.8.2’
        option gateway ‘192.168.8.1’
        option netmask ‘255.255.255.0’
        option ip6assign ’60’
        list dns ‘127.0.0.1

      • 在unraid上的docker上部署总是无法访问后台,docker管理页面看不到端口转发的ip,换成别的镜像就行

  15. 请问在同一个 docker里, 其他容器怎么连接到 macvlan 网络模式的 openwrt ,镜像数据通信,比如ping ,@!

    • docker内容器一般走的是host的网络(docker0),所以只要Host跟Openwrt Container互通,其他容器就可以用openwrt这个做路由上网了。
      与宿主机互通:
      sudo ip link set eth0 promisc on
      sudo ip link add my_macvlan link eth0 type macvlan mode bridge
      sudo ip addr add 192.168.8.6 dev my_macvlan
      sudo ip link set my_macvlan up
      sudo ip route add 192.168.8.2 dev my_macvlan
      宿主机网关及DNS设置为openwrt:
      sudo ip route add default via 198.168.8.2 dev my_macvlan metric 1
      resolv.conf设置nameserver 192.168.8.2

      以上IP地址按实际情况替换。
      重启后以上设置会丢失,自己查询持久化方案.

      • 你好哥哥, 可以给我一个详细的教程访问吗! 我opwrt 容器的ip 是 192.168.1.89 。 我 另外一个需要连接opwrt 上网的容器是 192.168.1.88,也就是宿主机的ip , 假如 我只需要 容器名字为 jf 的 代理ip 到 opwrt 上网 ,该怎么弄, 因为opwrt 是 macvlan 网络,我连接不到他 在容器logs 里面查看到。希望能得到您的回复! 详细 祝您平安幸福

  16. sudo ip addr add 192.168.8.6 dev my_macvlan 请问这个 192.168.8.6 是什么ip 呢? 代表什么 我不是很明白, 不好意思, sudo ip route add 192.168.8.2 dev my_macvlan这个 192.168.8.2 是什么ip 呢 谢谢

  17. environment:
    – TZ=Asia/Shanghai
    – ALL_PROXY=http://192.168.1.89:7890
    – NO_PROXY=http://192.168.1.89:7890
    – HTTP_PROXY=http://192.168.1.89:7890
    – JELLYFIN_PublishedServerUrl=192.168.1.88 #optional 我是在 单个容器里面 添加 代理 hppt 上网的,谢谢 希望你能帮助我

  18. docker run -d –restart=always –name=openwrt -network=openwrt -privileged=true kiddin9_openwrt /sbin/init
    docker: invalid reference format.
    See ‘docker run –help’.
    一直报错

  19. 树莓派4B启动容器日志显示:
    Failed to find the folder holding the modules
    Failed to find the folder holding the modules
    Failed to find the folder holding the modules
    Failed to find the folder holding the modules

    • 我也是玩客云armbian,我成功安装了这里的docker openwrt. 教程有点简单,最后docker run有错误,docker run -d –restart=always –name=openwrt –network=openwrt –privileged kiddin9_openwrt /sbin/init

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注