802.1X 网络认证完全配置指南

1月 22, 2026·
Network Team
· 18 分钟阅读时长
blog 网络安全

802.1X 网络认证完全配置指南

文档信息
  • 标准依据: IEEE 802.1X-2020(Port-Based Network Access Control)
  • 适用场景: 企业有线局域网、Wi-Fi 无线网络、园区网准入控制
  • 文档版本: v2.0 · 2026-04

目录

  1. 协议概述
  2. 核心架构与角色
  3. 认证流程详解
  4. EAP 认证方法对比
  5. RADIUS 服务器配置
  6. 交换机(有线)配置
  7. 无线控制器配置
  8. 客户端配置
  9. 高可用与高级特性
  10. 安全加固建议
  11. 故障排查
  12. 典型部署场景

一、协议概述

IEEE 802.1X 是由 IEEE 802 委员会制定的**基于端口的网络访问控制(PNAC)**标准,首次发布于 2001 年,最新版本为 2020 年修订版。

1.1 设计目标

目标 说明
身份验证 确保只有已认证的用户/设备才能访问网络资源
访问控制 基于身份动态授予网络权限(VLAN、ACL、带宽)
审计追溯 记录认证日志,满足合规审计要求
抗非法接入 防止未授权设备通过物理接口接入内网

1.2 核心特点

  • 🔐 基于端口控制:在网络层之前完成身份验证,未认证流量被隔离
  • 🔄 协议无关性:通过 EAP(可扩展认证协议)支持多种认证方式
  • 🌐 适用性广:同时支持有线以太网(IEEE 802.3)和无线网络(IEEE 802.11)
  • 📦 标准封装:使用 EAPOL(EAP over LAN)在链路层传输认证报文

1.3 协议栈位置

应用层          ┌─────────────────┐
               │  业务应用         │
传输层/网络层    │  TCP/IP Stack    │
               ├─────────────────┤
数据链路层       │  IEEE 802.1X    │  ← 认证控制在此层
               │  EAPOL / EAP    │
物理层          │  以太网 / Wi-Fi  │
               └─────────────────┘

二、核心架构与角色

802.1X 定义了三个核心实体,构成完整的认证体系:

┌────────────────┐     EAPOL      ┌────────────────────┐     RADIUS     ┌──────────────────┐
│                │ ◄────────────► │                    │ ◄────────────► │                  │
│  申请者         │                │   认证者             │                │  认证服务器         │
│  Supplicant    │                │   Authenticator    │                │  Auth Server     │
│                │                │                    │                │                  │
│  PC / 终端      │                │   交换机 / AP        │                │  RADIUS / LDAP   │
└────────────────┘                └────────────────────┘                └──────────────────┘
     用户侧                              网络设备侧                            后端服务侧

2.1 申请者(Supplicant)

职责: 发起认证请求,提供身份凭据

  • 安装在用户终端(PC、手机、IoT 设备)上的 802.1X 客户端软件
  • 响应认证者发来的 EAP 请求,发送用户名、密码或证书
  • 常见实现:Windows 内置 Dot1x 客户端、macOS 系统支持、iNode、H3C iNode

2.2 认证者(Authenticator)

职责: 执行端口控制,中继认证报文

  • 通常是接入层交换机无线 AP/AC
  • 维护受控端口(Controlled Port)和非受控端口(Uncontrolled Port)
  • 认证前:受控端口阻断,仅允许 EAPOL 报文通过
  • 认证后:受控端口放行,允许正常业务流量
端口状态 非受控端口 受控端口
认证前 ✅ 开放(仅EAPOL) ❌ 阻断
认证中 ✅ 开放 ❌ 阻断
认证成功 ✅ 开放 ✅ 开放
认证失败 ✅ 开放 ❌ 阻断

2.3 认证服务器(Authentication Server)

职责: 验证身份,返回授权策略

  • 通常采用 RADIUS(Remote Authentication Dial-In User Service)协议
  • 接收认证者转发的 EAP 报文,完成最终身份验证
  • 可对接 AD/LDAP证书服务(PKI)、数据库等后端身份源
  • 认证结果携带授权属性(VLAN ID、ACL、带宽策略等)

三、认证流程详解

3.1 标准认证流程(EAP 中继方式)

申请者                    认证者(交换机)                 认证服务器(RADIUS)
  │                           │                               │
  │── EAPOL-Start ──────────► │                               │
  │                           │── RADIUS Access-Request ────► │
  │ ◄── EAP-Request/Identity ─│ ◄── RADIUS Access-Challenge ──│
  │                           │                               │
  │── EAP-Response/Identity ─►│                               │
  │                           │── RADIUS Access-Request ────► │
  │ ◄── EAP-Request/[Method] ─│ ◄── RADIUS Access-Challenge ──│
  │                           │                               │
  │    [多轮 EAP 交互...]      │        [身份验证中...]         │
  │                           │                               │
  │── EAP-Response/[Creds] ──►│                               │
  │                           │── RADIUS Access-Request ────► │
  │                           │                               │
  │                           │ ◄── RADIUS Access-Accept ─────│
  │                           │      (含授权属性: VLAN/ACL)   │
  │ ◄── EAP-Success ──────────│                               │
  │                           │                               │
  │  [受控端口打开,允许通信]    │                               │
  │ ◄══════════════════════ 正常网络通信 ══════════════════════ │

3.2 EAP 终结方式

区别于中继方式,EAP 在认证者(交换机)处终结,与 RADIUS 使用传统 PAP/CHAP 认证

申请者                    认证者(交换机)                 RADIUS 服务器
  │                           │                               │
  │── EAPOL-Start ──────────► │                               │
  │ ◄── EAP-Request/Identity ─│                               │
  │── EAP-Response/Identity ─►│                               │
  │                           │                               │
  │ ◄── EAP-Request/MD5 ──────│ [Challenge 由交换机生成]        │
  │── EAP-Response/MD5 ──────►│                               │
  │                           │── RADIUS Access-Request ────► │
  │                           │      (PAP/CHAP 方式)          │
  │                           │ ◄── RADIUS Access-Accept ─────│
  │ ◄── EAP-Success ──────────│                               │

3.3 报文类型说明

EAPOL 报文类型 发起方 说明
EAP-Packet 0x00 双方 承载 EAP 认证数据
EAPOL-Start 0x01 申请者 主动发起认证
EAPOL-Logoff 0x02 申请者 主动注销下线
EAPOL-Key 0x03 认证者 传输密钥信息(WPA2 等)
EAPOL-Encapsulated-ASF-Alert 0x04 - 安全告警

四、EAP 认证方法对比

4.1 主流方法全景对比

方法 安全等级 服务端证书 客户端证书 适用场景 推荐度
EAP-TLS ⭐⭐⭐⭐⭐ ✅ 必需 ✅ 必需 高安全企业、政府、金融 🏆 最推荐
PEAP-MSCHAPv2 ⭐⭐⭐⭐ ✅ 必需 ❌ 不需 一般企业、BYOD 场景 ✅ 推荐
PEAP-TLS ⭐⭐⭐⭐⭐ ✅ 必需 ✅ 必需 高安全无线 ✅ 推荐
EAP-TTLS ⭐⭐⭐⭐ ✅ 必需 ❌ 不需 跨平台场景 ✅ 推荐
EAP-FAST ⭐⭐⭐ 可选 可选 思科遗留环境 ⚠️ 谨慎
EAP-MD5 ❌ 无 ❌ 无 测试/实验室 ❌ 不推荐
LEAP ❌ 无 ❌ 无 已淘汰 🚫 禁用

4.2 EAP-TLS 详解(最高安全性)

工作原理: 基于 TLS 握手进行双向证书认证

优势:
  ✅ 双向身份验证(服务端 + 客户端均需证书)
  ✅ 完全消除密码泄露风险
  ✅ 抗中间人攻击(MitM)
  ✅ 支持完美前向保密(PFS)

部署要求:
  📋 需要 PKI 基础设施(CA 服务器)
  📋 为每台设备签发客户端证书
  📋 配置 CRL/OCSP 实现证书吊销检查
  📋 客户端证书需安全分发(MDM/GPO)

4.3 PEAP-MSCHAPv2 详解(企业主流)

工作原理: TLS 隧道保护内部 MSCHAPv2 密码认证

阶段一:建立 TLS 隧道
  客户端 ─── 验证服务端证书 ──► 建立加密隧道

阶段二:内部认证(隧道内)
  客户端 ─── 用户名/MSCHAPv2哈希 ──► RADIUS 验证

⚠️ 安全注意:
  必须启用服务端证书验证,否则易遭受钓鱼攻击
  不要将 "不验证服务端证书" 配置推送给终端

4.4 方法选型决策树

是否能部署 PKI 基础设施?
       是│                    否│
        ▼                       ▼
需要双向证书认证?         用户名/密码认证
        │                       │
       是│        否│            ▼
        ▼           ▼      选择 PEAP-MSCHAPv2
    EAP-TLS    PEAP-TLS    (必须验证服务端证书)
(最高安全性)(高安全性)

五、RADIUS 服务器配置

5.1 FreeRADIUS 配置(开源方案)

5.1.1 安装

# Ubuntu / Debian
sudo apt-get install freeradius freeradius-utils

# RHEL / CentOS
sudo yum install freeradius freeradius-utils freeradius-ldap

5.1.2 基础客户端配置(/etc/freeradius/3.0/clients.conf

# 定义认证者(交换机/AP)作为 RADIUS 客户端
client switch_core {
    ipaddr          = 192.168.1.254       # 交换机管理 IP
    secret          = "YourSecretKey123!" # 共享密钥(不少于16位,含大小写+数字+符号)
    nastype         = other
    shortname       = core-switch
}

client ap_controller {
    ipaddr          = 192.168.1.253       # 无线控制器 IP
    secret          = "WirelessKey456@"
    nastype         = other
    shortname       = wifi-ac
}

# 支持整个子网(可选)
client office_network {
    ipaddr          = 192.168.1.0/24
    secret          = "NetworkSecret789#"
}

5.1.3 用户配置(/etc/freeradius/3.0/users

# 本地用户(测试用)
testuser Cleartext-Password := "testpass123"
         Reply-Message = "Welcome, %{User-Name}!",
         Tunnel-Type = VLAN,
         Tunnel-Medium-Type = IEEE-802,
         Tunnel-Private-Group-Id = "100"

# 仅用于 MAC 地址认证的旁路(MAB)
00-11-22-33-44-55 Auth-Type := Accept
                  Tunnel-Type = VLAN,
                  Tunnel-Medium-Type = IEEE-802,
                  Tunnel-Private-Group-Id = "200"

5.1.4 EAP 模块配置(/etc/freeradius/3.0/mods-enabled/eap

eap {
    default_eap_type = peap              # 默认 EAP 方法

    timer_expire     = 60
    ignore_unknown_eap_types = no
    cisco_accounting_username_bug = no

    # EAP-TLS 配置
    tls-config tls-common {
        private_key_password = "your_ca_password"
        private_key_file     = ${certdir}/server.key
        certificate_file     = ${certdir}/server.pem
        ca_file              = ${cadir}/ca.pem
        ca_path              = ${cadir}
        dh_file              = ${certdir}/dh

        cipher_list          = "DEFAULT"
        tls_min_version      = "1.2"    # 最低 TLS 1.2
        ecdh_curve           = "prime256v1"

        # 证书吊销(生产环境建议启用)
        # check_crl = yes
    }

    tls {
        tls = tls-common
    }

    # PEAP 配置
    peap {
        tls = tls-common
        default_eap_type = mschapv2
        copy_request_to_tunnel = no
        use_tunneled_reply = no
        virtual_server = "inner-tunnel"
    }

    # MSCHAPv2
    mschapv2 {
        # send_error = yes
    }

    # EAP-TTLS
    ttls {
        tls = tls-common
        default_eap_type = md5
        copy_request_to_tunnel = no
        use_tunneled_reply = no
        virtual_server = "inner-tunnel"
    }
}

5.1.5 对接 Active Directory / LDAP

# /etc/freeradius/3.0/mods-enabled/ldap
ldap {
    server          = 'dc.yourdomain.com'
    port            = 389
    identity        = 'CN=radiusbind,OU=ServiceAccounts,DC=yourdomain,DC=com'
    password        = 'BindPassword123!'

    base_dn         = 'DC=yourdomain,DC=com'

    update {
        control:Password-With-Header += 'userPassword'
        control:NT-Password         := 'ntPassword'
    }

    user {
        base_dn     = "${..base_dn}"
        filter      = "(sAMAccountName=%{%{Stripped-User-Name}:-%{User-Name}})"
        scope       = 'sub'
    }

    group {
        base_dn         = "${..base_dn}"
        filter          = "(objectClass=group)"
        membership_attribute = 'memberOf'
    }

    # 连接池
    pool {
        start           = ${thread[pool].start_servers}
        min             = ${thread[pool].min_spare_servers}
        max             = ${thread[pool].max_servers}
        spare           = ${thread[pool].max_spare_servers}
        uses            = 0
        retry_delay     = 30
        lifetime        = 0
        idle_timeout    = 60
    }
    tls {
        start_tls = no
    }
}

5.1.6 服务管理

# 测试配置(调试模式)
sudo freeradius -X

# 启动服务
sudo systemctl enable freeradius
sudo systemctl start freeradius

# 测试认证
radtest testuser testpass123 127.0.0.1 0 testing123

# 检查日志
sudo journalctl -u freeradius -f
tail -f /var/log/freeradius/radius.log

5.2 Windows NPS(微软企业方案)

5.2.1 安装 NPS 角色

# PowerShell 安装 NPS 角色
Install-WindowsFeature NPAS -IncludeManagementTools

# 开启防火墙(RADIUS 端口)
New-NetFirewallRule -DisplayName "RADIUS Auth" -Direction Inbound -Protocol UDP -LocalPort 1812 -Action Allow
New-NetFirewallRule -DisplayName "RADIUS Acct" -Direction Inbound -Protocol UDP -LocalPort 1813 -Action Allow

5.2.2 NPS 配置要点

配置项 说明
RADIUS 客户端 添加交换机/AP IP,填写共享密钥
连接请求策略 配置 802.1X 认证请求转发/本地处理
网络策略 定义用户组对应 VLAN/权限(RADIUS 属性下发)
证书模板 配置服务端证书(来自企业 CA)
EAP 类型 推荐 PEAP-MSCHAPv2 或 EAP-TLS

5.2.3 RADIUS 属性下发 VLAN

在「网络策略」→「设置」→「RADIUS 属性」中添加:
  Tunnel-Type           = VLAN  (64号属性,值=13)
  Tunnel-Medium-Type    = 802   (65号属性,值=6)
  Tunnel-Pvt-Group-Id   = 100   (81号属性,值=VLAN ID)

六、交换机(有线)配置

6.1 华为交换机配置示例

# ── 系统视图 ──────────────────────────────
system-view
sysname Core-Switch

# ── RADIUS 方案配置 ────────────────────────
radius scheme radius_corp
 primary authentication 10.10.1.100       # RADIUS 主服务器
 primary accounting    10.10.1.100
 secondary authentication 10.10.1.101     # RADIUS 备服务器
 secondary accounting    10.10.1.101
 key authentication cipher P@ssW0rd!      # 共享密钥
 key accounting    cipher P@ssW0rd!
 user-name-format without-domain          # 用户名不携带域名
 timer response-timeout 5                 # 响应超时 5 秒
 retry 3                                  # 重试 3 次
quit

# ── AAA 认证域配置 ──────────────────────────
aaa
 domain corp.com
  radius-server radius_corp
  authentication-mode radius
  accounting-mode radius
  authorization-mode radius
 quit
quit

# ── 全局开启 802.1X ─────────────────────────
dot1x enable

# ── 接口配置 802.1X ────────────────────────
interface GigabitEthernet 0/0/1
 description "Access Port - Staff Area"
 port link-type access
 port default vlan 100                    # 默认 VLAN(认证前隔离 VLAN)
 dot1x enable
 dot1x authentication-method eap          # EAP 中继方式(推荐)
 dot1x port-method mac-based              # MAC-based(每用户独立认证)
 dot1x re-authenticate                    # 开启周期性重认证
 dot1x guest-vlan 999                     # 未认证用户进入 Guest VLAN
 dot1x auth-fail vlan 998                 # 认证失败进入隔离 VLAN
 dot1x critical-vlan 997                  # RADIUS 不可达时进入 Critical VLAN
quit

# ── 显示验证 ────────────────────────────────
display dot1x
display dot1x sessions
display dot1x statistics interface GigabitEthernet0/0/1

6.2 H3C 交换机配置示例

system-view
sysname H3C-Switch

# RADIUS 方案
radius scheme corp_radius
 primary authentication 10.10.1.100 1812
 primary accounting    10.10.1.100 1813
 key authentication cipher P@ssW0rd!
 key accounting    cipher P@ssW0rd!
 user-name-format without-domain
quit

# 本地备用用户
local-user fallback class network
 password cipher F@llB@ck123!
 service-type lan-access
quit

# ISP 域
domain corp.com
 authentication lan-access radius-scheme corp_radius local
 authorization  lan-access radius-scheme corp_radius local
 accounting     lan-access radius-scheme corp_radius local
quit

# 全局开启 802.1X
dot1x

# 接口配置
interface GigabitEthernet1/0/1
 description "Staff Workstation Port"
 port access vlan 100
 dot1x
 dot1x port-method macbased
 dot1x mandatory-domain corp.com
 dot1x guest-vlan 999
 dot1x auth-fail vlan 998
quit

# 验证命令
display dot1x
display dot1x connection
display dot1x sessions interface GigabitEthernet1/0/1

6.3 Cisco Catalyst 交换机配置示例

! ── 全局 AAA 配置 ──────────────────────────
aaa new-model
aaa authentication dot1x default group radius
aaa authorization network default group radius
aaa accounting dot1x default start-stop group radius

! ── RADIUS 服务器配置 ─────────────────────
radius server CORP-RADIUS
 address ipv4 10.10.1.100 auth-port 1812 acct-port 1813
 key P@ssW0rd!

! ── 备份 RADIUS 服务器 ────────────────────
radius server CORP-RADIUS-BACKUP
 address ipv4 10.10.1.101 auth-port 1812 acct-port 1813
 key P@ssW0rd!

aaa group server radius RADIUS-GROUP
 server name CORP-RADIUS
 server name CORP-RADIUS-BACKUP
 deadtime 10

! ── 全局 802.1X ───────────────────────────
dot1x system-auth-control

! ── VLAN 定义 ─────────────────────────────
vlan 100
 name Staff-VLAN
vlan 998
 name Auth-Fail-VLAN
vlan 999
 name Guest-VLAN

! ── 接口配置 ──────────────────────────────
interface GigabitEthernet1/0/1
 description "Staff Workstation Port"
 switchport mode access
 switchport access vlan 100
 
 ! 开启 802.1X
 authentication port-control auto
 dot1x pae authenticator
 
 ! 开启 MAB(设备无客户端时使用 MAC 认证)
 mab
 
 ! 认证顺序:先 802.1X,失败后尝试 MAB
 authentication order dot1x mab
 authentication priority dot1x mab
 
 ! Guest VLAN(未认证)
 authentication event no-response action authorize vlan 999
 
 ! Auth-Fail VLAN(认证失败)
 authentication event fail action authorize vlan 998
 
 ! 开启 RADIUS 下发 VLAN
 authentication violation restrict
 spanning-tree portfast

! ── 验证命令 ──────────────────────────────
! show dot1x all
! show authentication sessions interface GigabitEthernet1/0/1
! show radius statistics

6.4 VLAN 策略规划建议

VLAN 名称 用途 权限
100 Staff-VLAN 认证成功的员工 完整内网访问
200 IT-Admin IT 管理员 所有权限 + 管理
300 Finance 财务人员 限制访问财务系统
800 IoT-Device IoT 设备(MAB) 仅特定系统
998 Auth-Fail 认证失败隔离 无访问 / 重定向
999 Guest 未认证 / 访客 仅互联网
997 Critical RADIUS 故障旁路 最小权限

七、无线控制器配置

7.1 企业 Wi-Fi 802.1X(WPA2/WPA3-Enterprise)架构

用户设备(STA)
     │  WPA2/WPA3-Enterprise
     │  (EAPOL over Air)
  无线 AP
     │  CAPWAP 隧道
无线控制器(AC)        ──── RADIUS ────►  RADIUS 服务器
     │  有线上联
 核心交换机

7.2 Cisco WLC/Catalyst Center(无线 SSID 配置要点)

SSID 配置:
  Security Policy: WPA2-Enterprise 或 WPA3-Enterprise
  Authentication:  802.1X
  
AAA 配置:
  RADIUS Server: 10.10.1.100 (Port 1812/1813)
  Shared Secret: [填入共享密钥]
  
高级选项:
  Dynamic VLAN Assignment: Enabled  ← 支持 RADIUS 下发 VLAN
  PMF (Protected Management Frames): Required (WPA3)
  Fast Roaming (802.11r): Enabled   ← 漫游时快速重认证
  
  Pre-Auth Timeout: 30s
  EAP Request Timeout: 30s

7.3 华为 AC 无线配置

# SSID 安全策略(WPA2-Enterprise)
security-profile name corp_wifi
 security wpa2
 authentication-mode dot1x
quit

# RADIUS 认证
radius-server template corp_radius
 radius-server authentication 10.10.1.100 1812
 radius-server accounting    10.10.1.100 1813
 radius-server shared-key cipher P@ssW0rd!
quit

# AAA 域
aaa
 domain corp.com
  radius-server corp_radius
 quit
quit

# VAP(虚拟接入点)绑定
vap-profile name corp_vap
 ssid "Corp-WiFi"
 security-profile corp_wifi
 service-vlan 100
 dot1x-profile corp_dot1x
quit

八、客户端配置

8.1 Windows 客户端配置

8.1.1 图形界面配置(PEAP-MSCHAPv2)

1. 打开「控制面板」→「网络和共享中心」→「更改适配器设置」
2. 右键目标网卡 → 「属性」→「身份验证」选项卡
3. 勾选「启用 IEEE 802.1X 身份验证」
4. 选择 EAP 类型:「Microsoft 受保护的 EAP (PEAP)」
5. 点击「设置」:
   - 勾选「验证服务器证书」(重要!)
   - 选择受信任的 CA 证书
   - 身份验证方法:「加密身份验证 (MSCHAPv2)」

8.1.2 通过 GPO/PowerShell 批量配置

# 使用组策略推送 802.1X 配置
# 路径:计算机配置 → Windows 设置 → 安全设置 → 有线网络(IEEE 802.3)策略

# 或使用 netsh 命令
netsh lan add profile filename="dot1x_profile.xml" interface="以太网"

# 启用有线自动配置服务
Set-Service dot3svc -StartupType Automatic
Start-Service dot3svc

# 查看当前 802.1X 状态
netsh lan show settings
netsh lan show profiles

8.1.3 Windows XML 配置文件模板(PEAP)

<?xml version="1.0"?>
<LANProfile xmlns="http://www.microsoft.com/networking/LAN/profile/v1">
  <MSM>
    <security>
      <OneXEnforced>true</OneXEnforced>
      <OneXEnabled>true</OneXEnabled>
      <OneX xmlns="http://www.microsoft.com/networking/OneX/v1">
        <authMode>user</authMode>
        <EAPConfig>
          <EapHostConfig xmlns="http://www.microsoft.com/provisioning/EapHostConfig">
            <EapMethod>
              <Type xmlns="http://www.microsoft.com/provisioning/EapCommon">25</Type>
              <VendorId xmlns="http://www.microsoft.com/provisioning/EapCommon">0</VendorId>
              <VendorType xmlns="http://www.microsoft.com/provisioning/EapCommon">0</VendorType>
              <AuthorId xmlns="http://www.microsoft.com/provisioning/EapCommon">0</AuthorId>
            </EapMethod>
            <Config xmlns="http://www.microsoft.com/provisioning/EapHostConfig">
              <Eap xmlns="http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1">
                <Type>25</Type>
                <EapType xmlns="http://www.microsoft.com/provisioning/MsPeapConnectionPropertiesV1">
                  <ServerValidation>
                    <DisableUserPromptForServerValidation>true</DisableUserPromptForServerValidation>
                    <ServerNames>radius.corp.com</ServerNames>
                    <TrustedRootCA><!-- Root CA Thumbprint --></TrustedRootCA>
                  </ServerValidation>
                  <FastReconnect>true</FastReconnect>
                  <InnerEapOptional>false</InnerEapOptional>
                  <Eap xmlns="http://www.microsoft.com/provisioning/BaseEapConnectionPropertiesV1">
                    <Type>26</Type><!-- MSCHAPv2 -->
                  </Eap>
                  <EnableQuarantineChecks>false</EnableQuarantineChecks>
                  <RequireCryptoBinding>true</RequireCryptoBinding>
                  <PeapExtensions/>
                </EapType>
              </Eap>
            </Config>
          </EapHostConfig>
        </EAPConfig>
      </OneX>
    </security>
  </MSM>
</LANProfile>

8.2 Linux 客户端配置(wpa_supplicant)

8.2.1 PEAP-MSCHAPv2 配置

# /etc/wpa_supplicant/wpa_supplicant-eth0.conf

ctrl_interface=/run/wpa_supplicant
ctrl_interface_group=netdev
update_config=1

network={
    key_mgmt=IEEE8021X
    eap=PEAP
    identity="username@corp.com"
    password="YourPassword123"
    ca_cert="/etc/ssl/certs/corp-ca.pem"    # 必须验证服务端证书
    phase1="peaplabel=0"
    phase2="auth=MSCHAPV2"
    eapol_flags=0
}

8.2.2 EAP-TLS 配置

network={
    key_mgmt=IEEE8021X
    eap=TLS
    identity="user@corp.com"
    ca_cert="/etc/ssl/certs/corp-ca.pem"          # CA 证书
    client_cert="/etc/ssl/certs/user-cert.pem"    # 用户证书
    private_key="/etc/ssl/private/user-key.pem"   # 用户私钥
    private_key_passwd="KeyPassword123"
    eapol_flags=0
}

8.2.3 启用服务

# 方式一:wpa_supplicant 直接启用
sudo wpa_supplicant -D wired -i eth0 -c /etc/wpa_supplicant/wpa_supplicant-eth0.conf -B
sudo dhclient eth0

# 方式二:systemd 服务(推荐)
sudo systemctl enable wpa_supplicant@eth0
sudo systemctl start wpa_supplicant@eth0

# 查看状态
sudo wpa_cli -i eth0 status
sudo wpa_cli -i eth0 log

8.3 macOS 客户端配置

系统设置 → 网络 → 以太网(或 Wi-Fi)→ 802.1X

认证方式:
  ☑ PEAP            (推荐,支持用户名密码)
  ☑ EAP-TLS         (推荐,证书认证)
  ☐ LEAP            (禁用)
  ☐ EAP-MD5         (禁用)

用户名:user@corp.com
密码:[用户密码 / 证书]

高级 → 信任 → 选择企业 CA 证书 → 信任

8.4 iOS/Android(BYOD 场景)

iOS:
  设置 → Wi-Fi → 目标 SSID → 配置
  EAP 方法:PEAP / EAP-TLS
  必须通过 MDM(如 Jamf/Intune)推送证书和配置文件

Android:
  Wi-Fi → 目标 SSID → 高级选项
  EAP 方法:PEAP / TLS
  阶段 2 身份验证:MSCHAPV2
  CA 证书:手动导入企业 CA 证书
  推荐通过 MDM(Android Enterprise)统一配置

九、高可用与高级特性

9.1 RADIUS 高可用设计

                        ┌─────────────────────┐
                        │   负载均衡/故障转移   │
                        └────────┬────────────┘
              ┌──────────────────┼──────────────────┐
              ▼                  ▼                  ▼
    ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
    │  RADIUS 主节点  │ │  RADIUS 备节点  │ │  本地认证备份   │
    │  10.10.1.100    │ │  10.10.1.101    │ │ (交换机本地用户) │
    │  FreeRADIUS     │ │  FreeRADIUS     │ │                 │
    └─────────────────┘ └─────────────────┘ └─────────────────┘
              │                  │
    ┌─────────▼──────────────────▼─────────┐
    │           共享 LDAP/AD               │
    │         (账户/证书后端)               │
    └──────────────────────────────────────┘

9.2 关键高可用参数配置

# 华为交换机 - RADIUS 高可用配置
radius scheme radius_ha
 primary authentication 10.10.1.100 1812 weight 80
 secondary authentication 10.10.1.101 1812 weight 20
 timer response-timeout 5       # 5 秒超时切换
 retry 2                        # 2 次重试后切备
 dead-time 5                    # 5 分钟恢复探测
quit

9.3 MAC 认证绕过(MAB)

适用场景: 打印机、IP 电话、门禁控制器等无 802.1X 客户端的设备

工作原理:
  1. 设备连接端口,未响应 EAP 请求
  2. 认证者超时,切换到 MAB 模式
  3. 以设备 MAC 地址为用户名发送 RADIUS 请求
  4. RADIUS 验证 MAC 是否在白名单
  5. 认证通过 → 授权进入 IoT VLAN

Cisco 配置:
  authentication order dot1x mab    ! 先 802.1X,超时后 MAB
  authentication fallback FALLBACK-ACL

华为配置:
  mac-authentication enable
  mac-authentication user-name-format mac-address with-hyphen

9.4 周期性重认证

# 华为 - 开启重认证
dot1x timer re-authenticate 3600     # 每 3600 秒(1小时)重认证
interface GigabitEthernet 0/0/1
 dot1x re-authenticate               # 接口开启重认证

# Cisco
interface GigabitEthernet1/0/1
 authentication periodic             ! 开启周期性重认证
 authentication timer reauthenticate 3600

9.5 动态 VLAN 下发

RADIUS 服务器通过以下标准属性动态为用户分配 VLAN:

RFC 3580 定义的 VLAN 属性:
  Attribute 64: Tunnel-Type       = VLAN (13)
  Attribute 65: Tunnel-Medium-Type = 802 (6)
  Attribute 81: Tunnel-Private-Group-ID = <VLAN ID>

示例(RADIUS 返回):
  Tunnel-Type = VLAN
  Tunnel-Medium-Type = IEEE-802
  Tunnel-Private-Group-ID = "100"

9.6 ACL 动态下发

Filter-ID(属性 11):指定预配置 ACL 名称
  Filter-Id = "ACL_STAFF_INBOUND"

Cisco AV-Pair(属性 26,Cisco VSA):
  Cisco-AVPair = "ip:inacl#1=permit tcp any 10.0.0.0/8 eq 80"
  Cisco-AVPair = "ip:inacl#2=permit tcp any 10.0.0.0/8 eq 443"
  Cisco-AVPair = "ip:inacl#3=deny ip any any"

十、安全加固建议

10.1 共享密钥安全

✅ 最佳实践:
  - 长度 ≥ 16 字符
  - 包含大小写字母、数字、特殊符号
  - 每台网络设备使用唯一的共享密钥
  - 定期轮换(建议每季度)
  - 避免在配置中以明文显示(使用 cipher 加密存储)

❌ 禁止:
  - 使用默认密钥(如 "secret", "radius123")
  - 多台设备共享同一密钥
  - 长期不更换密钥

10.2 证书安全(EAP-TLS/PEAP)

服务端证书:
  ✅ 使用受信任企业 CA 签发(或知名公共 CA)
  ✅ 有效期建议 1-2 年
  ✅ 算法:RSA 2048 位 或 ECDSA P-256 以上
  ✅ 配置 CRL/OCSP 吊销检查
  ✅ 证书 CN/SAN 与 RADIUS 服务器名称一致

客户端证书(EAP-TLS):
  ✅ 每设备唯一证书
  ✅ 通过企业 MDM/GPO 自动注册
  ✅ 有效期建议 1 年
  ✅ 离职/设备报废时及时吊销

10.3 客户端强制验证服务端证书

⚠️ 最常见的安全漏洞: 客户端未验证 RADIUS 服务端证书,导致钓鱼攻击成功

必须在所有客户端配置策略中强制:
  - 验证服务端证书 = 启用
  - 指定受信任 CA = 企业内部 CA
  - 服务端名称 = radius.corp.com
  - 拒绝用户手动绕过证书警告

10.4 Guest VLAN / Critical VLAN 安全

Guest VLAN 策略:
  - 仅允许 DHCP、DNS、HTTP/HTTPS(互联网)
  - 禁止访问内网任何资源
  - 速率限制(防止占用带宽)
  - 部署 Web 认证门户(可选)

Critical VLAN(RADIUS 故障旁路):
  - 仅对已知的预授权设备开放
  - 权限最小化(关键业务系统访问)
  - 记录所有进入 Critical VLAN 的事件
  - RADIUS 恢复后强制重认证

10.5 日志审计

# FreeRADIUS 详细日志
# /etc/freeradius/3.0/radiusd.conf
log {
    destination = files
    file = /var/log/freeradius/radius.log
    auth = yes           # 记录所有认证请求
    auth_badpass = yes   # 记录失败认证
    auth_goodpass = yes  # 记录成功认证
}

# 华为交换机 - 开启 RADIUS 认证日志
info-center source RADIUS channel loghost
info-center loghost 10.10.1.200 facility local7

# 监控告警建议(SIEM 规则):
# - 同一账号 5 分钟内失败 ≥ 5 次 → 告警暴力破解
# - 非工作时间认证成功 → 告警异常登录
# - RADIUS 服务不可达 → 立即告警

十一、故障排查

11.1 常见问题诊断流程

认证失败?
     
     ├── 1. 检查物理连接(链路是否 UP
     
     ├── 2. 检查 RADIUS 服务器连通性
              ping <RADIUS IP>
              telnet <RADIUS IP> 1812
     
     ├── 3. 检查共享密钥是否一致
              RADIUS 客户端配置 vs 交换机配置
     
     ├── 4. 检查 EAP 类型是否匹配
              交换机配置的 EAP 方法 vs RADIUS 允许的 EAP 方法
     
     ├── 5. 检查证书有效性(PEAP/EAP-TLS
              证书是否过期
              CA 链是否完整
              客户端是否信任 CA
     
     └── 6. 查看日志
               RADIUS: /var/log/freeradius/radius.log(开启 -X debug
               交换机: display dot1x statistics

11.2 常见错误及解决方案

错误现象 可能原因 解决方案
EAP-Failure 立即返回 EAP 方法不支持 检查 RADIUS 和交换机 EAP 配置
Access-Reject 用户名/密码错误或不存在 检查 AD/LDAP 账户状态
No response from server RADIUS 不可达 / 防火墙拦截 检查 UDP 1812 防火墙规则
Bad authenticator 共享密钥不匹配 确认交换机与 RADIUS 密钥一致
证书警告 / 认证终止 服务端证书不受信 导入企业 CA 到客户端信任库
认证循环重试 超时配置过短 增大 timer response-timeout
MAB 认证失败 MAC 地址未注册 将 MAC 加入 RADIUS MAC 白名单
VLAN 未切换 动态 VLAN 属性格式错误 检查 Tunnel-Type/Medium-Type 值

11.3 调试命令汇总

# FreeRADIUS 调试模式(临时)
sudo systemctl stop freeradius
sudo freeradius -X 2>&1 | tee /tmp/radius_debug.log

# 命令行测试认证
radtest username password 127.0.0.1 0 shared_secret

# EAP 认证测试(需 eapol_test)
eapol_test -c peap_test.conf -a 127.0.0.1 -p 1812 -s shared_secret

# 华为交换机
<Huawei> debugging dot1x all
<Huawei> terminal debugging
<Huawei> display dot1x statistics interface GigabitEthernet0/0/1
<Huawei> reset dot1x statistics

# Cisco 交换机
Switch# debug dot1x all
Switch# show authentication sessions interface Gi1/0/1 details
Switch# show radius statistics

# H3C 交换机
<H3C> debugging dot1x all
<H3C> display dot1x connection
<H3C> display dot1x sessions

十二、典型部署场景

场景一:中小企业(100-500 人)

推荐方案:PEAP-MSCHAPv2 + Windows NPS + Active Directory

架构:
  ┌──────────┐    ┌──────────────┐    ┌──────────────────┐
  │ 员工终端  │────│  接入交换机   │────│  NPS (RADIUS)    │
  │ Win/Mac  │    │  IEEE 802.1X │    │  + Active Dir    │
  └──────────┘    └──────────────┘    └──────────────────┘

优势:
  ✅ 利用现有 AD 账户体系,无需额外用户管理
  ✅ Windows 原生支持,无需额外客户端
  ✅ NPS 免费内置于 Windows Server
  ✅ 通过 GPO 统一推送 802.1X 配置

部署步骤:
  1. Windows Server 安装 NPS 角色
  2. 配置 NPS 连接请求策略和网络策略
  3. 添加交换机为 RADIUS 客户端
  4. 交换机配置 802.1X + RADIUS 指向 NPS
  5. GPO 推送客户端 802.1X 配置

场景二:大型企业(1000+ 人)

推荐方案:EAP-TLS + FreeRADIUS + PKI + MDM

架构:
  ┌──────────────────────────────────────────────────────┐
  │                     企业 PKI                          │
  │   根 CA → 中间 CA → 服务端证书 + 客户端证书(每设备)  │
  └───────────────────────────┬──────────────────────────┘
         ┌────────────────────┼─────────────────────┐
         │                    │                     │
  ┌─────────────┐    ┌─────────────────┐    ┌─────────────────┐
  │   MDM       │    │  FreeRADIUS HA  │    │  LDAP / AD      │
  │ (Intune等)  │    │  主 + 备        │    │  用户身份源     │
  └──────┬──────┘    └─────────────────┘    └─────────────────┘
         │ 推送证书          ▲ 认证
  ┌──────▼──────────────────┴────────────────────────┐
  │              企业接入层(有线 + 无线)              │
  └─────────────────────────────────────────────────┘

优势:
  ✅ 最高安全级别,无密码泄露风险
  ✅ 证书与设备绑定,设备即身份
  ✅ MDM 管理证书生命周期(自动申请/续期/吊销)

场景三:高校 / 校园网

推荐方案:802.1X + RADIUS + VLAN 分段

VLAN 规划:
  VLAN 10 - 教职工(完整内网访问)
  VLAN 20 - 学生宿舍(互联网 + 校内资源)
  VLAN 30 - 教学设备(仅校内资源)
  VLAN 40 - 服务器区(严格 ACL)
  VLAN 999 - Guest(仅互联网,带宽限制)

认证方式:
  有线(宿舍/教室):802.1X + PEAP-MSCHAPv2
  无线:WPA2-Enterprise / WPA3-Enterprise
  门禁/打印机:MAB(MAC 地址认证)

参考资料

资源 说明
IEEE 802.1X-2020 官方标准文档
RFC 3748 - EAP EAP 协议定义
RFC 2865 - RADIUS RADIUS 协议定义
RFC 3580 - 802.1X RADIUS 802.1X 与 RADIUS 集成
FreeRADIUS 官方文档 FreeRADIUS 配置参考
Microsoft EAP 文档 Windows/NPS EAP 配置
Cisco 802.1X 配置指南 Cisco IOS 配置参考
华为 802.1X 文档 华为设备配置参考
H3C 802.1X 配置 H3C 设备配置参考

📌 最后更新: 2026 年 4 月
📋 适用标准: IEEE 802.1X-2020 · RFC 3748 · RFC 2865 · RFC 3580
⚠️ 安全提醒: 生产环境部署前务必在测试环境充分验证,并确保已制定回退方案