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旁路由安装设置教程” 》 有 70 条评论

  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 提示命令有问题

      • 奇怪,我明明打了两个破折号,发出来就变成一个了,而且还不是正确的破折号,怪不得复制出来的命令不对,试一下打三个破折号,看看发出来是什么样的:docker run —restart always —name openwrt —d —network openwrt —privileged /sbin/init

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

  3. 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’

  4. 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

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

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

  7. 有人在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

  8. 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)。

      • 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

    • 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 里面查看到。希望能得到您的回复! 详细 祝您平安幸福

  9. 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 呢 谢谢

  10. 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 上网的,谢谢 希望你能帮助我

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

  12. 树莓派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

  13. 完整的操作命令
    “`
    sudo ip link set eth0 promisc on
    sudo docker network create -d macvlan –subnet 192.168.1.0/24 –gateway 192.168.1.1 -o parent=eth0 openwrt
    sudo docker run –restart always –name openwrt -d –network openwrt –ip 192.168.1.10 –privileged kiddin9_openwrt /sbin/init
    sudo docker exec -it openwrt /bin/bash

    vim /etc/config/network

    config interface ‘lan’
    option device ‘br-lan’
    option proto ‘static’
    option gateway ‘192.168.1.1’
    option ip6assign ’60’
    option ipaddr ‘192.168.1.10’
    option netmask ‘255.255.255.0’
    option peerdns ‘0’
    list dns ‘192.168.1.1’

    sudo /etc/init.d/network restart
    “`

  14. sha256sum: can’t open ‘/sys/class/block/mmcblk1/device/cid’: No such file or directory
    /bin/board_detect: /etc/board.d/02_network: line 273: arithmetic syntax error
    /bin/board_detect: /etc/board.d/02_network: line 229: arithmetic syntax error
    mount: mounting /dev/mmcblk2p1 on /mnt failed: Invalid argument

  15. 玩客云刷机armbian之后,用docker运行kwrt,里面passwall或者openclash路由器本机代理不起作用,只能是开启端口之后,在浏览器中搭配SwitchyOmega之类的插件使用,有谁知道这个怎么解决吗?

  16. openwrt.ai 在线如何定制24.10版本的固件,定制指定版本的固件的入口在哪?默认生成最新版本 25.12 可能不兼容,请支持历史版本的固件定制和生成,

发表回复