基于 PVE 搭建 OPENWRT


前置准备

  1. OpenWrt 系统镜像。为了扩容方便,选择使用 Ext4 分区的 generic-ext4-combined-efi.img.gz 文件。下载页面,在 root 首页找最新版本
  2. GParted Live CD 镜像,用来修改系统分区大小。下载页面

创建虚拟机

我们先创建一个空的虚拟机,具体步骤如下图所示

此处不需要使用任何介质

注意这里要选择 UEFI

把默认分配的磁盘空间删了

CPU 按需分配就行,要求不高

内存按需分配即可,要求不高

默认即可

将openwrt 的镜像上传上去

接下来连接到 pve,手动执行下列命令,将镜像挂载到虚拟机上

qm disk import <vm-id> <img-name> <storage-name>
  • vm-id: 你的虚拟机编号
  • img-name: 你的镜像名称
  • storage-name: 你的存储位置

例如我的是

find / | grep openwrt-23.05.2-x86-64-generic-ext4-combined-efi.img
cd /var/lib/vz/template/iso # 此路径取决于你 find 出来的路径
qm disk import 101 openwrt-23.05.2-x86-64-generic-ext4-combined-efi.img local

成功挂载效果如下

将未使用的磁盘添加到 pve 中,

调整一下磁盘的大小

openwrt 的需求不高一般 2G 即可,此处分了 4G

将前面下好的 qparted 上传到 pve 上

将 gparted 挂载到虚拟机上

调整 gparted 的优先级为最高

正常启动虚拟机,选默认进入下一步

选默认即可

中间会让你选一下语言,选择中文即可(这张图漏截了)

进来后的界面如下图:

因为我们调整了磁盘大小,所以无法直接识别,需要进行修复。

点击修复之后才能进行下一步

把未分配的空间全部分给 /dev/sda2

退出即可

移除 gparted

启动 openwrt 虚拟机

设置网络

vim /etc/config/network

补充 ipv6 配置

如果你后续打算使用 openwrt 作为旁路网关,此处不需要设置 ipv6

config interface 'lan'
        option device 'br-lan'
        option proto 'dhcp'
        #option proto 'static'
        #option ipaddr '192.168.1.1'
        #option netmask '255.255.255.0'
        #option ip6assign '60'

config interface 'lan6'
        option device 'br-lan'
        option proto 'dhcpv6'

修改完成后重启网络:

service network restart

使用下列命令查看网络状况

route -n

使用ip addr获取地址

例如我的就是: http://192.168.2.156/

默认账户为: root ,无密码

ssh 到 openwrt 上,执行一些基础配置

# 软件源换成清华镜像源
sed -i 's_downloads.openwrt.org_mirrors.tuna.tsinghua.edu.cn/openwrt_' /etc/opkg/distfeeds.conf
# 更新软件包索引
opkg update
# 中文包
opkg install luci-i18n-base-zh-cn
opkg install luci-i18n-firewall-zh-cn
# mDNS 支持,安装后可以用 http://openwrt.local 打开管理页面
opkg install avahi-daemon-service-http

在 OpenWrt 网页管理页面,网络 > 接口 里面,把 DHCP 相关的设置关掉,因为旁路由不需要提供 DHCP 服务。

注意设置一下 root 密码

安装 OpenClash

下载 OpenClash

插件介绍

OpenClash 是一个可运行在 OpenWrt 上的 Clash 客户端,兼容 Shadowsocks、ShadowsocksR、Vmess、Trojan、Snell 等协议,根据灵活的规则配置实现策略代理。

官方开源项目地址:https://github.com/vernesong/OpenClash

wget https://github.com/vernesong/OpenClash/releases/download/v0.46.064/luci-app-openclash_0.46.064_all.ipk

卸载 dnsmasq

由于自带的 dnsmasq 会和下面要安装的 dnsmasq-full 冲突,所以我们需要提前卸载:

opkg remove dnsmasq
mv /etc/config/dhcp /etc/config/dhcp.bak

依赖安装

opkg update
opkg install iptables
opkg install dnsmasq-full
opkg install coreutils
opkg install coreutils-nohup
opkg install bash
opkg install curl
opkg install jsonfilter
opkg install ca-certificates
opkg install ipset
opkg install ip-full
opkg install iptables-mod-tproxy
opkg install kmod-tun
opkg install luci-compat

依赖安装完成后就可以直接来安装了 openclash 了:

opkg install luci-app-openclash_0.46.064_all.ipk

如果你的网络环境不好,你可以选择在本机上科学下载,然后使用 gui 安装

安装成功后,在 OpenWrt 的控制面板里面的「服务」菜单下可以找到 OpenClash:

刚进来是没有内核的,会提示大家安装内核,如果大家用链接安装失败了,只能大家各显神通,用 clash 源码编译个内核,并上传上去

我们配置好订阅后,启动一下 OpenClash 服务试试看,如果出现下图这种情况,表示服务是正常没问题的:

设置 openwrt 为旁路网关

  1. 在“网络”-“接口”的“常规设置”中给 Openwrt 的 LAN 网络接口设置一个和现有局域网同网段的静态 IP 地址,注意不要和现有设备的 IP 地址冲突。然后应用设置。
  2. 将 LAN 网络接口的“默认网关”设为主路由的 IP 地址。
  3. 在“高级设置”中找到“使用自定义的 DNS 服务器”设为主路由的 IP 地址。
  4. 在“DHCP 服务器”中勾选“忽略此接口”。
  5. 在“DHCP 服务器”-“IPv6 设置”中禁用所有IPv6服务。
  6. 点击“保存”以及“保存并应用”。
  7. 在“网络”-“防火墙”中,关闭“SYN-flood 防御”,点击“保存并应用”。
  8. 建议重启一次。

其他设备接入旁路网关

在指定的设备上,手动设置IP地址,将其“网关”和“首选 DNS”改为旁路网关的IP地址。


如果本文帮助到了你,帮我点个广告可以咩(o′┏▽┓`o)


评论
  目录