Captura RADIUS i operacions POI de Tap
lc sniff radius, lc hunt radius i lc tap radius comparteixen descodificació UDP, predicats ordinaris exactes, perfils de captura i associació limitada de peticions. La captura ordinària no requereix ni una compilació LI ni una tasca X1 activada. lc process continua sent neutral respecte del protocol; utilitzeu els comandaments existents lc watch live, watch file i watch remote per veure les metadades RADIUS.
Les vies RADIUS de Tap local i Hunt/Process autenticades directament han superat verificacions sintètiques de versió, incloses les instantànies de filtres, l’aïllament d’àmbit en reconnectar, les sortides ordinàries i la paritat X2 descodificada. Actualitzeu tant el Hunter com el processador per obtenir instantànies de filtres autoritatives. Els relés conserven el trànsit ordinari però no transmeten l’autoritat de l’origen de captura per a X2. La verificació de línies conegudes en producció i l’acceptació del MDF receptor continuen pendents; les dades de prova del repositori són sintètiques.
Topologia de captura i àmbit admès
Emmiralleu l’enllaç UDP visible de BRAS/BNG a AAA en una interfície POI dedicada:
flowchart TB
BNG["BRAS/BNG"] <--> RADIUS["UDP RADIUS link"] <--> AAA["AAA server"]
RADIUS -->|"mirror"| POI["Dedicated tap POI"]
POI -->|"X2/TLS"| MDF["MDF"]
ADMF["ADMF"] -->|"X1/mTLS"| POI
Observeu tant la direcció de petició com la de resposta en la mateixa font de captura aïllada. Els valors per defecte inclouen UDP 1812 i 1813; els ports configurats s’afegeixen a aquests valors. S’admeten IPv4 i IPv6 Access-Request (1), Access-Accept (2), Access-Reject (3), Accounting-Request (4), Accounting-Response (5) i Access-Challenge (11). No s’admeten TCP, RadSec/TLS, DTLS, trànsit intern xifrat, CoA, Disconnect ni altres codis de missatge. No s’accepta ni es necessita cap secret compartit. Tots els fragments IPv4 i totes les capçaleres Fragment d’IPv6, inclosos els fragments atòmics, s’exclouen de l’anàlisi i l’atribució RADIUS. Les sortides genèriques de paquets poden conservar fragments si el BPF de captura els admet; un BPF només de ports no ho pot garantir.
L’àmbit de l’operador i la revisió del perfil descriuen una frontera d’unicitat establerta per l’administrador. Els noms d’interfície, els extrems IP, els atributs NAS i els filtres BPF no demostren aïllament d’operadors. Una font de proxy s’ha d’aïllar en aquella frontera; rebutgeu la selecció de línies en una font mixta amb valors concrets de línia no únics. Els extrems client/servidor de transport continuen separats dels camps NAS transportats pel paquet. Reiniciar o reobrir la captura inicia una època nova; les proves antigues no poden travessar aquest buit.
L’associació de respostes és observacional, no una verificació de l’autenticador. Sense secret, ni el Response Authenticator ni l’Identifier de vuit bits demostren pertinença. L’herència única requereix exactament una petició compatible observada en el mateix àmbit i tupla de captura. Les peticions competidores, l’estat caducat i la pèrdua de capacitat suprimeixen l’herència. Una challenge no autoritza l’intercanvi següent i l’autenticació no autoritza l’accounting posterior sense identitat. Les respostes observades abans de les seves peticions no s’emmagatzemen temporalment ni s’autoritzen retroactivament.
Confiança distribuïda i sincronització dels filtres
Per a RADIUS X2, connecteu el Hunter directament amb TLS mutu. El SAN del certificat de client verificat ha de coincidir amb el seu ID de Hunter; aquest ID també ha de coincidir amb l’origen de l’observació. TLS només de servidor i el transport insegur admeten captura ordinària però no autoritzen X2. Els processadors ascendents conserven els bytes originals, l’àmbit de captura i les proves d’atribució, però un certificat de relé només demostra la identitat del relé. Lliureu X2 al POI connectat directament; l’autorització d’origen de relé no forma part d’aquesta versió.
Els Hunters actualitzats demanen una instantània de filtres autoritativa en subscriure’s. El processador captura la política actual i connecta el flux d’actualitzacions atòmicament; el Hunter substitueix tota la seva política de registre abans d’aplicar les actualitzacions en directe posteriors. Les instantànies buides eliminen els filtres suprimits. Una actualització perduda per una cua plena tanca aquella subscripció perquè la reconnexió pugui obtenir la política actual.
Les versions antigues conserven el seu protocol d’actualització existent. Un Hunter actualitzat tracta les actualitzacions ADD antigues com a substitucions, però un processador antic no pot comunicar eliminacions durant buits de registre com a instantània autoritativa. Actualitzeu tots dos extrems per obtenir les garanties de la versió RADIUS distribuïda; les versions antigues sense capacitat RADIUS no poden rebre filtres RADIUS. Els paquets bruts antics continuen disponibles per a les sortides ordinàries i no poden autoritzar X2 sense proves actuals validades.
L’associació de peticions continua sent local a un Hunter, una interfície i una època de captura. Recrear l’estat de captura/transmissió inicia una època nova, mentre les observacions ja en cua conserven el seu àmbit original. Una petició perduda en el transport encara pot tenir una resposta autoritzada a partir de proves úniques del costat de captura, subjecta a l’admissió actual de tasques del processador; una petició mai observada en la captura no pot fer-ho.
Captura ordinària
Descodifiqueu una gravació fora de línia; no cal cap compilació LI ni tasca:
lc sniff radius -r radius.pcap --format text
Observeu un User-Name complet exacte, inclosos el realm i les majúscules/minúscules:
sudo lc sniff radius -i mirror0 --radius-username 'alice@example.test'
Captureu ports addicionals de servei i escriviu el flux opcional d’observació:
sudo lc tap radius -i mirror0 --insecure --radius-port 1645,1646 \
--log-dir ./logs --log-streams radius
Utilitzeu captura distribuïda ordinària; X2 requereix addicionalment un origen autenticat:
sudo lc hunt radius -i mirror0 --processor processor.example:55555 \
--tls-ca ca.crt --radius-username 'alice@example.test'
Els predicats ordinaris són conjuntius: tots els criteris de nom d’usuari, MAC, AVP i línia resolta proporcionats han de coincidir amb el mateix missatge completament validat, o el predicat complet de petició ha de continuar vigent per a una resposta associada de manera única. Aquesta conjunció pertany a la política del comandament ordinari. A Tap i Hunt, grups dinàmics de filtres/tasques configurats independentment també poden seleccionar trànsit; la selecció és la unió de grups complets coincidents. Per tant, un grup dinàmic pot transmetre trànsit fora del predicat del comandament ordinari. Els grups no combinen mai criteris parcials i les coincidències ordinàries no autoritzen LI.
Paquets diferents no aporten mai criteris parcials. Els atributs repetits poden satisfer criteris separats sense concatenació. La coincidència del nom d’usuari és exacta sobre bytes UTF-8 i distingeix majúscules/minúscules: sense retallar, comodins, eliminació de realm ni normalització Unicode. Els objectius de text requereixen entre 1 i 253 bytes UTF-8.
Per a sniff radius, els logs estructurats s’executen després de la selecció ordinària i comparteixen la mateixa observació, àmbit i associació de captura que les sortides CLI/de paquets. Les coincidències ordinàries rebutjades no generen registres estructurats; les peticions competidores encara arriben al correlacionador abans de la selecció i la validació només es compta una vegada.
L’escriptura PCAP, la transmissió ascendent, els subscriptors Watch, la sortida d’interfície virtual, els logs estructurats i el lliurament LI mantenen activació i cues pròpies. Activar X2 no activa fitxers de paquets ni logs; activar --log-dir no autoritza LI. RADIUS no utilitza fitxers VoIP per trucada. El text, JSON i logs habituals oculten credencials, autenticadors i atributs no autoritzats; les sortides PCAP i X2 explícites conserven els bytes originals validats segons els seus contractes de sortida.
Opcions i configuració compartides
Els tres comandaments de protocol utilitzen les mateixes claus YAML radius.*. Els noms d’entorn són LIPPYCAT_RADIUS_ seguit de la clau en majúscules. Les opcions prevalen sobre l’entorn, l’entorn sobre YAML i YAML sobre els valors per defecte. Per exemple, --radius-transaction-timeout 20s, radius.transaction_timeout: 20s i LIPPYCAT_RADIUS_TRANSACTION_TIMEOUT=20s seleccionen el mateix paràmetre.
| Opció | Clau YAML sota radius | Valor per defecte / admès |
|---|---|---|
--radius-port | ports | Ports UDP addicionals, 1–65535; 1812/1813 sempre inclosos |
--radius-username | username | Buit; User-Name complet exacte |
--radius-mac | mac | Buit; sis octets en majúscules separats per guions |
--radius-attribute | attribute | AVP hexadecimal complet repetible |
--radius-mac-profile | mac_profile | Buit; seleccioneu explícitament calling-station-id-uppercase-hyphen-v1 per a MAC |
--radius-line-profile | line_profile | Buit; nas-port-id o agent-circuit-id |
--radius-line-id | line_id | Buit; valor concret d’atribut, mai una clau d’inventari |
--radius-operator-scope | operator_scope | local; cal una frontera explícita de desplegament per seleccionar objectius per àmbit |
--radius-profile-revision | profile_revision | unconfigured; cal una revisió explícita per seleccionar objectius per àmbit |
--radius-protocol-scope | protocol_scope | auth-accounting-udp, l’únic àmbit admès |
--radius-transaction-timeout | transaction_timeout | 30s; 1–300 segons des de la primera petició |
--radius-quiet-guard | quiet_guard | 30s; no pot ser més curt que el cicle de vida de la petició |
--radius-cleanup-interval | cleanup_interval | 1s; la caducitat també es comprova síncronament |
--radius-max-candidates | max_candidates | 65536; 1–1048576 instàncies de petició |
--radius-max-per-key | max_per_key | 4; 1–16 candidats per tupla |
--radius-max-suppression-keys | max_suppression_keys | 65536; 1–1048576 claus de protecció |
--radius-candidate-bytes | candidate_bytes | 67108864; 1–1024 MiB, proporcionats en bytes |
--radius-total-bytes | total_bytes | 100663296; 2–2048 MiB, superior al pressupost de candidats |
Els intervals invàlids i les combinacions incompatibles de perfil/objectiu fan fallar la configuració; els límits no s’ajusten silenciosament. Les retransmissions no allarguen el cicle de vida de la petició. Les pèrdues de capacitat conserven proteccions de silenci; si l’estat de protecció necessari no hi cap, l’herència s’atura globalment fins que transcorri tot un període de silenci. La coincidència directa i les sortides seleccionades independentment continuen disponibles.
radius:
ports: [1645, 1646]
protocol_scope: auth-accounting-udp
username: alice@example.test
mac_profile: calling-station-id-uppercase-hyphen-v1
mac: 02-00-00-00-00-01
line_profile: nas-port-id
line_id: line-a
operator_scope: operator-a/nas-a
profile_revision: v1
transaction_timeout: 30s
quiet_guard: 30s
max_candidates: 65536
max_per_key: 4
candidate_bytes: 67108864
total_bytes: 100663296
NatParas, assignacions de línies i objectius X1
Els valors administratius NatParas s’han de resoldre abans de configurar X1. lippycat no consulta l’inventari d’abonats ni infereix relacions entre comptes i línies.
| Entrada administrativa | Criteri X1 | Exemple |
|---|---|---|
userName que és una NAI vàlida ja normalitzada en NFC | nai | alice@example.test |
Altres userName, inclosos bytes opacs | radiusAttribute amb AVP User-Name (tipus 1) | 0114616C696365406578616D706C652E74657374 |
lineID resolt a NAS-Port-Id | radiusAttribute amb AVP de tipus 87 | 57086C696E652D61 (line-a) |
lineID resolt a Agent-Circuit-Id | radiusAttribute amb VSA de fabricant 3561/tipus 1 | 1A1100000DE9010B636972637569742D61 (circuit-a) |
| MAC de l’abonat segons la convenció de captura seleccionada | macAddress | X1 02:00:00:00:00:01; capturat 02-00-00-00-00-01 |
nas-port-id i agent-circuit-id seleccionen atributs concrets alternatius; no són un OR automàtic. --radius-line-id line-a amb nas-port-id crea el predicat complet de tipus 87 dins de l’àmbit/revisió proporcionat explícitament. L’inventari ascendent ha de proporcionar un valor concret i la seva frontera d’unicitat. El mateix line-a pot existir en dos operadors, de manera que no es pot tractar com a globalment únic. L’activació en producció requereix registres de l’operador per al NAS emissor, bytes exactes del valor, convenció MAC i àmbit, verificats amb una captura no sensible d’una línia coneguda. Les dades de prova operator-a/operator-b del repositori reutilitzen intencionadament valors de línia i no estableixen un acord d’assignació en producció.
Els AVP complets inclouen octets de tipus i longitud. Hex accepta majúscules o minúscules amb només espais XML inicials/finals i serialitza en majúscules. Els objectius User-Name i NAS-Port-Id contenen 1–253 bytes de valor. Els objectius Agent-Circuit-Id contenen 1–63 bytes i exactament un subatribut de fabricant; l’ID de fabricant és 00000DE9. Rebutgeu longituds incorrectes, espais interns, 0x, separadors, valors buits, AVP concatenats, subatributs VSA addicionals d’objectiu, altres fabricants/tipus, perfils de línia no resolts i absència d’àmbit. Els atributs vàlids repetits/agrupats capturats continuen permetent coincidències independents; la codificació d’objectius no reescriu els bytes dels paquets.
La interpretació de MAC de captura utilitza només l’atribut 31, Calling-Station-Id, amb la convenció explícita de majúscules i guions. Els valors capturats amb minúscules, dos punts, punts, sufixos o farciment no produeixen cap identitat MAC. Les adreces Ethernet i NAS no són mai alternatives de MAC d’abonat. La NAI X1 no coincideix amb SIP; SIP necessita sipUri. Tots els criteris de tasca es combinen amb AND dins d’una mateixa tasca i àmbit; els criteris mixtos RADIUS/SIP/IP, OR/negats i els criteris d’àmbit NAS no admesos es rebutgen en conjunt.
Vegeu el contracte d’identitat per a les regles binàries exactes i la guia de desplegament LI per al comportament d’activació, modificació, reinici i admissió de la generació actual.
Configuració de POI Tap i MDF
Compileu amb make tap-li o make build-li per obtenir opcions X1/X2. Els comandaments RADIUS ordinaris continuen disponibles en compilacions sense LI. Configureu un àmbit de captura dedicat, TLS mutu per a X1 i el lliurament MDF, un ProcessorID únic estable i estat LI durable abans de crear una tasca X2Only i una destinació explícitament habilitada per a X2. L’extrem MDF es configura mitjançant l’administració de destinacions X1; no és un objectiu de captura ordinari.
Les vinculacions exclusives de LI són compartides per tap i process:
| Opció | Clau YAML | Valor per defecte |
|---|---|---|
--li-radius-operator-scope | li.radius.operator_scope | Buit; cal un àmbit explícit per a tasques RADIUS |
--li-radius-profile-revision | li.radius.profile_revision | Buit; cal una revisió explícita |
--li-radius-origin-node | li.radius.origin_node | Buit; restricció opcional d’origen |
--li-radius-source | li.radius.source | Buit; restricció opcional d’interfície/font |
--li-radius-mac-profile | li.radius.mac_profile | Buit; cal un perfil admès explícit per als objectius MAC |
--li-radius-transaction-timeout | li.radius.transaction_timeout | 30s; 1s–5m, ha de coincidir amb el cicle de vida de captura |
--li-radius-correlation-state-file | li.radius.correlation_state_file | Buit; utilitza el camí de l’assignador fixat a l’estat LI xifrat |
Aquestes claus utilitzen variables d’entorn LIPPYCAT_LI_RADIUS_*, com ara LIPPYCAT_LI_RADIUS_OPERATOR_SCOPE. Els paràmetres de captura radius.operator_scope i radius.profile_revision han de coincidir amb la vinculació explícita del desplegament LI. Configureu el perfil MAC LI per als objectius MAC X1; el perfil ordinari no activa LI implícitament. El directori pare de l’estat durable ha d’existir prèviament. Provisioneu claus independents de filtres i estat administratiu i després inicialitzeu o migreu totes dues instantànies xifrades abans d’iniciar el node; vegeu la configuració d’emmagatzematge LI. La inicialització administrativa fixa el seu camí més .radius-correlation; la migració conserva el camí original de l’assignador. Un camí personalitzat d’assignador en execució ha de coincidir amb aquesta fixació. Moure la instantània administrativa no restableix ni mou l’assignador separat sense xifrar. --li-radius-transaction-timeout ha de ser igual a --radius-transaction-timeout a tap radius; els desplegaments de processador han de configurar el mateix cicle de vida que el desplegament de captura Hunter. Una diferència en Tap local rebutja l’inici.
sudo lc tap radius -i mirror0 --id poi-a \
--tls-cert server.crt --tls-key server.key --tls-ca capture-ca.crt \
--radius-operator-scope operator-a/nas-a --radius-profile-revision v1 \
--li-enabled --filter-file /var/lib/lippycat/poi-a-filters.enc \
--filter-store-key-id filters-1 --filter-store-key-file /etc/lippycat/filters.key \
--li-state-file /var/lib/lippycat/poi-a-li.enc \
--li-state-key-id state-1 --li-state-key-file /etc/lippycat/li-state.key \
--li-radius-operator-scope operator-a/nas-a --li-radius-profile-revision v1 \
--li-radius-origin-node poi-a-local --li-radius-source mirror0 \
--li-radius-mac-profile calling-station-id-uppercase-hyphen-v1 \
--li-x1-listen :8443 \
--li-x1-tls-cert x1.crt --li-x1-tls-key x1.key --li-x1-tls-ca admf-ca.crt \
--li-delivery-tls-cert delivery.crt --li-delivery-tls-key delivery.key \
--li-delivery-tls-ca mdf-ca.crt
L’origen de captura del Tap local és l’ID de processador més -local, de manera que aquest exemple vincula l’origen poi-a-local. La identitat X2 NFID/IPID continua sent poi-a.
Això inicia el POI configurat; configureu l’objectiu per àmbit i la destinació X2 mitjançant X1 abans que es pugui fer el lliurament. Les opcions existents --log-dir, PCAP i interfície virtual es poden activar independentment. Les peticions RADIUS X3 i combinades X2/X3 es rebutgen. El mapa de correlació continua limitat a 65.536 entrades i 16 MiB; una fallada d’assignació rebutja X2 en lloc de generar ID incoherents.
Les dades útils X2 en brut utilitzen el format 11 i exactament el missatge RADIUS declarat, sense Ethernet/IP/UDP ni farciment final. Payload Direction és Unknown. El Correlation ID de vuit bytes no zero representa un intercanvi observat, no una sessió d’abonat ni l’Identifier RADIUS. Les retransmissions i les respostes associades de manera única el reutilitzen dins del cicle de vida conservat de la petició; les coincidències directes òrfenes reben ID per observació. Es pot lliurar cada datagrama coincident capturat, inclosos duplicats d’emmirallament. No es garanteix un lliurament durable exactament una vegada.
L’acord amb el MDF receptor ha d’incloure el format 11, la direcció Unknown, el cicle de vida de l’intercanvi, la correlació de vuit bytes, els duplicats i el tractament d’orfes. Les proves sintètiques de receptor són proves locals; la interoperabilitat externa i l’acceptació de l’operador continuen pendents. Utilitzeu ProcessorID separats per a codificadors independents, conserveu l’emmagatzematge de correlació en reiniciar i canvieu la identitat si es restableix l’emmagatzematge. Les fallades d’emmagatzematge/codificació suprimeixen X2 mentre les sortides ordinàries continuen. Vegeu lliurament X2 RADIUS en brut per a la propietat de l’estat i el contracte d’observació per a l’associació.
Comptadors operatius
Els missatges INFO estructurats exposen instantànies limitades de comptadors. RADIUS capture counters pertany al runtime de captura per època; s’emet amb el primer trànsit, aproximadament cada minut mentre continua el trànsit i en aturar-se o en una frontera d’època. La revalidació posterior de bytes no incrementa els comptadors d’origen.
| Camps | Responsable i unitat |
|---|---|
valid, malformed, fragmented, unsupported | Entrada: observacions intentades, un resultat de validació per intent |
requests, matched_requests | Correlacionador/comparador de captura: observacions de peticions, incloses les retransmissions; les coincidències compten coincidències directes completes ordinàries/de tasca |
correlated_responses, unmatched_responses, ambiguous_responses | Correlacionador: observacions de respostes classificades com a úniques, absents o ambigües |
expired_responses, incompatible_responses, capacity_suppressed_responses | Correlacionador: observacions de respostes excloses de l’herència única pel motiu indicat |
stale_references | Correlacionador: referències heretades de propietaris rebutjades perquè ja no són vigents |
state_exhaustion | Correlacionador: esdeveniments de pèrdua d’estat, no recomptes de paquets |
RADIUS X2 counters pertany al processador autoritatiu durant el seu cicle de vida. stale_generations compta fallades de permisos temporals de generació de callbacks; allocation_errors i encoding_errors compten intents fallits d’assignació/codificació. encoded compta PDU codificades; queue_accepted i queue_errors compten resultats d’enviament a la cua X2; skipped compta productes no enviats. L’acceptació en cua no prova el lliurament TLS. Les estadístiques compartides de lliurament LI comptabilitzen el lliurament a destinacions i els intents de reintent i fallada entre protocols; no les interpreteu com a totals de paquets només RADIUS ni les sumeu amb observacions de captura. El gestor LI informa separadament de radius_stale_references a les seves estadístiques d’aturada, comptant referències de propietaris de tasques rebutjades en l’admissió. Vegeu supervisió del lliurament LI per a les estadístiques de lliurament existents.
Un comptador creixent de missatges malformats significa que les entrades intentades no han superat la validació estructural; les respostes ambigües/caducades/suprimides per capacitat no tenen propietari heretat. L’esgotament d’estat creixent indica associació incompleta malgrat la continuïtat de la coincidència directa. S’espera que el rebuig de referències obsoletes després de canvis de tasca elimini assignacions obsoletes. Els descarts de les cues de sortida mesuren la pèrdua de la destinació independentment de la salut de la descodificació i l’associació. Els comptadors no exposen ID de compte, línia o tasca com a etiquetes.