在网络管理中,虚拟局域网(VLAN)技术是提升网络效率与安全性的重要手段,对于运行CentOS系统的管理员而言,将CentOS服务器配置为VLAN间的网关路由器,是一项实用且强大的技能,它能有效隔离广播域,实现不同网段间的可控通信。

理解VLAN与路由的基础概念
VLAN允许我们在单一物理网络设备上创建多个逻辑上独立的网络,这些网络之间的设备无法直接通信,仿佛它们连接在不同的物理交换机上,要实现VLAN间的数据转发,必须依赖第三层设备——也就是路由器。
传统的做法是使用独立的路由器设备,利用CentOS Linux系统的强大网络功能,我们可以将一台配备多个物理网卡的服务器,配置为一台高性能、高定制化的软件路由器,这种方案成本效益高,且提供了极大的灵活性。
配置前的准备工作
在开始配置之前,需要确保硬件与系统环境准备就绪。
- 硬件要求:服务器至少需要两个物理网络接口,一个接口通常用于连接外部网络或管理,另一个接口则连接支持VLAN划分的交换机,服务器的处理能力和内存应根据预期的网络流量进行选择。
- 软件要求:确保使用CentOS 7或8等主流版本,需要安装必要的网络工具包,通常
vlan和iproute2包是必需的,可以使用yum install vlan iproute命令进行安装。 - 交换机配置:与服务器相连的交换机端口必须配置为Trunk模式,允许携带VLAN标签的流量通过,如果服务器通过eth1接口与交换机相连,并且需要处理VLAN 10和VLAN 20的流量,那么交换机的这个端口必须设置为Trunk,并放行VLAN 10和20。
分步配置流程
以下是在CentOS系统上配置VLAN网关路由的核心步骤。
第一步:加载内核模块
需要确保系统加载了802.1Q内核模块,该模块为系统提供VLAN支持。
sudo modprobe 8021q echo "8021q" | sudo tee -a /etc/modules-load.d/vlan.conf
第二步:创建VLAN虚拟接口
我们将在物理接口(例如eth1)上创建VLAN虚拟接口,假设需要为VLAN 10和VLAN 20创建接口。

使用传统的ifcfg脚本方式(以CentOS 7为例,在/etc/sysconfig/network-scripts/目录下创建文件):
创建VLAN 10的接口配置文件 ifcfg-eth1.10:
DEVICE=eth1.10
BOOTPROTO=none
ONBOOT=yes
TYPE=Vlan
PHYSDEV=eth1
VLAN=yes
VLAN_ID=10
IPADDR=192.168.10.1
NETMASK=255.255.255.0 创建VLAN 20的接口配置文件 ifcfg-eth1.20:
DEVICE=eth1.20
BOOTPROTO=none
ONBOOT=yes
TYPE=Vlan
PHYSDEV=eth1
VLAN=yes
VLAN_ID=20
IPADDR=192.168.20.1
NETMASK=255.255.255.0 这里,eth1.10和eth1.20是虚拟接口,它们分别获得了不同网段的IP地址,并作为各自VLAN的网关。
对于使用NetworkManager或偏好ip命令的用户,也可以使用命令临时创建,但通过配置文件能确保重启后依然有效。
第三步:启用IP转发功能
要让CentOS充当路由器,核心是开启系统的IP转发能力,这需要修改内核参数。
编辑 /etc/sysctl.conf 文件,确保包含以下行:
net.ipv4.ip_forward = 1 然后执行以下命令使配置立即生效:
sudo sysctl -p
第四步:配置防火墙与路由规则
仅仅开启转发还不够,数据包需要被防火墙允许通过,CentOS默认使用firewalld,我们可以利用其富规则(rich rules)来允许VLAN间的转发。

假设我们允许VLAN 10和VLAN 20之间互访:
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.10.0/24 destination address=192.168.20.0/24 accept' sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=192.168.20.0/24 destination address=192.168.10.0/24 accept' sudo firewall-cmd --reload
如果需要更精细的控制,例如只允许特定端口的通信,可以在富规则中指定端口和协议。
第五步:验证与测试
完成配置后,重启网络服务或直接重启服务器。
sudo systemctl restart network
随后,进行验证:
- 使用
ip addr show命令,检查VLAN虚拟接口(eth1.10, eth1.20)是否已启动并分配了正确的IP地址。 - 在同一VLAN内的客户端设备上,将网关设置为对应的VLAN接口IP(如VLAN 10的客户端网关设为192.168.10.1)。
- 从一个VLAN的客户端ping另一个VLAN的客户端IP,测试连通性,从192.168.10.100 ping 192.168.20.100。
一个实际应用场景
设想一个中小企业,有行政部(VLAN 10)和财务部(VLAN 20),出于安全考虑,需要隔离两个部门的网络,但同时,行政部的文件服务器需要被财务部的特定电脑访问。
通过上述配置,我们实现了基础隔离,我们可以在CentOS的防火墙上添加一条精确规则,只允许财务部特定IP(如192.168.20.50)访问行政部文件服务器的特定端口(如445),而阻止所有其他跨VLAN的访问尝试,这充分体现了软件路由在安全策略上的灵活性。
将CentOS配置为VLAN网关,不仅仅是完成一项技术任务,更是对网络架构进行深度优化的过程,它赋予了管理员从数据链路层到网络层的全面控制权,这种基于开源软件的解决方案,以其低成本和高可定制性,在虚拟化环境、云基础设施以及传统企业网络中,始终占有一席之地,掌握这项技能,对于构建一个既安全又高效的现代网络至关重要。
