OpenWrt 作为一款出色的开源软路由系统,支持众多平台,可安装大量插件应用,深受国内玩家追捧。

相对来说,OpenWrt 的门槛还是比较高的,自行编译的固件可能会因为各种依赖问题造成编译失败,使用别人编译好的固件吧,很多功能其实又用不上,软件又可能不是最新版的,不符合自己的使用要求。

如果单单只想让 OpenWrt 作个梯子,又不想自己编译固件,那么官方固件无疑是最好的选择。官方固件是一个纯净的系统,根据自己的需求安装对应的插件即可达到想要的效果。过程简单,功能满足,系统稳定。

本文将以 VMWare 虚拟机为例,详细介绍如何使用 OpenWrt 的官方固件,安装和使用 passwall 插件,并通过 OpenWrt 实现旁路由科学上网。

1] 部署 OpenWrt 虚拟机

OpenWrt 固件的选择要看插件的支持范围,最好是插件指定的固件版本最好,这样会避开很多兼容性问题。由于最新版的 passwall 插件支持 23.05-rc3,所以就选择使用该版本固件。

进入 OpenWrt 的 >>官方网站<<,点击 Downloads 进入下载页面,点击 Stable Release builds 进入固件选择页面,选择 23.05-rc3 -> targets 进入固件下载页面,之后会出现固件所支持的架构列表,由于本次演示使用的是 x86 虚拟机,则选择进入 x86/64/ 目录进入最终固件下载页面:

图.1 OpenWrt 固件下载页面

在”Image Files”栏目中,选择下载”generic-ext4-combined.img.gz“固件。这个固件采用 bios 方式启动,文件系统为 ext4,方便之后的根分区扩容。当然,如果有兴趣也可以尝试其它类型的固件,功能上没有区别,使用时适配不同的场景。

下载的文件是一个磁盘镜像文件,如果使用实体机器作为 OpenWrt 软路由,将此文件还原至实体机的目标磁盘即可。示例采用虚拟机,则需要将固件文件转换为虚拟机的磁盘文件。具体操作命令如下:

# gzip -dk openwrt-23.05.0-rc3-x86-64-generic-ext4-combined.img.gz
# qemu-img convert -f raw openwrt-23.05.0-rc3-x86-64-generic-ext4-combined.img \
  -O vmdk openwrt-23.05.0-rc3-x86-64.vmdk

图.2 OpenWrt固件转换为虚拟机磁盘文件

第一条命令是将下载的固件文件解压,第二条命令是将镜像文件转换为 VMWare 虚拟机磁盘文件。命令执行成功后,会生成虚拟机使用的磁盘文件”openwrt-23.05.0-rc3-x86-64.vmdk”。

示例转换使用的是 Linux 系统 qemu 工具包,windows 系统可以使用 >>StarWind V2V Converter<< 完成转换。

有了虚拟机磁盘文件,就可以创建 Openwrt 的虚拟机了。

新建一个 VMWare 虚拟机,系统选择其它 Linux 系统,CPU根据需要设置,2核足够,内存设置为1-2 GB,网络选择NAT模式即可。将原虚拟磁盘移除,新建磁盘,使用”openwrt-23.05.0-rc3-x86-64.vmdk”文件,其它设置保持默认。

图.3 将 OpenWrt 磁盘文件添加至 VMWare 虚拟机

全部完成以后,开启虚拟机,就会进入系统,界面显示如下:

图.4 OpenWrt 系统启动界面

官方固件的默认管理页面地址为”192.168.1.1″,网络配置文件为”/etc/config/network”,修改该文件的”lan”配置块内容,将”option addr ‘192.168.1.1’ “修改为实际使用的地址,保存配置文件后,使用如下命令重新启动 OpenWrt 的网卡,即可访问 OpenWrt 的管理页面了。

# /etc/init.d/netwrok reload

图.5 OpenWrt 官方固件管理页面

至此,OpenWrt 的虚拟机就部署完成了。

2] 调整 OpenWrt 固件根分区空间

由于此固件只分配给根分区 102MB 空间,不利于将来安装其它软件,需要将根分区进入扩容。对于实体机,也会遇到类似问题,本来磁盘空间还有空余,但是系统只能使用其中的一小部分。

下面就来演示如何扩展 OpenWrt 根分区空间。

对于虚拟机而言,需要首先调整虚拟磁盘的大小。使用虚拟机的磁盘管理工具,将磁盘大小扩展至 1-2GB,然后打开 OpenWrt 虚拟机。

进入 OpenWrt 的管理页面,进入”interface”配置接口,然后点击”Edit”按钮,设置接口的网关和 DNS,以保证虚拟机可以正常上网。DNS 的配置页面位于”Advanced Settings”选项卡,根据实际情况配置:

图.6 配置 OpenWrt 虚拟机接口网络

此时,OpenWrt 虚拟机即可访问互联网了。为了可以正常下载软件包,虚拟机最好位于科学上网环境。对于 windows 平台,使用 v2rayN 的隧道模式,对于 Mac OS 系统,使用 Proxifier 及代理工具便可代理虚拟机的网络流量。

使用如下命令安装相关工具:

# opkg update
# opkg install block-mount e2fsprogs fdisk blkid

查看虚拟机的相关信息,可以了解到磁盘分区大小及挂载情况:

图.7 OpenWrt 磁盘分区及挂载信息

此时,磁盘分了两个分区,分别挂载到启动分区和根分区,扩展的磁盘空间未分区。使用”fdisk”工具,将扩展的空间创建一个新的磁盘空间”/dev/sda3″,之后使用”mkfs.ext4 /dev/sda3″命令将新分区格式化为 ext4 的文件系统。

分区创建成功后,使用如下命令将根分区移动挂载至”/dev/sda3″:

# uci add fstab mount
# uci set fstab.@mount[-1].uuid=`blkid -s UUID /dev/sda3 | cut -d\" -f2`
# uci set fstab.@mount[-1].options=rw,sync,noatime
# uci set fstab.@mount[-1].fstype=ext4
# uci set fstab.@mount[-1].enabled_fsck=1
# uci set fstab.@mount[-1].enabled=1
# uci set fstab.@mount[-1].target=/
# uci set fstab.@mount[-1].device=/dev/sda3
# uci commit fstab

创建好分区,并将启动分区设置为”/dev/sda3″后,使用如下命令将要分区的内容复制到”/dev/sda3″:

# mkdir /mnt/sda3
# mount /dev/sda3 /mnt/sda3
# mkdir -p /tmp/ROOT
# mount --bind / /tmp/ROOT
# tar -C /tmp/ROOT -cvf - . | tar -C /mnt/sda3 -xf -
# umount /tmp/ROOT
# umount /mnt/sda3

最后,使用如下命令激活”fstab”功能,保证使用”/dev/sda3″启动:

# /etc/init.d/fstab enable
# /etc/init.d/fstab start

再次启动虚拟机,查看分区挂载情况,如图所示,系统根分区已经成功挂载到扩展的磁盘空间,表示 OpenWrt 系统根分区扩展完成。

图.8 OpenWrt 完成根分区扩展

3] 安装配置 passwall 插件

访问 passwall 的发行版 下载页面,软件包含插件文件”luci-app-passwall_4.71-2_all.ipk”以及中文件语言包” luci-i18n-passwall-zh-cn_git-23.289.45328-a953315_all.ipk “,其余软件则为该插件的依赖文件压缩包。根据自己平台构架,选择下载对应的依赖包,示例是 x86架构,则下载” passwall_packages_ipk_x86_64.zip”。

全部软件包下载完成后,即可通过 OpenWrt 的管理平台安装 passwall插件。

图.9 OpenWrt软件管理页面

选择”System”菜单的”Software”菜单项,进入软件管理页面。点击”Update lists”按钮更新可用软件包。更新完成后,可以安装的软件包会在页面下方列表显示。可以在”Filter”输入框中输入内容用于筛选所需软件包,例如希望安装中文语言,则可以输入”chinese”,就会显示所有与之相关的软件包。需要安装软件,只需要点击软件包后面的”Install”按钮即完成了软件包的安装。

示例给  Openwrt 安装中文语言,可以在管理页面通过下图方式进行安装:

图.10 通过 OpenWrt 软件管理页面安装软件

此方式安装的软件包为位于 OpenWrt 软件库的软件包,对于不在软件库中的软件包,例如 passwall,则可以直接上传文件进行安装。

同样,在软件管理页面,点击”上传软件包”(Upload Package)按钮,会提示选择软件包文件,选中需要安装的软件包后,点击”上传”,上传完成后,再点击安装,即对软件包进行了安装。

我们首先上传 passwall 软件包”luci-app-passwall_4.71-2_all.ipk”进行安装,由于未安装相关依赖,会出现如下报错信息:

图.11 手动安装 passwall 报错信息

见到这样的报错信息也不用着急,只是因为”chinadns-ng”、”dns2socks”、”dns2tcp”以及”tcping”软件包未安装。这些软件包位于 passwall 依赖包的压缩文件中,找到这些软件包,同样采用手动安装的方法安装这些依赖包。软件安装成功,会在软件管理页面的”已安装”列表显示。所需依赖全部安装成功后,再次安装 passwall 插件以及中文包就不会报错了。

由于 passwall 的特殊功能,passwall 软件安装成功了,还需要安装代理软件内核包,例如”xray-core_1.8.4-1_x86_64.ipk”用于安装 Xray 内核。依赖包并不需要全部安装,根据使用需要选择性安装即可。

passwall 插件安装完成后,刷新页面,就可以看到 OpenWrt 已经增加了服务菜单栏,并且 passwall 已经安装完成。

点击 passwall 菜单,就进入了插件主页面:

点击”节点列表”选项卡,选择添加节点或编辑现有”分流节点”,就会进入节点配置页面:

图.12 配置 passwall 节点

根据节点配置手动添加节点或通过链接导入节点后,点击”保存并应用”保存节点信息。添加成功的节点会在节点列表选项卡显示,点击测试连接按钮可以显示节点的可用性情况:

图.13 passwall 节点列表及可用性信息

选择对应的节点,然后点击使用,会显示节点使用选择窗口,选择TCP及UDP后,点击确认以使用该节点,最后保存并应用使用设置生效。

最后,进入基本设置选项卡,钩选主开关后面的点选框,之后点击保存并应用,就会启动 passwall 插件:

图.14 启动 passwall 插件

一切看起来都似乎很正常,但是点击上面的几个网站进行检测会发现全部不能使用,并且之前本来可以用的节点也变得不可用了,连接出现超时问题。

查看 passwall 日志,会提示如下报错信息:

2023-10-19 07:36:24: 系统未安装iptables或ipset或Dnsmasq没有开启ipset支持,无法透明代理!
2023-10-19 07:36:24: 透明代理基础依赖 kmod-nft-socket 未安装...
2023-10-19 07:36:24: 透明代理基础依赖 kmod-nft-tproxy 未安装...

这是由于 OpenWrt 固件使用的 Dnsmasq 软件同 passwall 兼容性存在问题,使用系统启动 passwall 后,dns 解析出现了问题,导致之前节点也不可用。

关闭 passwall (取消钩选主开关),进入系统 -> 软件包页面,移除已经安装的 dnsmasq 软件包,直接通过软件库安装 dnsmasq-full、kmod-nft-socket 和 kmod-nft-tproxy 三个软件包。

软件安装成功后,再次检测 passwall 连接性,所有网站均可访问,说明插件安装配置成功。

图.15 passwall 插件配置成功

4] OpenWrt 虚拟机充当旁路由

OpenWrt 虚拟机配置 passwall 科学上网成功后,就可以把它当作局域网中的旁路由设备代理上网了。网内终端不需要安装科学上网工具,使用 OpenWrt 旁路由即可实现科学上网。

首先将虚拟机的网络适配器更改为桥接模式,OpenWrt 虚拟机网络地址配置为局域网内的一个可用 IP 地址,例如示例使用 192.168.9.254,修改 OpenWrt 网络接口的网关为局域网内互联网网关地址,修改 dns 服务器为实际可用 dns 服务器,保证 openwrt 虚拟机及 passwall 插件可正常使用并且测试通过。

局域网内的其它终,修改 IPv4 配置,设置固定IP,IP地址为原局域网所使用的 IP 地址段内地址,例如示例终端设置为 192.168.9.100,网关和 DNS 设置成 OpenWrt 虚拟机的 IP,即 192.168.9.254。此时,终端的数据包会首先送至 OpenWrt 虚拟机,然后再由 OpenWrt 虚拟机送至局域网网关上网,由于 OpenWrt 虚拟机已经可以科学上网,所以原来不能访问的网址就会通过代理节点成功访问,而终端无需要再做其它配置。

以上就是通过 OpenWrt 官方固件安装并配置 passwall 插件的详细步骤,希望有所帮助。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注