IEEE802.1X認証の動作確認を多台数のサプリカントで行いたかった。実機を用意するのは難しかったので、scapyというpythonのツールを使って簡単なパケットジェネレーターを作ってみた。
100台のサプリカントからEAPOL-StartとEAP-Response/Identityを送る。
Authenticatorから送られてきたEAP-Response/Requestに対し、動的にEAP-Response/Identityを返したかったけれどやり方がよく分からなかったのでこれで妥協。このやり方でもAuthenticatorがRADIUSに問い合わせをするところまではやってくれたのでとりあえずOK。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from scapy.all import *
import time
# MAC address
src_mac = "00:a0:de:00:00:"
dst_mac = "01:80:c2:00:00:03"
def send_eapol_start (iface, src):
eapol_start = Ether(src=src, dst=dst_mac)/EAPOL(type=1)
sendp(eapol_start,iface=iface)
def send_response_identity (iface, src):
response_identity = Ether(src=src, dst=dst_mac)/EAPOL(type=0)/EAP(code=2,len=10,type=1,identity=b'user')
sendp(response_identity,iface=iface)
while True:
for i in range (100):
# MACアドレスの生成
mac_addr = src_mac + format(i, '02x')
# EAPOLを送信
send_eapol_start("en4", mac_addr)
# AuthenticatorからのEAP-request待ち
time.sleep(3)
# Response-Identityを送信
send_response_identity("en4", mac_addr)
time.sleep(2)
参考にしたのはこのあたり