侧边栏壁纸
博主头像
如普·Blog博主等级

行动起来,活在当下

  • 累计撰写 18 篇文章
  • 累计创建 1 个标签
  • 累计收到 10 条评论

目 录CONTENT

文章目录

Docker安装openwrt主路由

搞机小铺
2023-10-21 / 0 评论 / 0 点赞 / 465 阅读 / 6892 字

类似 x2或者树莓派 等 一个有线接口,一个无线接口的 设备

设定参数如下:

  1. 主机有线接口所在网段为 192.168.x.0/24
  2. 主机热点网段为 192.168.y.0/24 openwrt lan口ip为 192.168.y.1

操作步骤如下

  • 将eth0和wlan0打开混杂模式
# 建议开机执行 添加到 /etc/rc.local
ip link set eth0 promisc on
ip link set wlan0 promisc on
  • 由于docker容器存在多个网络,需要先安装docker-compose

安装 hostapd

apt install hostapd

此时应该可以搜到名为 ARMBIAN 密码为 12345678 的热点,但无法连接

导入openwrt的docker镜像

wget https://downloads.openwrt.org/releases/22.03.5/targets/armvirt/64/openwrt-22.03.5-armvirt-64-default-rootfs.tar.gz
gunzip openwrt-22.03.5-armvirt-64-default-rootfs.tar.gz
docker import openwrt-22.03.5-armvirt-64-default-rootfs.tar openwrt:22.03.05

创建macvlan(将ip中的 x y 按参数设定中替换)

docker network create -d macvlan --subnet=192.168.x.0/24 --gateway=192.168.x.1 -o parent=eth0 openwrt_wan
docker network create -d macvlan -o parent=wlan0 openwrt_lan

启动容器

新增docker-compose.yml 文件

#docker-compose.yml
version: "3"

#network使用已创建的macvlan
networks:
  lan:
    external:
      name: openwrt_lan
  wan:
    external:
      name: openwrt_wan

services:
  openwrt:
    image: openwrt:22.03.05
    container_name: openwrt    
#    restart: always
#    volumes:
#      - /root/openwrt/config:/etc/config
#      - /root/openwrt/dnsmasq.conf:/etc/dnsmasq.conf
    networks:
      - lan #eth0
      - wan #eth1
#必须以特权模式启动      
    privileged: true
    command: /sbin/init
#在docker-compose.yml文件所在目录执行
docker-compose up -d

编辑配置文件

可以进入容器内编辑配置文件,但更建议将配置文件从容器内复制到主机,不仅更方便配置(nano比vi简单),而且重置容器不会丢失配置

#cp配置文件
docker cp openwrt:/etc/config /root/openwrt
docker cp openwrt:/etc/dnsmasq.conf /root/dnsmasq.conf

编辑 config/network (将ip中的 x y 按参数设定中替换)

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config interface 'wan'
        option proto 'dhcp'
        option device 'eth1'

config interface 'lan'
        option device 'eth0'
        option proto 'static'
        option netmask '255.255.255.0'
        option ipaddr '192.168.y.1'

重启容器

更新docker-compose.yml

#docker-compose.yml
version: "3"

#network使用已创建的macvlan
networks:
  lan:
    external:
      name: openwrt_lan
  wan:
    external:
      name: openwrt_wan

services:
  openwrt:
    image: openwrt:22.03.05
    container_name: openwrt    
#    restart: always
   volumes: # 使用容器外的配置
     - /root/openwrt/config:/etc/config
     - /root/openwrt/dnsmasq.conf:/etc/dnsmasq.conf
    networks:
      - lan
      - wan   
    privileged: true
    command: /sbin/init
docker-compose down
docker-compose up -d

此时应该可以成功连上热点,并访问通过192.168.y.1打开openwrt

额外:主机容器互通

按照上面流程主机(x2)是无法访问openwrt的,需要新建macvlan并设定好才能实现互通
建议完成上述步骤后使用以下脚本启动openwrt, 该脚本可以添加到rc.local开机执行

#!/bin/sh
#删除互通网桥 假定命名为 br-openwrt
#不删除启动openwrt可能出现设备忙的报错无法启动openwrt
#将ip中的 x y 按参数设定中替换
ip link del br-openwrt
#启动openwrt
docker start openwrt
#创建互通网桥 
ip link add br-openwrt link wlan0 type macvlan mode bridge
#将主机以 192.168.y.z 加入网桥
ip addr add 192.168.y.z dev br-openwrt
#启动网桥
ip link set br-openwrt up
#添加路由 访问openwrt(192.168.y.1)时的路由
ip route add 192.168.y.1 dev br-openwrt
0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区