OpenWRT 动态 VLAN

OpenWRT 动态 VLAN

我正在使用 OpenWRT 设置无线 AP 来支持由 RADIUS 服务器提供的动态 VLAN。

我发现了一个OpenWRT.org 上的指南我按照步骤做了,再进行一些额外的研究,我几乎做到了。唯一不起作用的是动态 VLAN 分配。我不知道为什么。

我在 TP-link Archer C7 上以“ap”模式运行 15.05 Chaos Calomer。防火墙和 DHCP 已关闭,因为它们由网络提供。

如果我手动将 SSID 桥接到所需的 VLAN,我可以使用 RADIUS 服务器进行身份验证并登录到我的内部和访客网络。但是动态 VLAN 不起作用。FreeRadius 正确地传输了 Tunnel-Type、Tunnel-Medium-Type 和 Tunnel-Private-Group-ID;经 wireshark 检查。我不确定,但我认为这可能与 hostapd 没有获得正确的设置有关。

任何帮助将不胜感激

我的 /etc/config/wireless 如下所示:

config wifi-iface
    option device   'radio1'
    option mode     'ap'
    option ssid     'WTD_Test_Rad'
    option encryption 'wpa2'
    option server   '172.16.20.105'
    option key      'RadiusSecret'
    option dynamic_vlan '2'
    option vlan_tagged_interface 'eth1'
    option vlan_naming 0
    option vlan_bridge 'br-vlan'

但我在 hostapd 配置文件中找不到这些 vlan 设置:/var/run/hostapd-phy1.conf

interface=wlan1
ctrl_interface=/var/run/hostapd
disassoc_low_ack=1
preamble=1
wmm_enabled=1
ignore_broadcast_ssid=0
uapsd_advertisement_enabled=1
auth_server_addr=172.16.20.105
auth_server_port=1812
auth_server_shared_secret=RadiusSecret@WalkingTheDog
eapol_key_index_workaround=1
ieee8021x=1
auth_algs=1
wpa=2
wpa_pairwise=CCMP
ssid=WTD_Test_Rad
wpa_key_mgmt=WPA-EAP
okc=0
disable_pmksa_caching=1
bssid=60:e3:27:58:3a:8d

hostapd -dd 显示接收了正确的 AVP,但似乎并不关心其中任何一个。

wlan1: RADIUS Received 195 bytes from RADIUS server
wlan1: RADIUS Received RADIUS message
RADIUS message: code=2 (Access-Accept) identifier=79 length=195
   Attribute 79 (EAP-Message) length=6
      Value: 03f50004
   Attribute 80 (Message-Authenticator) length=18
      Value: d544a5f47ae84b9716fd76fb447a54e7
   Attribute 1 (User-Name) length=10
      Value: 'Mdirickx'
   Attribute 64 (Tunnel-Type) length=6
      Value: 0000000d
   Attribute 65 (Tunnel-Medium-Type) length=6
      Value: 00000006
   Attribute 81 (Tunnel-Private-Group-Id) length=3
      Value: 32
   Attribute 1 (User-Name) length=10
      Value: 'Mdirickx'
wlan1: STA 40:78:6a:53:eb:fb RADIUS: Received RADIUS packet matched with a pending request, round trip time 0.00 sec
wlan1: STA 40:78:6a:53:eb:fb IEEE 802.1X: old identity 'Mdirickx' updated with User-Name from Access-Accept 'Mdirickx'
wlan1: STA 40:78:6a:53:eb:fb IEEE 802.1X: decapsulated EAP packet (code=3 id=245 len=4) from RADIUS server: EAP Success
wlan1: STA 40:78:6a:53:eb:fb IEEE 802.1X: Sending EAP Packet (identifier 245)
wlan1: STA 40:78:6a:53:eb:fb WPA: sending 1/4 msg of 4-Way Handshake
wlan1: STA 40:78:6a:53:eb:fb WPA: received EAPOL-Key frame (2/4 Pairwise)
wlan1: STA 40:78:6a:53:eb:fb WPA: sending 3/4 msg of 4-Way Handshake
wlan1: STA 40:78:6a:53:eb:fb WPA: received EAPOL-Key frame (4/4 Pairwise)
wlan1: STA 40:78:6a:53:eb:fb WPA: pairwise key handshake completed (RSN)
wlan1: AP-STA-CONNECTED 40:78:6a:53:eb:fb
wlan1: STA 40:78:6a:53:eb:fb IEEE 802.1X: authorizing port
wlan1: STA 40:78:6a:53:eb:fb RADIUS: starting accounting session 56EC0FBB-00000004
wlan1: STA 40:78:6a:53:eb:fb IEEE 802.1X: authenticated - EAP type: 25 (PEAP)

答案1

我会发表评论而不是回答,但我在这里的声誉不够。我确实写了你在 OP 中链接的关于在 OpenWRT 中使用 802.1x 动态 VLAN 的 HOWTO,并找出并提交了补丁以使它们正常工作。

你说的有些话似乎没有道理。特别是,如果能正常option dynamic_vlan '1'工作,但option dynamic_vlan '2'甚至没有出现在 hostapd 配置文件中,情况就不应该如此。OpenWRT 脚本读取您的 /etc/config/wireless 文件并将其转换为 hostapd 配置文件,只需查找 dynamic_vlan 选项,如果该选项存在并且具有整数值,则将其放入 hostapd 文件中,因此如果 1 出现在 hostapd 文件中,那么 2 也应该如此。当您将 dynamic_vlan 设置为 1 时,请检查它是否出现在您的 hostapd 配置文件中。这将提供更多信息以供参考。

答案2

这是一个老问题,但通过网络搜索尚不容易找到答案。操作指南帮助我缩小了工作概念的范围。以下是最后一个对我有用的配置。

首先,我在设备 EAP225v3 上使用版本 OpenWRT 21.02.1。

  1. 删除 wpad-basic* 包并安装 wpad。
  2. 默认 hostapd 存在“格式错误的 Radius 数据包”问题,无法与 WPA-EAP 设置配合使用。请使用以下帮助更正文件 /lib/netifd/hostapd.shGitCommit.并重新启动hostapd或者重启设备。
  3. 这是 /etc/config/network 中每个 VLAN 的示例
config device
        option type '8021q'
        option ifname 'br-lan'
        option vid '172'
        option name 'br-lan.172'

config device
        option type 'bridge'
        option name 'br-vlan172'
        list ports 'br-lan.172'
        list ports 'eth0'

config interface 'Guests'
        option proto 'none'
        option device 'br-vlan172'
  1. 最后,创建一个无线 iface,例如:
config wifi-iface 'default_radio1'
        option device 'radio1'
        option mode 'ap'
        option ssid 'test-ssid'
        option encryption 'wpa2'
        option auth_server '192.168.2.5'
        option auth_port '1812'
        option auth_secret '123456'
        option acct_server '192.168.2.5'
        option acct_port '1813'
        option acct_secret '123456'
        option dynamic_vlan '2'
        option vlan_tagged_interface 'br-lan'
        option vlan_bridge 'br-vlan'
        option vlan_naming '0'

答案3

config wifi-iface
    option dynamic_vlan '2'

似乎不起作用,一旦改为

config wifi-iface
    option dynamic_vlan '1'

一切都正常进行。

这确实带来了安全风险。

答案4

我认为并非一切都按预期运行。您只是自动返回到无动态 VLAN(或选项dynamic_vlan '0')。也许您的 hostapd 不支持动态 VLAN(例如,如果您正在使用hostapd-minihostapd-common)。您应该安装完整版本

opkg install hostapd

更多详情请见此处:

hostapd脚本

相关内容