网络实战
网桥概览¶
下图是根据上面架构划分的网桥细节图:
下面分别对几个网卡进行解释:
网口名 | 解释说明 |
---|---|
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日),国光我下载的固件地址为:
将镜像解压为 img 后缀,然后直接上传到 PVE 的 ISO 镜像仓库中:
创建虚拟机¶
创建 1 个 OpenWrt 的虚拟机,不需要 CD 光盘,删掉自带的硬盘,添加 2 个网络设备,CPU 权重设置高一点,毕竟是软路由,得保证路由的运行稳定优先级,整体配置如下:
网络部分的关系如下:
硬件 | 网桥 | 备注 |
---|---|---|
net0 | vmbr0 | 作为 OpenWrt 的 WAN 口 |
net1 | vmbr1 | 作为 OpenWrt 的 LAN 口 |
导入磁盘镜像¶
我们之前上传的镜像存放在:/var/lib/vz/template/iso/ 目录下,使用下面命令把镜像转成虚拟磁盘并导入到 ID 为 100 的 VM 中:
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 地址。另外我们看下当前默认的网络配置:
发现 OpenWrt 默认是将 eth0 作为 LAN 口,eth1 作为 WAN 口,这个恰恰和我们的拓扑图相反了,所以我们需要纠正一下网络配置。
配置网络¶
直接编辑网络配置文件,来配置 WAN 口和 LAN 口的信息:
先根据我们之前的网络架构设计,将 ipaddr 改为:10.10.1.1,然后将 eth0 和 eth1 的定位调换一下,即 eth0 作为 WAN 口,eth1 作为 LAN 口,最终的编辑的内容如下(改动的部分均已标红):
改完之后重启网络即可生效配置:
重启网络后可以看到,eth0 正常获取到了光明 DHCP 分配的 192 的 IP 了,同时我们设置 LAN 为 10.10.1.1/24 也生效了:
至此,OpenWrt 的 WAN 和 LAN 口设置基本上就完成了。
测试连通性¶
默认情况下,我们访问 Web 界面是不通的,这是因为 OpenWrt 的防火墙策略中,默认 WAN 口是不允许访问 Web 界面的。
下图可以看出我们正常 ping 通 OpenWrt 但是却无法访问 80 端口的 Web 界面:
编辑防火墙¶
其实这里解决方法有两种:
- WAN 口默认不允许访问 Web 界面,可以创建 1 个 VM 使用 vmbr1 网桥,走 LAN 口访问 http://10.10.1.1
- 修改防火墙配置,将 WAN 口的访问策略放行
很明显,第二种方法更加高效快速一点,那我们来直接编辑防火墙配置:
找到 wan 口的 zone 部分,将下图默认的 REJECT 修改为 ACCEPT :
修改完成后,记得重启一下防火墙:
访问 Web 界面¶
重启防火墙后,我们果然可以正常从 LAN 口访问到 OpenWrt 的 Web 界面了:
默认是 空密码 ,但是建议大家现在 OpenWrt 的 shell 命令下先设置一下 root 的密码:
设置完密码后,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 口的信息:
先根据我们之前的网络架构设计,将 ipaddr 改为:10.10.10.1,然后将 eth0 和 eth1 的定位调换一下,即 eth0 作为 WAN 口,eth1 作为 LAN 口,最终的编辑的内容如下(改动的部分均已标红):
改完之后重启网络即可生效配置:
编辑防火墙¶
修改防火墙配置,将 WAN 口的访问策略放行,直接编辑防火墙配置:
找到 wan 口的 zone 部分,将下图默认的 REJECT 修改为 ACCEPT ,修改完成后,重启一下防火墙生效配置:
之后小米家庭网环境下的设备,直接输入:http://192.68.1.16 即可正常访问我们的第 2 个 OpenWrt 了