OpenWrt低成本企业组网+访问控制+多SSID绑定不同VLAN实例部署

自渡
2024-11-11 / 0 评论 / 48 阅读

部署背景

在一个中小规模企业中,无线网络的合理规划是非常有必要的,最专业(当然也是最费钱)的方案就是使用主流厂家的AC+AP全套解决方案(华为、Cisco、Aruba等),这一套下来少说得几千块,对于有钱的老板是九牛一毛,但对于爱折腾的我,想努力将成本控制到最低😏将低价产品的功能发挥到极致。于是打算网络全部采用openwrt来解决。
本案例通过在主网关配置不同VLAN,并经由无线AP透传到网关来实现不同SSID对应不同VLAN的功能,并在网关上配置防火墙,用以隔离内部客户端和访客客户端,保障内部网络安全。

网络结构图

network1.jpg

部署环境及所需的设备

  1. 网络环境布局

    • 从电信处拉得一条200M对等专线
    • 办公室10间,会议室1间,每间办公室放置1台无线AP,会议室放置2台无线AP
    • 规划3个网段(各自独立VLAN),分别为:有线PC网段、内部无线网络、访客无线网络。
  2. 设备清单

    • 主网关:采用openwrt的X86软路由。由旧主机联想ThinkCentre M4500s-N000烧录openwrt X86固件承担。系统采用OpenWrt 21.02.2
    • 无线AP:从淘宝处够得已刷好breed的二手小米的CR660X路由器12台充当AP。综合对比目前的多种设备及openwrt支持情况,CR660X系列是成本较低,且对openwrt支持较好的WIFI6路由器。实测在干扰较小的情况下,2.4GHz可以跑100-200Mbps左右,5GHz可以跑600-800Mbps。
    • 交换机:锐捷RG-ES124GD 24口千兆交换机一台、每间办公室配置H3C S2G 8口交换机一台。
  3. 网段划分

    • VLAN 1 : 172.18.1.0/24 ; 默认VLAN,系统默认生成的网桥“br-lan”,作为有线PC网段,用于连接所有有线设备
    • VLAN 10:172.18.10.0/22 ; 内部无线网络段
    • VLAN 20:172.18.20.0/22 ; 访客无线网络段

开始配置主网关

网络设备配置将通过命令行和LUCI页面相结合的方式来完成

  1. 网关设备情况

    • 部署外置网卡:因公司服务器都已上云,客户端主要以访问外网为主。因此本软路由仅配置了2个网络接口,一个用于上联电信,一个用于下联交换机并连接客户端。
    • eth0 :上联电信运营商
    • eth1 :下联锐捷RG-ES124GD交换机并布线到各办公室
  2. 配置外部IP

    • 修改/etc/config/network文件
config interface 'wan'
        option device 'eth0'
        option proto 'static'
        option ipaddr '120.43.111.130'
        option netmask '255.255.255.252'
        option gateway '120.43.111.129'
        option dns '218.85.152.99 218.85.157.99'
  1. 配置好3个VLAN及网段、DHCP、防火墙

    • VLAN及网段配置:下联客户端的物理设备为eth1,因此需要配置该网口允许VLAN10和VLAN20通过。这样子设备在收到来自AP传来的带有VLAN TAG标签的数据包,就会将其转发到相应的VLAN端口。通过/etc/config/network配置文件中定义各个VLAN的VID,并设置IP段(为方便管理,局域网内不配置IPV6)
#默认VLAN 1 有线PC网段
config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option netmask '255.255.255.0'    
        option ipaddr '172.18.1.1'

#配置VLAN 10 虚拟接口,并允许VLAN10通过
config device
        option type '8021q'
        option ifname 'eth1'
        option vid '10'
        option name 'eth1.10'
        option ipv6 '0'

#配置VLAN 20 虚拟接口,并允许VLAN20通过
config device
        option type '8021q'
        option ifname 'eth1'
        option vid '20'
        option name 'eth1.20'
        option ipv6 '0'

#配置VLAN 10(内部无线网络段)的网段
config interface 'VLAN10'
          option proto 'static'
          option device 'eth1.10'
          option ipaddr '172.18.10.1'
          option netmask '255.255.252.0'

#配置VLAN 20(访客无线网络段)的网段
config interface 'VLAN20'
          option proto 'static'
          option device 'eth1.20'
          option ipaddr '172.18.20.1'
        option netmask '255.255.252.0'
  • DHCP配置:通过编辑修改/etc/config/dhcp文件,分别为VLAN1 VLAN10 VLAN20三个接口配置DHCP服务器
config dhcp 'lan'
        option interface 'lan'
        option start '2'
        option limit '250'
        option leasetime '24h'
        list dhcp_option '6,218.85.152.99,218.85.157.99'
        list ra_flags 'none'

config dhcp 'VLAN10'
        option interface 'VLAN10'
        option start '2'
        option limit '1000'
        option leasetime '24h'
        list dhcp_option '6,218.85.152.99,218.85.157.99'
        list ra_flags 'none'

config dhcp 'VLAN20'
        option interface 'VLAN20'
        option start '2'
        option limit '1000'
        option leasetime '24h'
        list dhcp_option '6,218.85.152.99,218.85.157.99'
        list ra_flags 'none'     
  • 防火墙配置:修改/etc/config/firewall以配置不同区域防火墙
#配置外网区域防火墙
config zone
        option name 'wan'
        option input 'REJECT'
        option output 'ACCEPT'
        option masq '1'
        option mtu_fix '1'
        list network 'wan'
        list network 'wan6'
        option forward 'REJECT'

#三个区域的防火墙默认配置
config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'lan'

config zone
        option name 'VLAN10'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'VLAN10'

config zone
        option name 'VLAN20'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'VLAN20'     

#配置VLAN 10防火墙区域
config zone
        option name 'VLAN10'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'VLAN10'

#配置VLAN 20防火墙区域
config zone
        option name 'VLAN20'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'VLAN20'

#允许三个VLAN通过WAN上网
config forwarding
        option src 'lan'
        option dest 'wan'

config forwarding
        option src 'VLAN10'
        option dest 'wan'

config forwarding
        option src 'VLAN20'
        option dest 'wan'

#配置允许各个VLAN互相通信,但不允许访客VLAN访问其他VLAN
config forwarding
        option src 'lan'
        option dest 'VLAN10'

config forwarding
        option src 'lan'
        option dest 'VLAN20'

config forwarding
        option src 'VLAN10'
        option dest 'lan'

config forwarding
        option src 'VLAN10'
        option dest 'VLAN20'
   

开始配置无线AP

  1. 无线AP: 设备采用的是已刷好breed的CR6608路由器,并刷入openwrt原生固件(22.03.5版本)。
    m3bioj1w.png

    • 新版本openwrt已经移除了原来旧版本中的交换机(swconfig)功能,因此在LUCI页面的“网络”选项中,已经无法通过“交换机”功能来配置VLAN。新版本的openwrt采用了DSA分布式交换机架构,在 DSA 中,每个交换机端口都是一个单独的 Linux 接口。这意味着ip/ifconfig命令将显示接口等lan1,lan2,wan等。
    • 因此,可以通过建立网桥的方式来恢复旧版本openwrt的功能,下面是每台CR6608的/etc/config/network的详细配置。
#loopback接口的默认配置,无需改变。
config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

#保留lan2接口,作为CR6608的配置接口,以防止出现错误无法连接设备。
config device
        option name 'br-lan'
        option type 'bridge'
        list ports 'lan2'

#保留默认网桥br-lan,并仅关联lan2口,与上行配置相同,用于管理设备用。
#仅当终端设备连接lan2接口时,才可通过192.168.12.1地址来管理设备。
config interface 'lan'
        option device 'br-lan'
        option proto 'static'
        option ipaddr '192.168.12.1'
        option netmask '255.255.255.0'

#建立一个名为sw0的网桥,并将wan口加入该网桥组,用于上联交换机、网关设备
config device
        option type 'bridge'
        option name 'sw0'
        option bridge_empty '1'
        list ports 'wan'

#定义sw0.1接口    
config device
        option name 'sw0.1'
        option type '8021q'
        option ifname 'sw0'
        option vid '1'

#将wan口定义为dhcp模式,与sw0.1关联,此时wan口模式为untagged,AP将从上级网关获取IP地址,获取的IP地址VLAN标签为1,与有线设备同一网段。
config interface 'wan'
        option proto 'dhcp'
        option type 'bridge'
        option device 'sw0.1'

#创建VLAN桥,设置AP从wan口获取IP时不打标签,即获取上级网关的VLAN1,与有线PC同一网段的IP。
config bridge-vlan
        option device 'sw0'
        option vlan '1'
        list ports 'wan'

#设置允许VLAN10数据包通过,并会打上VLAN TAG后转发到上级网关。
config bridge-vlan
        option device 'sw0'
        option vlan '10'
        list ports 'wan:t'
    
config interface 'vlan10'
        option proto 'none'
        option device 'sw0.10'

#设置允许VLAN20数据包通过,并会打上VLAN TAG后转发到上级网关。
config bridge-vlan
        option device 'sw0'
        option vlan '20'
        list ports 'wan:t'

config interface 'vlan20'
        option proto 'none'
        option device 'sw0.20'
  1. 将SSID绑定VLAN

    • 编辑/etc/config/wireless来完成SSID的设置并绑定不同VLAN
#定义2.4GHz射频卡的设置
config wifi-device 'radio0'
        option type 'mac80211'
        option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0'
        option band '2g'
        option cell_density '0'
        option htmode 'HE40'
        option txpower '20'
        option channel 'auto'
        option log_level '1'

#定义5GHz射频卡的设置,将信道设为自动
config wifi-device 'radio1'
        option type 'mac80211'
        option path '1e140000.pcie/pci0000:00/0000:00:01.0/0000:02:00.0+1'
        option band '5g'
        option cell_density '0'
        option country 'CN'
        option htmode 'HE80'
        option log_level '1'
        option channel 'auto'    

#定义内部WIFI的SSID为zavierlab.com,密码为12345678,绑定VLAN10。
#如此,连接该SSID的客户段将会被标记为VLAN10的数据,直接透传到主网关,获取到网段为172.18.10.0/22的地址。
#2.4GHz设置
config wifi-iface 'default_radio0'
        option device 'radio0'
        option mode 'ap'
        option ssid 'zavierlab.com'
        option encryption 'psk2+ccmp'
        option key '12345678'
        option network 'vlan10'

#5GHz设置
config wifi-iface 'default_radio1'
        option device 'radio1'
        option mode 'ap'
        option network 'vlan10'
        option ssid 'zavierlab.com'
        option encryption 'psk2+ccmp'
        option key '12345678'

#定义访客WIFI的SSID为zavierlab.com-Guest,密码为12345678,绑定VLAN20。
#如此,连接该SSID的客户段将会被标记为VLAN10的数据,直接透传到主网关,获取到网段为172.18.20.0/22的地址。
#2.4GHz设置
config wifi-iface 'wifinet2'
        option device 'radio0'
        option mode 'ap'
        option ssid 'zavierlab.com-Guest'
        option encryption 'psk2+ccmp'
        option key '12345678'
        option network 'vlan20'

config wifi-iface 'wifinet3'
        option device 'radio1'
        option mode 'ap'
        option ssid 'zavierlab.com-Guest'
        option encryption 'psk2+ccmp'
        option key '12345678'
        option network 'vlan20'
  1. 修改AP防火墙

    • 编辑/etc/config/firewall以设置CR6608允许通过wan口管理
      即在wan对应的zone里,将option inputREJECT改为ACCEPT以确保可以通过AP的WAN口直接管理
config zone
        option name 'wan'
        option output 'ACCEPT'
        option masq '1'
        option mtu_fix '1'
        option input 'ACCEPT'
        option forward 'ACCEPT'
        list network 'wan'
        list network 'wan6'
  1. 在主网关中为每一台AP定义静态DHCP方便管理

    • 需要记住每台AP的WAN口的MAC地址,本案例将172.18.1.240-172.18.1.252作为AP的IP地址段
    • 编辑主网关的/etc/config/dhcp文件,添加如下:

config host
        option name 'AP-01'
        option ip '172.18.1.240'
        option mac 'AA:AA:AA:AA:AA:AA' #填入对应的AP MAC地址
    
config host
        option name 'AP-02'
        option ip '172.18.1.241'
        option mac 'AA:AA:AA:AA:AA:AA' #填入对应的AP MAC地址

···如此往复配置    

总结

此组网模式通过在双口软路由上划分不同VLAN,并通过无线AP的不同SSID绑定VLAN的方式实现区域隔离。这也是目前大多数公共WIFI的常见做法,可以完美实现不同用户组的隔离,确保网络安全。该组网需要熟悉网络原理和linux命令,如有类似组网需求的朋友可以参考此案例。有不懂的可以留言博主协助。 😇

0

评论 (0)

取消