CNaaS NAC (RADIUS) felsökning


Introduktion


Varje kund har två stycken RADIUS-servrar, t.ex. kmh-nac1.cnaas.sunet.se och kmh-nac2.cnaas.sunet.se. Båda servrarna kan vara aktiva samtidigt och autentisera klienter, det finns alltså ingen form av HA-lösning utom switcharna och accesspunkterna i nätet väljer själv vilken server dom vill prata med för stunden.

Båda servrarna har en RADIUS-server som för nyare kunder kör direkt på systemet och för äldre kunder kör i en container. Båda servrarna har också en Postgres-databas som alltid kör i en container.

Felsökning


På varje server finns det ett script ("/root/radiustest.sh") som testar det mesta som rör inloggning av klienter. Exempel hos KMH:

: 07:50 root@kmh-nac1: ~ # ./radiustest.sh
[Fri Oct 27 07:50:15 UTC 2023] Container nac_nac_api_1: PASS: Container nac_nac_api_1 is running!
[Fri Oct 27 07:50:15 UTC 2023] Container nac_nac_postgres_1: PASS: Container nac_nac_postgres_1 is running!
[Fri Oct 27 07:50:15 UTC 2023] Container nac_front_nac_front_1: PASS: Container nac_front_nac_front_1 is running!
[Fri Oct 27 07:50:15 UTC 2023] Disk: PASS: Enough free space on "/dev/root (29% used)"
[Fri Oct 27 07:50:15 UTC 2023] Disk: PASS: Enough free space on "/dev/vda15 (6% used)"
[Fri Oct 27 07:50:15 UTC 2023] EAP: PASS: Eduroam with user testuser1@sunet.se works!
[Fri Oct 27 07:50:15 UTC 2023] EAP: PASS: AD/LDAP with user xxx works!
[Fri Oct 27 07:50:16 UTC 2023] RADIUS: PASS: Port-auth to RADIUS-server works!
[Fri Oct 27 07:50:17 UTC 2023] Ping: PASS: Could ping Eduroam R1 (192.36.171.226)!
[Fri Oct 27 07:50:18 UTC 2023] Ping: PASS: Could ping Eduroam R2 (192.36.171.227)!
[Fri Oct 27 07:50:19 UTC 2023] Ping: PASS: Could ping KMH NAC2 (10.103.1.13)!
: 07:50 root@kmh-nac1: ~ #


Varje server har en Postgres-databas med information om klienter. Det att kolla i databasen om några klienter lyckas autentisera. I databasen finns en tabell som heter radpostauth som innehåller information om när en klient senast försökte autentisera och om det gick bra eller ej. Databasen består av en Docker-container med Postgres och går att ansluta till:

: 07:53 root@kmh-nac1: ~ # docker exec -it nac_nac_postgres_1 psql -U cnaas nac
psql (11.16 (Debian 11.16-1.pgdg90+1))
Type "help" for help.

nac=#


För att se vilka klienter som senast loggat in:

nac=# select username,reply,authdate from radpostauth order by id desc limit 100;
                 username                  |     reply     |           authdate
-------------------------------------------+---------------+-------------------------------
 aaa@vassar.edu                       | Access-Accept | 2023-10-27 07:56:35.817391+00
 bbb@student.kmh.se             | Access-Reject | 2023-10-27 07:56:34.513482+00
50:a0:30:08:27:18                         | Access-Reject | 2023-10-27 07:56:27.071413+00
78:7b:8a:e1:b1:40                         | Access-Reject | 2023-10-27 07:56:26.94749+00
 ccc@kmh.se                     | Access-Accept | 2023-10-27 07:56:26.225286+00
ddd@kmh.se                     | Access-Accept | 2023-10-27 07:56:26.192282+00

Som man ser ovan syns användarnamnet eller MAC-adressen som försökt autentisera, resultatet och tidpunkten. Det är helt normalt att användare både lyckas (Access-Accept) och misslyckas (Access-Reject). Om en användare t.ex. försöker med fel lösenord får dom en reject. Det viktiga är att det kommer in nya användare och att någon får en accept.

Disable debug from radiator:

: 13:03 root@kmh-nac1: /var/log # radmin
radmin version 3.0.26, built on Jan  4 2023 at 03:23:09 - FreeRADIUS Server administration tool.
Copyright (C) 2008-2019 The FreeRADIUS server project and contributors.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
You may redistribute copies of FreeRADIUS under the terms of the
GNU General Public License v2.
radmin> debug level 0
radmin> exit


Active Directory


GIH, KMH och MDH kör Active Directory och vi ansluter till deras AD för att autentisera och auktorisera klienter. För att kunna prata med AD-servern måste våra NAC-servrar finnas med i samma domän och vara ansluten till AD-servern. Anslutningen överlever en omstart av servrarna och ska inte behöva göras igen men för att kolla så kopplingen till AD fungerar går det att använda "wbinfo". Om en ping lyckas och alla grupper går att lista fungerar AD-kopplingen:


: 08:02 root@kmh-nac1: ~ # wbinfo -p
Ping to winbindd succeeded
: 08:25 root@kmh-nac1: ~ # wbinfo -g
...


För att kunna göra detta använder vi kundens DNS-servrar och konfigurerar dom i resolv.conf. Om kunden av någon anledning byter namnservrar måste detta uppdateras.

: 08:02 root@kmh-nac1: ~ # cat /etc/resolv.conf
# This is /run/systemd/resolve/resolv.conf managed by man:systemd-resolved(8).
# Do not edit.
#
# This file might be symlinked as /etc/resolv.conf. If you're looking at
# /etc/resolv.conf and seeing this text, you have followed the symlink.
#
# This is a dynamic resolv.conf file for connecting local clients directly to
# all known uplink DNS servers. This file lists all configured search domains.
#
# Third party programs should typically not access this file directly, but only
# through the symlink at /etc/resolv.conf. To manage man:resolv.conf(5) in a
# different way, replace this symlink by a static file or a different symlink.
#
# See man:systemd-resolved.service(8) for details about the supported modes of
# operation for /etc/resolv.conf.

nameserver 10.10.1.62
nameserver 10.10.1.63
search cnaas.io
: 08:02 root@kmh-nac1: ~ #



  • No labels