跳转至

网络实战

网桥概览

下图是根据上面架构划分的网桥细节图:

下面分别对几个网卡进行解释:

网口名 解释说明
enp7s0 2.5G 网口,直连光猫的 LAN 口
enp8s0 2.5G 网口,后续这个口可以下面接一个 AP 路由器,目前临时外接笔记本使用
ens6f0 10G 网口,目前没有用起来,就这样闲置了,后续看看怎么利用一下
Ens6f1 10G 网口,目前没有用起来,就这样闲置了,后续看看怎么利用一下
wlp5s0 intel 无线网卡,准备直通到 VM 里面,一些游戏手柄呀、妙控板需要走蓝牙
vmbr0 PVE 的默认网桥,桥接的 enp7s0 直连光猫,这样家庭设备都可以访问
vmbr1 单独用来跑靶场的网桥,不桥接任何网口
vmbr2 生产区的网桥,桥接 enp8s0,需要其他设备访问插网线即可,或者后续这里外挂 1 个 AP 路由器

安装 OpenWrt - vmbr1

下载 OpenWrt

LEDE 已经和 OpenWrt 合并了,所以现在的 OpenWrt 就是以前的 LEDE,OpenWrt 官方下载地址为:https://downloads.openwrt.org/releases/

截止写文章的时间(2022年12月11日),国光我下载的固件地址为:

https://downloads.openwrt.org/releases/22.03.2/targets/x86/64/openwrt-22.03.2-x86-64-generic-ext4-combined.img.gz

将镜像解压为 img 后缀,然后直接上传到 PVE 的 ISO 镜像仓库中:

创建虚拟机

创建 1 个 OpenWrt 的虚拟机,不需要 CD 光盘,删掉自带的硬盘,添加 2 个网络设备,CPU 权重设置高一点,毕竟是软路由,得保证路由的运行稳定优先级,整体配置如下:

网络部分的关系如下:

硬件 网桥 备注
net0 vmbr0 作为 OpenWrt 的 WAN 口
net1 vmbr1 作为 OpenWrt 的 LAN 口

导入磁盘镜像

我们之前上传的镜像存放在:/var/lib/vz/template/iso/ 目录下,使用下面命令把镜像转成虚拟磁盘并导入到 ID 为 100 的 VM 中:

Bash
qm importdisk 100 /var/lib/vz/template/iso/openwrt-22.03.2-x86-64-generic-ext4-combined.img local-lvm

转换提示成功:

导入成功后在虚拟机的「硬件」选项卡就能看到一个 未使用的磁盘0,选中它点击编辑,弹出配置窗口,设备类型选「Sata」,最后点击添加:

然后引导里面只启用 SATA 作为引导盘:

此时你的 OpenWrt 虚拟机已经可以成功启动了:

梳理网络情况

开启 OpenWrt 后默认输出完日志并不会自动进入到 shell 控制台,手动回车即可进行 shell 交互,首先看下当前的 IP 情况:

根据我们之前的设计的拓扑图:

梳理出的网络情况如下:

硬件 网口 网桥 备注
net0 eht0 vmbr0 作为 OpenWrt 的 WAN 口
net1 eht1 vmbr1 作为 OpenWrt 的 LAN 口

因为我们的光猫的 IP 也是 192.168.1.1,很明显我们的这个软路由和这个 IP 冲突了,所以我们需要手动配置一下 Web 地址。另外我们看下当前默认的网络配置:

Bash
cat /etc/config/network

发现 OpenWrt 默认是将 eth0 作为 LAN 口,eth1 作为 WAN 口,这个恰恰和我们的拓扑图相反了,所以我们需要纠正一下网络配置。

配置网络

直接编辑网络配置文件,来配置 WAN 口和 LAN 口的信息:

Bash
vim /etc/config/network

先根据我们之前的网络架构设计,将 ipaddr 改为:10.10.1.1,然后将 eth0 和 eth1 的定位调换一下,即 eth0 作为 WAN 口,eth1 作为 LAN 口,最终的编辑的内容如下(改动的部分均已标红):

改完之后重启网络即可生效配置:

Bash
/etc/init.d/network restart

重启网络后可以看到,eth0 正常获取到了光明 DHCP 分配的 192 的 IP 了,同时我们设置 LAN 为 10.10.1.1/24 也生效了:

至此,OpenWrt 的 WAN 和 LAN 口设置基本上就完成了。

测试连通性

默认情况下,我们访问 Web 界面是不通的,这是因为 OpenWrt 的防火墙策略中,默认 WAN 口是不允许访问 Web 界面的。

下图可以看出我们正常 ping 通 OpenWrt 是却无法访问 80 端口的 Web 界面:

编辑防火墙

其实这里解决方法有两种:

  1. WAN 口默认不允许访问 Web 界面,可以创建 1 个 VM 使用 vmbr1 网桥,走 LAN 口访问 http://10.10.1.1
  2. 修改防火墙配置,将 WAN 口的访问策略放行

很明显,第二种方法更加高效快速一点,那我们来直接编辑防火墙配置:

Bash
vim /etc/config/firewall

找到 wan 口的 zone 部分,将下图默认的 REJECT 修改为 ACCEPT :

修改完成后,记得重启一下防火墙:

Bash
/etc/init.d/firewall restart

访问 Web 界面

重启防火墙后,我们果然可以正常从 LAN 口访问到 OpenWrt 的 Web 界面了:

默认是 空密码 ,但是建议大家现在 OpenWrt 的 shell 命令下先设置一下 root 的密码:

Bash
passwd

设置完密码后,Web 界面这里使用我们设置好的密码即可登录:

虚拟机测试

我们这里准备 1 个 Ubuntu 虚拟机用于测试 OpenWrt 是否正常工作,记住将其网络设置为 vmbr1

此时 Ubuntu 下应该都可以正常访问网络了(不行的话,重启一下 OpenWrt 看看):

但是根据上图,很明显存在问题:

我们之前网络规划设计里面,vmbr1 这里面的网络未来准备跑安全靶场的,肯定要和我的家庭网络 192.168.1.0/24 隔离的。很明显,图上右上角的窗口甚至还访问到了我的家庭光猫地址,这个是不符合我们的要求的,所以我得在 OpenWrt 里面配置防火墙规则才行。

设置网络隔离

这里网络隔离的实现,其实是通过 OpenWrt 自带的防火墙策略实现的。OpenWrt Web 控制台中,依次选择「Network」-「Firewall」-「Traffic Rules」:

滑到最下方,新增 1 条策略:

规则细节如下,表示当 10.10.1.0/24 的网段访问 192.168.1.0/24 网段的时候,OpenWrt 直接做 drop 丢包处理:

修改为后,记得保存并应用一下防火墙策略配置:

验证一下,此时除了 192.168.1.6(OpenWrt 自己)外,Ubuntu 已经无法正常访问到 192.168.1.0/24 的其他资产了:

至此,用于管理 vmbr1 的 OpenWrt 软路由已经设置完成。

安装 OpenWrt - vmbr2

接着我们来安装 OpenWrt - vmbr2 部分,回顾一下之前的设计图:

因为很多操作和 OpenWrt - vmbr1 部分差不多,所以下面很多内容不会再写那么细了。

创建启动 VM

虚拟机的硬件细节如下:

然后引导里面只启用 SATA 作为引导盘,然后直接启动,很顺利,顺便改一下 root 密码:

配置网络

根据之前梳理出的网络情况如下:

硬件 网口 网桥 备注
net0 eht0 vmbr0 作为 OpenWrt 的 WAN 口
net1 eht1 vmbr2 作为 OpenWrt 的 LAN 口

直接编辑网络配置文件,来配置 WAN 口和 LAN 口的信息:

Bash
vim /etc/config/network

先根据我们之前的网络架构设计,将 ipaddr 改为:10.10.10.1,然后将 eth0 和 eth1 的定位调换一下,即 eth0 作为 WAN 口,eth1 作为 LAN 口,最终的编辑的内容如下(改动的部分均已标红):

改完之后重启网络即可生效配置:

Bash
/etc/init.d/network restart

编辑防火墙

修改防火墙配置,将 WAN 口的访问策略放行,直接编辑防火墙配置:

Bash
vim /etc/config/firewall

找到 wan 口的 zone 部分,将下图默认的 REJECT 修改为 ACCEPT ,修改完成后,重启一下防火墙生效配置:

Bash
/etc/init.d/firewall restart

之后小米家庭网环境下的设备,直接输入:http://192.68.1.16 即可正常访问我们的第 2 个 OpenWrt 了


最后更新: 2023-03-06