ubuntu使用docker安装openwrt

系统:ubuntu24.04
架构:x86

1. 安装docker

1.1 离线安装

docker下载地址
根据系统版本,依次下载最新的三个关于docker的软件包

  • container.io(注意后缀版本顺序)
  • docker-ce-cli
  • docker-ce

然后再ubuntu系统中依次按顺序安装这三个包

sudo dpkg -i container.io*.deb
sudo dpkg -i docker-ce-cli*.deb
sudo dpkg -i docker-ce*.deb

1.2 在线安装

 sudo apt install containerd.io docker-ce-cli docker-ce

2. 配置物理机网络

2.1 查看物理机网卡信息

ip a

如下为物理机的网卡信息

1: lo: <LOOPBACK,UP,LOWER_UP> ************
2: enp1s0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> **********
3: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,PROMISC,UP> ***************
4: wlo1: <BROADCAST,MULTICAST,UP,LOWER_UP> ************
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> ****************

为了方便配置使用以及后续登录openwrt后台管理系统,你需要配置网卡信息

2.2 网络配置

开启网口的混杂模式(临时)

ip link set enp1s0 promisc on
ip link set enp2s0 promisc on

开启IP转发功能

# 修改配置文件,解除net.ipv4.ip_forward=1的注释
vim /etc/sysctl.conf 
# net.ipv4.ip_forward = 1

2.3 netplan网卡设置

然后我们做以下自定义规定(读者可自行设计)

  • enp1s0:有线网卡1,我们规定这个网口为Wan口,用于连接互联网
  • enp2s0:有线网卡2,我们规定这个网口为Lan口,供内部网络的有线设备连接
  • wlo1: 无线网卡1,我们规定这个网口为Lan口,供内部网络的无线设备连接
  • 其他网卡:…
# ubuntu 20.04
sudo vim /etc/netplan/00-installer-config.yaml
# ubuntu 24.04
sudo vim /etc/netplan/50-cloud-init.yaml
# 其他系统请参考其他资料

配置如下:其中Lan口配置为静态IP,Wan配置为DHCP动态获取IP

network:ethernets:enp1s0:dhcp4: true   # 启用DHCPdhcp6: false# addresses: [192.168.1.10/24]optional: trueenp2s0:dhcp4: falsedhcp6: falseaddresses: [192.168.2.1/24] #设置静态IPoptional: trueversion: 2

配置完物理机的ip地址后,你需要使用其他PC电脑连接物理机的Lan口,使用远程ssh(vscode-remote、powershell、xshell等)完成后续的配置

3. 配置docker

3.1 配置虚拟网络接口

在Lan口网卡enp2s0上附加网络接口netLan,指定网段192.168.2.0/24

docker network create -d macvlan --subnet=192.168.2.0/24 -o parent=enp2s0 netLan

查看已添加的docker网络接口

docker network ls

如果想要修改子网段,需要先删除该网络后再重新添加,并且确保没有容器使用该网络

docker network rm netLan

3.2 拉取openwrt镜像

# 拉取镜像
docker pull registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64
# 查看所有镜像列表
docker images

若后续发生问题,可重新使用该镜像生成openwrt容器

3.3 启动openwrt容器

注意:请勿将enp2s0和netLan设置为相同静态IP,否则无法区分物理机和docker容器的ip地址

docker run --restart always --name openwrt -d --network netLan --ip 192.168.2.2 --privileged registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64 /sbin/init
  • docker run
    启动Docker容器的命令
  • –restart always
    总是重新启动
  • –name openwrt
    给容器命名为openwrt
  • -d
    表示容器将在后台(守护进程模式)运行
  • –network netLan
    指定容器使用的网卡
  • –privileged
    这个选项使容器获得扩展权限,可以访问宿主机的某些设备,类似于在物理机上运行
  • –ip 192.168.2.1
    为容器指定一个静态IP地址
  • registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64
    运行的镜像名称,如果本地没有则会从在线拉取
  • /sbin/init
    容器内要执行的命令,/sbin/init 是系统初始化的入口点,它会启动所有必要的系统进程和服务

3.4 附加网络

# 附加Wan口网络
docker network create -d macvlan --subnet=192.168.1.0/24 -o parent=enp1s0 netWan
docker network connect netWan openwrt

3.5 *报错

若openwrt启动失败、发生报错等问题,可重新进行配置

# 查看所有容器信息
sudo docker ps -a
# 停止容器
docker stop [容器名称/容器ID]
# 删除容器
docker rm [容器名称/容器ID]
# 删除网络
docker network rm netWan
docker network rm netLan

4. 配置openwrt容器

# 进入容器
docker exec -it openwrt /bin/sh
# 重置root密码(openwrt)
passwd
# 配置网卡信息(openwrt)
vi /etc/config/network

网卡配置需要修改的部分如下

config interface 'lan'option type 'bridge'option ifname 'eth0'option proto 'static'option netmask '255.255.255.0'option ip6assign '60'option ipaddr '192.168.2.2'option gateway '192.168.2.1'  option dns '192.168.2.1'

重启网络服务

# 重启网络服务(openwrt)
/etc/init.d/network restart

配置完后,个人PC电脑应当连接到物理机的Lan网口,使用浏览器访问openwrt的ip地址192.168.2.2,即可进入到openwrt的管理界面

5. openwrt系统配置

5.1 配置wan口

添加wan口
在这里插入图片描述

设置为由DHCP客户端,从上一级路由器中获取IP
在这里插入图片描述

5.2 配置lan口

设置Lan口子网
在这里插入图片描述

拉到最下面,取消《忽略此接口的选项》,即开启DHCP,这样Lan口下的设备才能获取到IP地址,点击保存&应用
在这里插入图片描述

6. 参考资料

[1] Ubuntu通过Docker部署OpenWRT
[2] 在docker中搭建openwrt软路由系统,实现多网口以及主路由功能

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25259.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【召回第一篇】召回方法综述

各个网站上找的各位大神的优秀回答&#xff0c;记录再此。 首先是石塔西大佬的回答&#xff1a;工业界推荐系统中有哪些召回策略&#xff1f; 万变不离其宗&#xff1a;用统一框架理解向量化召回前言常读我的文章的同学会注意到&#xff0c;我一直强调、推崇&#xff0c;不要…

多种策略提升线上 tensorflow 模型推理速度

前言 本文以最常见的模型 Bi-LSTM-CRF 为例&#xff0c;总结了在实际工作中能有效提升在 CPU/GPU 上的推理速度的若干方法&#xff0c;包括优化模型结构&#xff0c;优化超参数&#xff0c;使用 onnx 框架等。当然如果你有充足的 GPU &#xff0c;结合以上方法提升推理速度的效…

真空衰变,真正的宇宙级灾难,它到底有多可怕?

真空衰变&#xff0c;真正的宇宙级灾难&#xff0c;它到底有多可怕&#xff1f; 真空衰变 真空衰变&#xff08;Vacuum decay&#xff09;是物理学家根据量子场论推测出的一种宇宙中可能会发生的现象&#xff0c;这种现象被称为真正的宇宙级灾难&#xff0c;它到底有多可怕呢…

前端 Vue 操作文件方法(导出下载、图片压缩、文件上传和转换)

一、前言 本文对前端 Vue 项目开发过程中&#xff0c;经常遇到要对文件做一些相关操作&#xff0c;比如&#xff1a;文件导出下载、文件上传、图片压缩、文件转换等一些处理方法进行归纳整理&#xff0c;方便后续查阅和复用。 二、具体内容 1、后端的文件导出接口&#xff0c;…

【报文数据流中的反压处理】

报文数据流中的反压处理 1 带存储体的反压1.1 原理图1.2 Demo 尤其是在NP芯片中&#xff0c;经常涉及到报文的数据流处理&#xff1b;为了防止数据丢失&#xff0c;和各模块的流水处理&#xff1b;因此需要到反压机制&#xff1b; 反压机制目前接触到的有两种&#xff1a;一是基…

【深度学习】目标检测,Faster-RCNN算法训练,使用mmdetection训练

文章目录 资料环境数据测试 资料 https://mmdetection.readthedocs.io/zh-cn/latest/user_guides/config.html 环境 Dockerfile ARG PYTORCH"1.9.0" ARG CUDA"11.1" ARG CUDNN"8"FROM pytorch/pytorch:${PYTORCH}-cuda${CUDA}-cudnn${CUDNN}…

使用 Scapy 库编写 TCP 劫持攻击脚本

一、介绍 TCP劫持攻击&#xff08;TCP Hijacking&#xff09;&#xff0c;也称为会话劫持&#xff0c;是一种攻击方式&#xff0c;攻击者在合法用户与服务器之间的通信过程中插入或劫持数据包&#xff0c;从而控制通信会话。通过TCP劫持&#xff0c;攻击者可以获取敏感信息、执…

mysql 更改数据存储目录

先停止 mysql &#xff1a;sudo systemctl start/stop mysql 新建新的目录&#xff0c; 比如 /mnt/data/systemdata/mysql/mysql_data sudo chown -R mysql:mysql /mnt/data/sysdata/mysql/mysql_data sudo chmod -R 750 /mnt/data/sysdata/mysql/mysql_data 更改mysql.cnf…

2024高考作文-ChatGPT完成答卷,邀请大家来打分

高考&#xff0c;愿你脑洞大开&#xff0c;知识点全都扎根脑海&#xff1b;考试时手感倍儿棒&#xff0c;答题如行云流水&#xff1b;成绩公布时&#xff0c;笑容如春风拂面&#xff0c;心情如阳光普照&#xff01;高考加油&#xff0c;你一定行&#xff01; 新课标I卷 试题内…

“深入探讨Java中的对象拷贝:浅拷贝与深拷贝的差异与应用“

前言&#xff1a;在Java编程中&#xff0c;深拷贝&#xff08;Deep Copy&#xff09;与浅拷贝&#xff08;Shallow Copy&#xff09;是两个非常重要的概念。它们涉及到对象在内存中的复制方式&#xff0c;对于理解对象的引用、内存管理以及数据安全都至关重要。 ✨✨✨这里是秋…

多粒度特征融合(细粒度图像分类)

多粒度特征融合&#xff08;细粒度图像分类&#xff09; 摘要Abstract1. 多粒度特征融合1.1 文献摘要1.2 研究背景1.3 创新点1.4 模型方法1.4.1 Swin-Transformer1.4.2 多粒度特征融合模块1.4.3 自注意力1.4.4 通道注意力1.4.5 图卷积网络1.4.6 基于Vision-Transformer的两阶段…

Rust 实战丨SSE(Server-Sent Events)

&#x1f4cc; SSE&#xff08;Server-Sent Events&#xff09;是一种允许服务器向客户端浏览器推送信息的技术。它是 HTML5 的一部分&#xff0c;专门用于建立一个单向的从服务器到客户端的通信连接。SSE的使用场景非常广泛&#xff0c;包括实时消息推送、实时通知更新等。 S…

数据结构笔记 3 串 数组 广义表

以下了解即可&#xff0c;暂时没发现有什么考点 参考&#xff1a; 【数据结构】——多维数组和广义表_数据结构loc-CSDN博客 相对应的题目&#xff1a; 他这个数组不是从0开始的&#xff0c;是从1开始的&#xff0c;所以为了配合公式要减1 下面这道题又不一样&#xff0c;它是…

【python深度学习】——torch.einsum|torch.bmm

【python深度学习】——torch.einsum|torch.bmm 1. 基本用法与示例2. torch.bmm 1. 基本用法与示例 基本用法: torch.einsum(equation, *operands)equation: 一个字符串&#xff0c;定义了张量操作的模式。 使用逗号来分隔输入张量的索引&#xff0c;然后是一个箭头&#xff…

linux中dd命令以及如何测试读写速度

dd命令详解 dd命令是一个在Unix和类Unix系统中非常常用的命令行工具&#xff0c;它主要用于复制文件和转换文件数据。下面我会详细介绍一些dd命令的常见用法和功能&#xff1a; 基本语法 dd命令的基本语法如下&#xff1a; bash Copy Code dd [option]...主要选项和参数 if…

Data Mining2 复习笔记6 - Optimization Hyperparameter Tuning

6. Optimization & Hyperparameter Tuning Why Hyperparameter Tuning? Many learning algorithms for classification, regression, … Many of those have hyperparameters: k and distance function for k nearest neighbors, splitting and pruning options in decis…

力扣1712.将数组分成三个子数组的方案数

力扣1712.将数组分成三个子数组的方案数 确定左边界的值 然后二分求右边界的范围 右边界处的前缀和满足 2*s[i] < s[r] < (s[n] s[i]) / 2 int s[100010];const int N 1e97;class Solution {public:int waysToSplit(vector<int>& nums) {int n nums.siz…

Mac清洁神器CleanMyMac2024一键轻松解决电脑垃圾问题

【CleanMyMac】苹果mac电脑垃圾清理软件 大家好&#xff01;今天我要给大家种草一个超级好用的苹果mac电脑垃圾清理软件&#xff0c;那就是 CleanMyMac。相信很多人都遇到过电脑运行速度变慢、存储空间不足的问题&#xff0c;而这款软件就是解决这些问题的救星&#xff01;让我…

20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题

20240605解决飞凌的OK3588-C的核心板刷机原厂buildroot不能连接ADB的问题 2024/6/5 13:53 rootrootrootroot-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh --help rootrootrootroot-ThinkBook-16-G5-IRH:~/repo_RK3588_Buildroot20240508$ ./build.sh lun…

基于I2C协议的OLED显示(利用U82G库)

目录 一、I2C协议的基本原理和时序协议I2C通信协议的原理I2C时序基本单元I2C时序 二、建立工程RCC配置TIM1配置时钟树配置工程配置 三、U8g2移植精简u8g2_d_setup.c精简u8g2_d_memory.c编写移植函数stm32_u8g2.hstm32_u8g2.c 四、实验1.U82G的demo例程2.显示网名昵称中文取模步…