Se durante l’integrazione del Duo Authentication Proxy con un servizio RADIUS ti imbatti nell’errore “A RADIUS message was received from an invalid RADIUS client IP”, questa guida ti accompagna da zero alla risoluzione, spiegando cause tecniche, verifiche pratiche e configurazioni d’esempio pronte da copiare.
Problema
Il Duo Authentication Proxy rifiuta richieste RADIUS provenienti da un indirizzo IP che non riconosce. Nel file di log compare un messaggio simile a:
WARN [radius_server] A RADIUS message was received from an invalid RADIUS client IP: 203.0.113.25
Questo accade quando l’IP sorgente del pacchetto UDP (porta 1812/1645) non è tra quelli autorizzati in authproxy.cfg
, oppure quando NAT, ACL o errori di sintassi impediscono al proxy di associare correttamente l’IP al relativo shared secret.
Soluzione sintetica
Passo | Azione | Scopo |
---|---|---|
Verificare l’IP del client | Assicurarsi che l’IP dell’apparato o applicazione che funge da client RADIUS sia incluso nei parametri radiusip1 /radiusip2 (o successivi) del file authproxy.cfg . | Autorizzare la sorgente delle richieste. |
Controllare la connettività di rete | Eseguire un ping o un traceroute dal client verso il server Duo Proxy. | Escludere problemi di routing o ACL/NAT. |
Aprire le porte firewall | Consentire il traffico UDP sulle porte 1812 (o 1645 se configurata) tra client e proxy in entrambe le direzioni. | Garantire il transito dei pacchetti RADIUS. |
Verificare lo shared secret | Il valore configurato sul client deve coincidere con quello in radiussecret<n> per lo stesso radiusip<n> in authproxy.cfg . | Autenticazione reciproca delle parti. |
Analizzare i log del proxy | Controllare i file nella cartella log dell’installazione; abilitare la modalità diagnostica (debug=true o log_level=debug ) se necessario. | Individuare dettagli su rifiuti o errori di parsing. |
Convalidare la sintassi di authproxy.cfg | Cercare spazi, tabulazioni o caratteri non supportati; ogni sezione deve essere chiusa correttamente. | Evitare che errori di formattazione rendano inservibile l’intero file. |
Aggiornare Duo Authentication Proxy | Installare l’ultima versione disponibile. | Correggere bug noti e ottenere patch di sicurezza. |
Testare con una configurazione “nota funzionante” | Temporaneamente indirizzare un altro client già operativo sullo stesso proxy, o clonare la configurazione del client problematico in un ambiente di prova. | Isolare se il problema è lato client o lato proxy. |
Che cosa succede tecnicamente
RADIUS usa UDP (porta 1812 per l’autenticazione, 1813 per l’accounting; 1645/1646 nei sistemi legacy). Il Duo Authentication Proxy verifica l’indirizzo IP sorgente del datagramma: se non corrisponde a nessuno dei radiusipn
dichiarati nella configurazione, scarta il pacchetto e logga l’errore di “invalid RADIUS client IP”. Con NAT, il proxy vede l’IP tradotto (public o IP del NAT device), non quello originario del client. Inoltre, ogni radiusipn
è associato a uno radiussecretn
: se l’IP è autorizzato ma il secret non combacia, otterrai errori di autenticazione, non di “invalid IP”.
Percorso guidato dettagliato
Verifica degli IP autorizzati
Apri authproxy.cfg
e individua la sezione del server RADIUS che stai usando, ad esempio [radiusserverauto]
, [radiusserverpap]
o [radiusserverchap]
. Aggiungi l’IP sorgente del client RADIUS utilizzando le coppie radiusipn
/ radiussecretn
. Esempio:
[radiusserverauto]
ikey=DIXXXXXXXXXXXXXXXXXX
skey=XXXXXXXXXXXXXXXXXXXX
api_host=api-xxxxx.duosecurity.com
; Autorizzazione client RADIUS
radiusip1=10.10.20.15
radiussecret1=SuperSegreto-ClientA
radiusip2=198.51.100.47
radiussecret2=SuperSegreto-ClientB
; Porta opzionale (default 1812)
port=1812
; Opzione consigliata in test
failmode=safe
Nota: se il client è dietro NAT, devi inserire l’IP dopo la traduzione (quello visto dal proxy). In ambienti con bilanciatori (LB/ADC) o firewall perimetrali, può essere l’IP del VIP o dell’interfaccia di egress del firewall.
Connettività di base e routing
- Ping dal client verso il proxy:
ping <IP_Proxy>
. - Traceroute o
tracert
per verificare la strada di rete e scovare hop bloccanti. - Netcat (se disponibile):
nc -u -vz <IP_Proxy> 1812
per provare un handshake UDP.
Se il percorso cambia tra ambienti (es. WAN/MPLS vs. Internet via NAT), assicurati che l’IP che arriva al proxy sia quello dichiarato in radiusipn
.
Firewall e ACL
Apri le porte necessarie in entrambe le direzioni (request e reply):
- UDP 1812 (autenticazione RADIUS)
- UDP 1645 (solo se stai usando la porta legacy)
- Opzionale: UDP 1813/1646 per l’accounting, se previsto
Esempi:
- Windows Defender Firewall: crea una regola in entrata/uscita per UDP 1812/1813 sul server che ospita il proxy.
- Linux UFW:
sudo ufw allow 1812/udp
,sudo ufw allow 1813/udp
. - iptables:
sudo iptables -A INPUT -p udp --dport 1812 -j ACCEPT
.
Shared secret coerente e sicuro
Ogni radiusipn
deve avere un radiussecretn
corrispondente e identico al valore configurato sul client RADIUS. Best practice:
- Usa un secret diverso per ogni client (segmentazione e tracciabilità).
- Lunghezza >= 22 caratteri, con maiuscole, minuscole, cifre e simboli.
- Evita caratteri che potrebbero essere interpretati in modo speciale dal client (es. backslash non escape-ato).
- Documenta la rotazione dei secret e conserva un inventario IP↔secret in un vault.
Attenzione: se l’IP è corretto ma il secret non coincide, il log non parlerà di “invalid IP” bensì di autenticazione fallita; dunque non confondere i due casi.
Log e modalità diagnostica
Percorsi tipici:
- Windows:
C:\Program Files\Duo Security Authentication Proxy\log\
- Linux:
/opt/duoauthproxy/log/
Abilita la diagnostica:
[main]
; una delle due opzioni, a seconda della versione
debug=true
; oppure
log_level=debug
Riavvia il servizio e riproduci il problema. Cerca voci come:
INFO [radius_server] Received Access-Request from 203.0.113.25:54321
WARN [radius_server] A RADIUS message was received from an invalid RADIUS client IP: 203.0.113.25
Questa sequenza indica che il pacchetto è arrivato, ma l’IP non coincide con nessuno dei radiusipn
configurati.
Convalida della sintassi di authproxy.cfg
- Ogni riga
chiave=valore
non deve contenere caratteri non stampabili o tabulazioni miste a spazi in posizioni ambigue. - Evita BOM/encoding non UTF‑8 (capita copiando da editor WYSIWYG).
- Commenti con
;
o#
a inizio riga; non inserire commenti alla fine di una riga di configurazione. - Controlla che le sezioni siano ben definite:
[radiusserverauto]
,[adclient]
,[radiusclient]
, ecc.
Aggiornamento del Proxy
Mantieni il Duo Authentication Proxy aggiornato per beneficiare di fix e miglioramenti nella gestione dei client RADIUS e del logging. Esegui sempre un backup di authproxy.cfg
e dei certificati (se presenti) prima dell’aggiornamento.
Test con una configurazione “nota funzionante”
Se sospetti problemi lato client, reindirizza temporaneamente verso il proxy un altro apparato che sta già funzionando su un proxy gemello (o clona il client problematico in laboratorio). Se il secondo client funziona, il proxy è probabilmente a posto e l’anomalia è lato client o rete.
Diagnostica pratica: comandi e strumenti
Verifica rapida con radtest
(Linux/Unix)
radtest utente_prova PasswordProva 10.10.20.50:1812 SuperSegreto-ClientA 1
Interpreta l’esito sul server: se vedi “invalid RADIUS client IP” il problema è l’IP sorgente; se vedi “Access-Reject” con dettagli di autenticazione, allora IP e secret sono coerenti ma la validazione fallisce più avanti.
Strumento GUI: NTRadPing (Windows)
Utile per inviare Access-Request mirati e osservare le risposte in maniera visiva. Imposta l’IP del proxy, la porta, lo shared secret e un utente di prova.
Catture di rete
- tcpdump:
sudo tcpdump -ni any udp port 1812 -vv
- Wireshark: applica il filtro
udp.port == 1812
e guarda il campo Source per confermare l’IP visto dal proxy.
NAT, VIP e topologie particolari
- Client dietro NAT: il proxy vede l’IP tradotto. Inserisci in
radiusipn
l’IP pubblico o quello dell’interfaccia di egress del firewall, non l’IP privato del client. - Load Balancer/ADC: se in SNAT, l’IP sorgente diventa quello del LB; usa quell’IP nei
radiusipn
. Se in modalità source preservation, verifica che gli ACL consentano la risposta diretta al client. - Cluster/HA: con più proxy, allinea la configurazione su tutti i nodi o centralizza tramite un sistema di gestione.
- VRF/VLAN separate: controlla la tabella di routing del server proxy; la risposta deve uscire dall’interfaccia corretta.
- IPv6: se attivo, verifica che il client non stia inviando da IPv6 quando hai autorizzato solo IPv4 (o viceversa).
Checklist operativa
- Hai inserito l’IP che il proxy vede (post-NAT) in
radiusipn
? - Lo shared secret del client coincide con
radiussecretn
corrispondente? - Le porte UDP 1812/1645 sono aperte in entrambe le direzioni tra client e proxy?
- Hai abilitato
debug
e consultato i log per confermare l’IP sorgente effettivo? - La sintassi di
authproxy.cfg
è pulita (niente caratteri strani, sezioni corrette)? - Hai riavviato il servizio dopo ogni modifica?
- La versione del Proxy è aggiornata?
Esempi di configurazione
Proxy con due client autorizzati
[main]
log_level=debug
[radiusserverauto]
ikey=DIXXXXXXXXXXXXXXXXXX skey=XXXXXXXXXXXXXXXXXXXX api_host=api-xxxxx.duosecurity.com port=1812 failmode=secure ; Firewall esterno con NAT: il proxy vedrà 203.0.113.10 radiusip1=203.0.113.10 radiussecret1=Secret-Client-FW ; Applicazione interna che parla direttamente al proxy radiusip2=10.10.20.15 radiussecret2=Secret-Client-App ; Backend di autenticazione (Active Directory) client=ad_client
[ad_client]
host=10.10.10.11 serviceaccountusername=svc_duo serviceaccountpassword=* search_dn=DC=example,DC=local
Proxy dietro Load Balancer con SNAT
[radiusserverpap]
ikey=DIXXXXXXXXXXXXXXXXXX
skey=XXXXXXXXXXXXXXXXXXXX
api_host=api-xxxxx.duosecurity.com
port=1812
; Il LB SNATta verso 198.51.100.20: usa questo IP
radiusip1=198.51.100.20
radiussecret1=Secret-From-LB
failmode=safe
client=radius_client
[radius_client]
host=10.10.30.12 secret=Secret-To-Upstream
Domande frequenti
Posso elencare più di due client?
Sì. Continua la numerazione (radiusip3
, radiussecret3
, ecc.). Ogni coppia IP/secret identifica un client autorizzato.
È possibile usare nomi DNS invece di IP?
Per i client autorizzati è consigliato l’IP fisso, perché il controllo avviene sull’IP sorgente del pacchetto. Un record DNS non risolve la variabilità introdotta da NAT o bilanciatori.
Ho cambiato authproxy.cfg
ma non cambia nulla. Perché?
Le modifiche richiedono il riavvio del servizio Duo Authentication Proxy. Usa i comandi di gestione indicati più sotto.
Qual è la differenza tra “invalid RADIUS client IP” e “Access-Reject”?
“Invalid IP” significa che l’IP sorgente non è in lista; “Access-Reject” indica che l’IP è autorizzato ma l’autenticazione (secret errato o credenziali) non è riuscita.
Gestione del servizio
- Windows:
net stop DuoAuthProxy
e poinet start DuoAuthProxy
; oppure tramite Servizi (services.msc). - Linux:
sudo /opt/duoauthproxy/bin/authproxyctl restart
- oppure
sudo systemctl restart duoauthproxy
(se presente unit systemd)
Strategie di prevenzione
- Segmentazione dei secret: un secret per client.
- Monitoraggio: alert su pattern di log “invalid RADIUS client IP”.
- Inventario: mappa IP↔sistemi↔secret con owner e scadenze.
- Hardening: limita perimetrali/ACL ai soli IP autorizzati, anche se il proxy rifiuta i non autorizzati.
- Change control: testare sempre le modifiche (routing/NAT) in staging prima della produzione.
Riepilogo operativo
- Metti in
authproxy.cfg
l’IP che il proxy vede (radiusipn
) e associa il suoradiussecretn
. - Verifica connettività (ping/traceroute) e apri UDP 1812/1645 bidirezionale.
- Allinea lo shared secret sul client.
- Abilita
debug
e analizza i log per confermare l’IP sorgente. - Convalida la sintassi del file e riavvia il servizio.
- In caso di dubbi, prova con
radtest
/NTRadPing o un client noto funzionante.
Suggerimenti supplementari
- NAT e indirizzi pubblici/privati – Se il client si trova dietro NAT, il proxy vedrà l’IP tradotto; inserire quest’ultimo in
radiusipn
o configurare una regola NAT statica. - Restart del servizio – Ogni modifica a
authproxy.cfg
richiede il riavvio del servizio Duo Authentication Proxy. - Strumenti di diagnostica – Utilizzare
radtest
(Linux) o NTRadPing (Windows) per inviare richieste di test ed esaminare le risposte RADIUS. - Segmentazione delle chiavi segrete – Impostare uno shared secret diverso per ciascun client per una maggiore tracciabilità e sicurezza.
Conclusioni
Il messaggio “A RADIUS message was received from an invalid RADIUS client IP” è quasi sempre una questione di allineamento tra ciò che arriva al proxy (IP sorgente reale, spesso dopo NAT) e ciò che è stato definito in authproxy.cfg
. Applicando sistematicamente i controlli elencati—autorizzazione IP, connettività, firewall, secret, log e sintassi—si elimina nella quasi totalità dei casi l’errore e si porta a termine con successo l’integrazione del Duo Authentication Proxy nel proprio ambiente RADIUS.
Metadati