PVE + OpenWRT 实现旁路由

2024-02-17 09:04
文章标签 实现 openwrt 旁路 pve

本文主要是介绍PVE + OpenWRT 实现旁路由,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

最近想玩下软路由,了解了下各种软路由系统之后选择了openwrt,这个是基于linux的,而且可以安装docker之类的各种有用的插件,但是我手头暂时没有机器可以做软路由,先使用PVE虚拟一台研究,由于openwrt占用的资源很少 1G内存就够了,这篇文章的前提是pve已经安装好了

1.安装openwrt

openwrt的镜像是img格式的,但是pve并不支持img,我们需要将img转成qcow的格式

我使用了img2kvm脚本来进行转换

./img2kvm /dev/pve/openwrt.img 100 /var/lib/vz/template/iso/vm-100-disk-1

命令解释:openwrt.img后面的100 对应的是虚拟机编号id 最后的vm-100-disk-1 中的100也是一样的,disk-1的1代表这个虚拟机第一个盘

  1. 这里说明一下 /dev/pve这是上传镜像之后会在这里目录里面 (对应pve默认的local存储池)
  2. /var/lib/vz/template/iso 这个路径是pve虚拟机的磁盘默认存储目录 (对应pve默认的local-lvm存储池)
  3. /var/lib/vz/template/iso 里面创建的符合pve磁盘命名规范的可以识别到

登录pve,创建一个openwrt虚拟机,先不使用任何介质引导

创建完成之后点虚拟机,点 Hardware 也就是硬件,看到有个为分配的磁盘

点击添加 Add 直接确定,然后去其他Option 其他中选择 Boot Order 启动引导项中

将 local-lvm:vm-101-disk-1,iothread=1,size=520M 这个盘移动到第一位,并且勾选启用

开启虚拟机即可

我们在创建openwrt的时候给了10G的磁盘,但是我们使用了openwrt的镜像进行引导,实际上openwrt并没有安装在10G的盘,我们可以直接克隆下

root@OpenWrt:~# fdisk -l
Disk /dev/loop0: 104.44 MiB, 109510656 bytes, 213888 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdb: 520 MiB, 545259520 bytes, 1064960 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x968806c2Device     Boot Start     End Sectors  Size Id Type
/dev/sdb1  *      512   33279   32768   16M 83 Linux
/dev/sdb2       33792 1057791 1024000  500M 83 LinuxDisk /dev/sda: 10 GiB, 10737418240 bytes, 20971520 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

可以看到 /dev/sda 是我们最开始给的10G盘

/deb/sdb就是我们引导的盘

使用dd命令克隆 sdb到sda

dd if=/dev/sdb of=/dev/sda
在pve中虚拟机引导项中取消最开始的引导,将10g的盘放到第一项

即可通过10g的盘引导进入openwrt系统

2.配置OpenWRT 

编辑网络配置 vim /etc/config/network 

config interface 'loopback'option ifname 'lo'option proto 'static'option ipaddr '127.0.0.1'option netmask '255.0.0.0'config interface 'lan'option ifname 'eth0'option proto 'static'option netmask '255.255.255.0'option delegate '0'option gateway '192.168.3.1'option dns '192.168.3.1'option ipaddr '192.168.3.100'config interface 'wan'option ifname 'eth1'option proto 'dhcp'option metric '64'option delegate '0'config interface 'wan6'option proto 'dhcpv6'option ifname 'eth1'option delegate '0'option reqaddress 'none'option reqprefix 'no'config interface 'vpn0'option ifname 'tun0'option proto 'none'config interface 'ipsec_server'option ifname 'ipsec0'option device 'ipsec0'option proto 'static'option ipaddr '192.168.100.1'option netmask '255.255.255.0'config interface 'docker'option ifname 'docker0'option proto 'none'option auto '0'config deviceoption type 'bridge'option name 'docker0'config interface 'lan2'option proto 'static'option ifname 'br-lan.22'

我这里把lan 口网卡 配置ip为192.168.3.100 这个是openwrt的ip地址了

这个需要按照家庭中网络的网段来配置,也就是你openwrt接入到了那个网段下

浏览器输入 192.168.3.100 即可进入openwrt管理界面

账号默认为:root

密码默认为: password

进入之后点击左侧网络,接口

修改lan接口 也是eth0  

网关指向主路由的网关 192.168.3.1 

使用自定义的 DNS 服务器 192.168.3.1

我这边主路由的是192.168.3.1 这里根据自己的环境来配置

DHCP 忽略此接口,因为主路由就有dhcp了如果在加一个dhcp的话很容易出问题

高级设置基本不变,用ipv6就勾选使用内置的 IPv6 管理

物理设置去掉桥接接口 ,接口选 以太网适配器: "eth0" (lan)

防火墙设置不变

然后点网络,防火墙 将lan口

IP 动态伪装MSS 钳制

全部勾选

将设备的网关指向软路由即可使用软路由上网

这篇关于PVE + OpenWRT 实现旁路由的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/717302

相关文章

Python实现终端清屏的几种方式详解

《Python实现终端清屏的几种方式详解》在使用Python进行终端交互式编程时,我们经常需要清空当前终端屏幕的内容,本文为大家整理了几种常见的实现方法,有需要的小伙伴可以参考下... 目录方法一:使用 `os` 模块调用系统命令方法二:使用 `subprocess` 模块执行命令方法三:打印多个换行符模拟

SpringBoot+EasyPOI轻松实现Excel和Word导出PDF

《SpringBoot+EasyPOI轻松实现Excel和Word导出PDF》在企业级开发中,将Excel和Word文档导出为PDF是常见需求,本文将结合​​EasyPOI和​​Aspose系列工具实... 目录一、环境准备与依赖配置1.1 方案选型1.2 依赖配置(商业库方案)二、Excel 导出 PDF

Python实现MQTT通信的示例代码

《Python实现MQTT通信的示例代码》本文主要介绍了Python实现MQTT通信的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 安装paho-mqtt库‌2. 搭建MQTT代理服务器(Broker)‌‌3. pytho

使用zip4j实现Java中的ZIP文件加密压缩的操作方法

《使用zip4j实现Java中的ZIP文件加密压缩的操作方法》本文介绍如何通过Maven集成zip4j1.3.2库创建带密码保护的ZIP文件,涵盖依赖配置、代码示例及加密原理,确保数据安全性,感兴趣的... 目录1. zip4j库介绍和版本1.1 zip4j库概述1.2 zip4j的版本演变1.3 zip4

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

Spring StateMachine实现状态机使用示例详解

《SpringStateMachine实现状态机使用示例详解》本文介绍SpringStateMachine实现状态机的步骤,包括依赖导入、枚举定义、状态转移规则配置、上下文管理及服务调用示例,重点解... 目录什么是状态机使用示例什么是状态机状态机是计算机科学中的​​核心建模工具​​,用于描述对象在其生命

Spring Boot 结合 WxJava 实现文章上传微信公众号草稿箱与群发

《SpringBoot结合WxJava实现文章上传微信公众号草稿箱与群发》本文将详细介绍如何使用SpringBoot框架结合WxJava开发工具包,实现文章上传到微信公众号草稿箱以及群发功能,... 目录一、项目环境准备1.1 开发环境1.2 微信公众号准备二、Spring Boot 项目搭建2.1 创建

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并