Table des matières

RADIUS

Comme on a de la collecte xDSL/4G/FTTH, on a des LNS pour collecter tout ça, et donc du RADIUS pour le AAA des lignes.

Historiquement on avait une seule porte à Rennes, et on ne s’est jamais trop embêtés à redonder le RADIUS parce que globalement sauf si ça tombe des heures ça empêche pas les lignes de tourner.

Par contre, depuis récemment, on a de la collecte à Paris pour les FTTH ; on a donc commencé un chantier d’anycast des RADIUS entre Rennes et Paris.

Réplication

On aurait pu se contenter de synchroniser à la main le fichier users entre les deux machines, mais bon, c'est pas très marrant. Du coup, on a fait vachement plus drôle : du LDAP. (oh wait)

En gros, les deux machines RADIUS font aussi office de cluster LDAP et se répliquent entre elles et ensuite le RADIUS vient taper sur le LDAP.

RADIUS en tant que tel

Hormis le LDAP, il y a quelques subtilités :

  1. le retrait du module ntlm_auth car ça provoquait des erreurs depuis un routeur ZyXEL VMG3625-T50B

    Auth: (178) Login incorrect (mschap: FAILED: No NT-Password. Cannot perform : [jeanmichel@grifon.ift/<via Auth-Type = mschap>] (from client lns03 port 0 cli 178.20.54.1)

  2. lorsque nous utilisons le ldap, il n'est pas possible de renseigner les outbound user utilisé par ielo. En effet, ces utilisateurs ont un mot de passe vide et freeradius n'aime pas les mots de passe vide lorsqu'ils sont dans le ldap. Ces utilisateurs sont donc directement renseignés dans le fichier users à l'ancienne.

Configuration avec le ldap

Pour que le radius renvoie les bons champs en fonction par rapport à ceux présents dans le schema ldap, si vous en utilisez un nouveau, il faut penser à les rajouter dans la conf :

		reply:Tunnel-Type		:= 'radiusTunnelType'
		reply:Tunnel-Medium-Type	:= 'radiusTunnelMediumType'
		reply:Tunnel-Private-Group-ID	:= 'radiusTunnelPrivategroupId'
		reply:Framed-IP-Address		:= 'radiusFramedIPAddress'
		reply:Framed-IP-Netmask		:= 'radiusFramedIPNetmask'
		reply:Framed-IPv6-Address	:= 'radiusFramedIPv6Address'
		reply:Framed-Protocol		:= 'radiusFramedProtocol'
		reply:Framed-Routing		:= 'radiusFramedRouting'
		reply:Delegated-IPv6-Prefix	:= 'radiusDelegatedIPv6Prefix'
		reply:Tunnel-Server-Endpoint	:= 'radiusTunnelServerEndpoint'
		reply:Tunnel-Client-Endpoint	:= 'radiusTunnelClientEndpoint'
		reply:Tunnel-Preference		:= 'radiusTunnelPreference'
		reply:Tunnel-Assignment-ID	:= 'radiusTunnelAssignmentId'
		reply:Framed-MTU		:= 'radiusFramedMTU'
		reply:Class			:= 'radiusClass'
		reply:Tunnel-Password		:= 'radiusTunnelPassword'
		reply:ADSL-Agent-Circuit-Id	:= 'radiusADSLAgentCircuitId'
		reply:Alc-Default-Router	:= 'radiusAlcDefaultRouter'
		reply:Alc-Primary-Dns		:= 'radiusAlcPrimaryDns'
		reply:Alc-Secondary-Dns		:= 'radiusAlcSecondaryDns'
		reply:Alc-Ipv6-Primary-Dns	:= 'radiusAlcIpv6PrimaryDns'
		reply:Alc-Ipv6-Secondary-Dns	:= 'radiusAlcIpv6SecondaryDns'
		reply:Alc-Ipv6-Address		:= 'radiusAlcIpv6Address'
		reply:Service-Type		:= 'radiusServiceType'

En revanche, si un champ n'existe pas dans le schéma ldap, vous pouvez utiliser un attribut radiusAttribute qui porte l'attribut radius en direct en mode clé-valeur : Mon-Attribut-Radius: valeurmonattribut.