虚拟局域网(VLAN)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通信就好像它们在同一个网段中一样,由此得名虚拟局域网。VLAN是一种比较新的技术,工作在OSI参考模型的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通信是通过第3层的路由器来完成的。与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点: 网络设备的移动、添加和修改的管理难度减少;可以控制广播活动;可提高网络的安全性。
在计算机网络中,一个二层网络可以被划分为多个不同的广播域,一个广播域对应一个特定的用户组,默认情况下这些不同的广播域相互隔离。不同的广播域之间想要通信,需要通过一个或多个路由器,这样的一个广播域就称为VLAN。
本文介绍如何在pfSense中创建和配置一个VLAN。 配置完成后,可以允许(或阻止)该VLAN与其他VLAN之间的通信,每个VLAN将能够共享相同的Internet连接。配置分以下几下步骤:
- 在24端口交换机上创建一个静态VLAN。
- 将该VLAN从交换机中继到pfSense上的LAN接口。
- 为该VLAN分配一个24位掩码的私有IP子网。
假定:
- pfSense已经正确安装,并为现有LAN接口提供了基本的Internet连接。
- 分配给LAN接口的网卡支持IEEE 802.1Q VLAN标识。
- 连接到局域网接口的交换机能够支持基于端口的VLAN的创建、配置和中继。
本文中使用的软件版本如下:
- pfSense2.4.2-RELEASE-P1(AMD64)
本文中使用的交换机是Ciscor的SG200-26,千兆以太网端口,基于Web的管理界面,同时支持256个基于端口和IEEE 802.1Q标识的VLAN。
每个交换机及其相关的管理接口不一定相同,你可以参照本文中的说明进行适当的调整。
交换机配置
静态VLAN(通常称为“基于端口”的VLAN)是通过将交换机端口分配给预先配置的VLAN标识符来创建的。 在本例中,将在交换机上配置一个静态VLAN并为其指定一个VLAN ID 50。你也可以使用2到4094之间的任何正整数来表示VLAN ID,但应避免使用VLAN ID 1和4095,因为一般来说,大多数交换机默认将所有端口分配给VLAN ID 1, 并将VLAN ID 4095作为“丢弃”VLAN。
首先导航到VLAN Management->Create VLAN并选择“Add”。在“VLAN ID”字段中输入值50,并在“VLAN Name”字段中输入一个名称来表示该特定VLAN。 在本例中使用名称“vlan50”。完成后,点击“Apply”。 (见下图)
在将特定端口的成员资格分配给新VLAN之前,我们必须首先将该端口配置为“Access”端口或“Trunk”端口。Access端口是只有一个VLAN成员的端口。 这种类型的端口通常用于连接未知VLAN成员资格的终端设备,或者是因为它们的NIC不能将以太网帧标记为VLAN ID,或者它们没有配置为这样做。 配置为Access端口的交换机端口在将以太网帧发送到设备之前,将删除所有VLAN信息。 而Trunk端口可以承载多个VLAN流量,通常用于将交换机连接到其他交换机或路由器。 通常情况下,小型企业级交换机(如Cisco SG200)默认将每个端口指定为Trunk端口。
为了让教程简单明了,我们假设连接到交换机的设备没有配置。在本例中,将端口19配置为Access端口,并将其分配给新创建VLAN成员资格。 假设使用端口25将交换机连接到pfSense LAN接口,并将其配置为Trunk端口,并将它分配给新创建的VLAN成员资格。
导航到VLAN Management->Interference Settings,选择端口19,然后选择“EDIT”。 将接口VLAN模式从“Trunk”更改为“Access”,然后选择“Apply”(见下图)。 现在按照类似的步骤将端口25配置为Trunk端口。
接下来,导航至VLAN Management->Port VLAN Membership,选择端口19,然后选择“加入VLAN”。 由于接入端口可以作为untagged添加到单个VLAN,我们需要先删除交换机自动分配给每个端口(通常是VLAN 1)的默认VLAN。 突出显示VLAN 1,方法是左键单击,然后选择箭头图标将其从接口中删除。 现在突出显示VLAN 50,然后选择箭头图标将其添加到接口,确保从“Tagged”下的选项中选择“Untagged”。 完成后选择“Apply”(见下图)。
将交换机端口19配置为Access端口并加入到VLAN 50中,同时配置连接到pfSense LAN 接口的端口25, 将端口配置为Trunk端口并加入到VLAN 50中。
确保将端口25配置为Trunk端口,然后导航到VLAN Management->Port VLAN Membership,选择端口25,然后选择“Join VLAN”。 突出显示VLAN 50,然后选择箭头图标将其添加到接口,确保从“Tagged”下的选项中选择“Tagged”。 完成后选择“Apply”(见下图)。
交换机配置完成,请确保将所做的更改保存到启动配置中,以防交换机因任何原因重新启动而丢失配置。
pfSense配置
现在,我们需要在pfSense中配置VLAN 50。导航到网络接口- >接口分配,并记下分配给LAN网卡的设备驱动程序名称。 在本例中,我们假定设备驱动程序的名字是“em1”(见下图)。 LAN2接口将作为我们将在下一步创建的VLAN接口的“父接口”。
接下来,导航到网络接口->接口分配 > VLANs,选择“+添加”图标。 在随后的页面中,从“父接口”下拉列表中的选项中,选择LAN 2接口“em1”,并在“VLAN 标识”下输入值50。 在“描述”栏添加该VLAN的可选说明,然后选择“保存设置”(见下图)。
创建VLAN接口后,返回到网络接口->接口分配,在可用网络端口中,选择“em1上的VLAN 50-opt1,点击“+ 添加”图标,然后选择“保存设置”。
在这个例子中,我们假定pfSense已经将VLAN 50分配为OPT4。 导航到网络接口 – > OPT4并选择“启用接口”。 在“描述”栏,将“OPT4”替换为“VLAN 50”,然后从“IPv4配置类型”下拉列表中的选项中选择“静态IPv4”。 对于VLAN 50,我们将使用网络192.168.50.0/24,在此接口上分配静态IP地址192.168.50.1,并在“静态IP配置”部分下选择“24”的网络掩码。 其他参数可以保持其默认值。 完成后选择“保存设置”和“应用更改”(见下图)。
接下来,我们需要为我们的新VLAN构建防火墙规则,以便流量可以从WAN接口入站/出站,也可以接入Internet。 导航到防火墙 – >规则策略,选择VLAN 50,选择“添加”图标创建一个新的规则。 在本例中,我们将为VLAN 50创建一个简单的出站传递规则,类似于典型的LAN出站传递规则的配置方式。动作选“通过” ,协议选“any”,源地址选“VLAN50 net”。 输入这个新建规则的描述。 其他参数可以保持其默认值。 完成后选择“保存设置”和“应用更改”(见下图)。
除非打算为主机设备分配静态IP地址,否则需要为新VLAN配置DHCP服务器。导航至服务 – > DHCP服务,并选择VLAN 50接口。选择“在接口VLAN50上启用DHCP服务”,然后 输入IP地址范围。 pfSense将默认使用分配给此接口的IP地址作为网关地址。 在本例中,网关地址是192.168.50.1。 如果是其他网关,请在“网关”下输入其他网关的IP地址。 同时输入DNS地址,其他参数保持默认。 完成后选择“保存设置”。
如果在上一步,你没有指定DNS地址,那还需要导航到服务 – > DNS转发器 – >接口,并确保DNS转发器用于响应来自客户端的查询接口包含VLAN50,然后“保存设置”并“应用更改”(见下图)。
至此,配置完成。
要进行测试,请将主机设备(如台式机或笔记本电脑)连接到交换机上的端口19。如果按照前述配置了所有内容,则应该在为VLAN 50网络192.168.50.0/24指定的DHCP地址范围内收到一个IP地址。默认网关应该是192.168.50.1,DNS应该是你指定的地址,如果pfsense之前已经连接互联网,你现在应该可以正常访问网络。
这里要注意,按照当前配置,每个VLAN都可以路由到所有其他VLAN。如果想禁止某个或某些特定VLAN的通信,则必须创建防火墙规则,明确规定路由方向。要注意的是,pfSense在第一次匹配的基础上评估防火墙规则(即第一个匹配数据包的规则的操作将被执行)。因此,如果想要阻止所有VLAN 50流量到达LAN,则可以在之前创建的规则之前创建一条规则,阻止VLAN 50与LAN的通信(见下图)。
总结
如果交换机和网络接口支持VLAN功能,配置pfSense的VLAN可以简单归纳为以下几个步骤:
- 在交换机上创建一个静态VLAN,并将该VLAN中继到pfSense上的LAN接口。
- 创建并添加VLAN接口,创建必要的防火墙规则。
- 为VLAN分配了一个24位掩码的私有IP子网,使用DHCP给主机分配IP地址。
- VLAN可以共享pfSense的Internet连接。
- 配置pfSense来防止每个VLAN之间的通信。