收起左侧

Docker 部署Openwrt(桥接网络学习版)

4
回复
378
查看
[ 复制链接 ]

0

主题

6

回帖

0

牛值

江湖小虾

文笔不好lol

用到的镜像是zzsrv/OpenWrt,原版教程是使用主机模式网络设置,他不能与飞牛(宿主机)网络互访,为了解决这个问题,使用 Docker 默认桥接网络部署的op,桥接宿主机网络进行互联。

先看zzsrv/OpenWrt镜像原教程(进入SSH安装)

使用主机模式网络

1、打开网卡混杂模式,其中eth0根据ifconfig命令找到自己的本地网卡名称替换

sudo ip link set enp1s0 promisc on

2、创建名称为macvlan的虚拟网卡,并指定网关gateway、子网网段subnet、虚拟网卡的真实父级网卡parent(第一步中的本地网卡名称)

docker network create -d macvlan --subnet=192.168.0.0/24 --gateway=192.168.0.1 -o parent=enp1s0 macnet

3、查看虚拟网卡是否创建成功,成功的话能看到名称为“macnet”的虚拟网卡

docker network ls

4、拉取镜像,可以通过阿里云镜像提升镜像拉取速度

docker pull registry.cn-hangzhou.aliyuncs.com/zzsrv/openwrt:latest

5、创建容器并后台运行

docker run --restart always --name openwrt -d --network macnet --privileged zzsrv/openwrt /sbin/init

6、进入容器内部环境

docker exec -it openwrt bash

7、根据自己实际情况修改网络配置,修改完成后保存配置

vi /etc/config/network

8、退出容器内部环境,在宿主机环境执行重启容器命令

docker container restart openwrt

使用 Docker 默认桥接网络

先在Docker的镜像仓库下载zzsrv/OpenWrt镜像

图片1.png

仓库下载不了的可以用上面的命令拉取:

#SSH 拉取镜像命令
docker pull registry.cn-hangzhou.aliyuncs.com/zzsrv/openwrt:latest

1.不在Docker里面部署,打开SSH 链接你的飞牛,

用下面的命令部署(SSH就不截图了,不懂的找度度。。)

要ROOT权限,sudo -i进入再运行代码

sudo docker run -d --name=openwrt \
--restart=always \
--privileged \
--network=bridge \  # 强制使用 Docker 默认桥接网络
-p 8081:80 \  #为了后面可以访问op,8081端口映射可以改自己想要的
-v /lib/modules:/lib/modules \
zzsrv/openwrt /sbin/init

部署成功会显示一串数字字母,如图:

图片2.png

  1. 进入容器内部环境(与上面的第六、七步一样)
#1.进入容器OP内部环境
docker exec -it openwrt bash

#2.输入以下代码进入OP修改网络配置
vi /etc/config/network

修改参考下面:

config interface 'lan'
    option proto 'static'
    option netmask '255.255.0.0'    # 修改为 255.255.0.0,匹配 Docker 桥接网络
    option ip6assign '60'
    option ipaddr '192.168.0.8'     # 删除旧 IP
    option ipaddr '172.17.0.2'      # 设置为 Docker 桥接网络内的 IP
    option gateway '192.168.0.1'    # 删除旧网关
    option gateway '172.17.0.1'     # 设置为 Docker 桥接网关
    option dns '192.168.0.1'       # 删除旧 DNS
  option dns '8.8.8.8 114.114.114.114'  # 使用公共 DNS 或者你的网关地址、本地网络运营商的DNS均可
    option device 'br-lan'

注:方向键移动到需要修改的地方,按i 开始修改,修改完Esc 退出修改,键盘输入:wq 退出。

3.重启网络服务

#在容器内执行,重启OP网络配置
/etc/init.d/network restart

4.按ctrl+p+q退出容器内部环境,在宿主机环境执行重启op

docker container restart openwrt

有重启OP失败的,可以在飞牛nas界面,打开Docker里面重启或者关机,再打开。

这样就可以用飞牛的IP访问OP了 示例:http://192.168.1.111:8081

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

3

主题

96

回帖

0

牛值

初出茅庐

看你的教程,最后效果是不是这样?

飞牛宿主机 192.168.1.111 使用端口8081访问openwrt

openwrt ip是172.17.0.2 255.255.0.0 网关172.17.0.1

192.168.1.x 和 172.17.0.x 可以互ping互通?

按上面的方式,可以在SSH里面宿主机ping容器,在容器里面可以ping通宿主机~  详情 回复
5 天前

0

主题

6

回帖

0

牛值

江湖小虾

5 天前 楼主 显示全部楼层
yyywd 发表于 2025-6-11 09:37
看你的教程,最后效果是不是这样?
飞牛宿主机 192.168.1.111  使用端口8081访问openwrt
openwrt ip是172.1 ...

按上面的方式,可以在SSH里面宿主机ping容器,在容器里面可以ping通宿主机~

0

主题

1

回帖

0

牛值

江湖小虾

那么 宿主机网络下的A主机192.168.1.9 如何设置网关(192?|172?) 才能使用 容器OP为旁路由

0

主题

6

回帖

0

牛值

江湖小虾

前天 00:33 楼主 显示全部楼层

容器内的IP是走172

sudo docker run -d --name=openwrt \
--restart=always \
--privileged \
--network=bridge \  # 强制使用 Docker 默认桥接网络
-p 8081:80 \  #为了后面可以访问op,8081端口映射可以改自己想要的
-v /lib/modules:/lib/modules \
zzsrv/openwrt /sbin/init

--network=bridge \

这段就是强制使用了Docker的bridge桥接网络~

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则